diff --git a/tests/wpt/metadata-layout-2020/FileAPI/Blob-methods-from-detached-frame.html.ini b/tests/wpt/metadata-layout-2020/FileAPI/Blob-methods-from-detached-frame.html.ini new file mode 100644 index 00000000000..e9bfde19772 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/FileAPI/Blob-methods-from-detached-frame.html.ini @@ -0,0 +1,12 @@ +[Blob-methods-from-detached-frame.html] + [slice()] + expected: FAIL + + [text()] + expected: FAIL + + [arrayBuffer()] + expected: FAIL + + [stream()] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/FileAPI/BlobURL/cross-partition.tentative.https.html.ini b/tests/wpt/metadata-layout-2020/FileAPI/BlobURL/cross-partition.tentative.https.html.ini new file mode 100644 index 00000000000..195c812d450 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/FileAPI/BlobURL/cross-partition.tentative.https.html.ini @@ -0,0 +1,13 @@ +[cross-partition.tentative.https.html] + expected: TIMEOUT + [Blob URL shouldn't be revocable from a cross-partition iframe] + expected: FAIL + + [Blob URL shouldn't be revocable from a cross-partition dedicated worker] + expected: FAIL + + [Blob URL shouldn't be revocable from a cross-partition shared worker] + expected: TIMEOUT + + [Blob URL shouldn't be revocable from a service worker] + expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/FileAPI/url/url-charset.window.js.ini b/tests/wpt/metadata-layout-2020/FileAPI/url/url-charset.window.js.ini deleted file mode 100644 index 08ab7bd35cd..00000000000 --- a/tests/wpt/metadata-layout-2020/FileAPI/url/url-charset.window.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[url-charset.window.html] - expected: TIMEOUT - [Blob charset should override any auto-detected charset.] - expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata-layout-2020/FileAPI/url/url-with-fetch.any.js.ini new file mode 100644 index 00000000000..292dc852b9f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/FileAPI/url/url-with-fetch.any.js.ini @@ -0,0 +1,14 @@ +[url-with-fetch.any.html] + [Revoke blob URL after creating Request, will fetch] + expected: FAIL + + [Revoke blob URL after creating Request, then clone Request, will fetch] + expected: FAIL + + +[url-with-fetch.any.worker.html] + [Revoke blob URL after creating Request, will fetch] + expected: FAIL + + [Revoke blob URL after creating Request, then clone Request, will fetch] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/algorithm-discards-context.https.window.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/algorithm-discards-context.https.window.js.ini new file mode 100644 index 00000000000..4ccec835880 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/algorithm-discards-context.https.window.js.ini @@ -0,0 +1,40 @@ +[algorithm-discards-context.https.window.html] + expected: TIMEOUT + [Context is discarded in generateKey] + expected: TIMEOUT + + [Context is discarded in importKey] + expected: TIMEOUT + + [Context is discarded in encrypt] + expected: TIMEOUT + + [Context is discarded in decrypt] + expected: TIMEOUT + + [Context is discarded in digest] + expected: TIMEOUT + + [Context is discarded in sign] + expected: TIMEOUT + + [Context is discarded in verify] + expected: TIMEOUT + + [Context is discarded in deriveBits] + expected: TIMEOUT + + [Context is discarded in deriveKey] + expected: TIMEOUT + + [Context is discarded in deriveKey (2)] + expected: TIMEOUT + + [Context is discarded in wrapKey] + expected: TIMEOUT + + [Context is discarded in unwrapKey] + expected: TIMEOUT + + [Context is discarded in unwrapKey (2)] + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.js.ini new file mode 100644 index 00000000000..da98e91258d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.js.ini @@ -0,0 +1,8 @@ +[cfrg_curves_bits.https.any.html] + [setup - define tests] + expected: FAIL + + +[cfrg_curves_bits.https.any.worker.html] + [setup - define tests] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.https.any.js.ini new file mode 100644 index 00000000000..b1dd5e83f57 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.https.any.js.ini @@ -0,0 +1,8 @@ +[cfrg_curves_keys.https.any.worker.html] + [setup - define tests] + expected: FAIL + + +[cfrg_curves_keys.https.any.html] + [setup - define tests] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_Ed25519.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_Ed25519.https.any.js.ini new file mode 100644 index 00000000000..847a6c7b0c7 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_Ed25519.https.any.js.ini @@ -0,0 +1,5 @@ +[failures_Ed25519.https.any.html] + expected: ERROR + +[failures_Ed25519.https.any.worker.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_Ed448.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_Ed448.https.any.js.ini new file mode 100644 index 00000000000..35b3b54b63b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_Ed448.https.any.js.ini @@ -0,0 +1,5 @@ +[failures_Ed448.https.any.html] + expected: ERROR + +[failures_Ed448.https.any.worker.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_X25519.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_X25519.https.any.js.ini new file mode 100644 index 00000000000..1aab3be20f5 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_X25519.https.any.js.ini @@ -0,0 +1,5 @@ +[failures_X25519.https.any.worker.html] + expected: ERROR + +[failures_X25519.https.any.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_X448.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_X448.https.any.js.ini new file mode 100644 index 00000000000..d66c97842c1 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/failures_X448.https.any.js.ini @@ -0,0 +1,5 @@ +[failures_X448.https.any.html] + expected: ERROR + +[failures_X448.https.any.worker.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_Ed25519.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_Ed25519.https.any.js.ini new file mode 100644 index 00000000000..15e6068f18c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_Ed25519.https.any.js.ini @@ -0,0 +1,5 @@ +[successes_Ed25519.https.any.worker.html] + expected: ERROR + +[successes_Ed25519.https.any.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_Ed448.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_Ed448.https.any.js.ini new file mode 100644 index 00000000000..fc3c91bded3 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_Ed448.https.any.js.ini @@ -0,0 +1,5 @@ +[successes_Ed448.https.any.worker.html] + expected: ERROR + +[successes_Ed448.https.any.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_X25519.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_X25519.https.any.js.ini new file mode 100644 index 00000000000..4e49c46cff7 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_X25519.https.any.js.ini @@ -0,0 +1,5 @@ +[successes_X25519.https.any.html] + expected: ERROR + +[successes_X25519.https.any.worker.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_X448.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_X448.https.any.js.ini new file mode 100644 index 00000000000..b3f5f031a6e --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/generateKey/successes_X448.https.any.js.ini @@ -0,0 +1,5 @@ +[successes_X448.https.any.html] + expected: ERROR + +[successes_X448.https.any.worker.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/idlharness.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/idlharness.https.any.js.ini new file mode 100644 index 00000000000..5c493662c66 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/idlharness.https.any.js.ini @@ -0,0 +1,350 @@ +[idlharness.https.any.worker.html] + [Crypto interface: attribute subtle] + expected: FAIL + + [Crypto interface: operation randomUUID()] + expected: FAIL + + [Crypto interface: crypto must inherit property "subtle" with the proper type] + expected: FAIL + + [Crypto interface: crypto must inherit property "randomUUID()" with the proper type] + expected: FAIL + + [CryptoKey interface: existence and properties of interface object] + expected: FAIL + + [CryptoKey interface object length] + expected: FAIL + + [CryptoKey interface object name] + expected: FAIL + + [CryptoKey interface: existence and properties of interface prototype object] + expected: FAIL + + [CryptoKey interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [CryptoKey interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [CryptoKey interface: attribute type] + expected: FAIL + + [CryptoKey interface: attribute extractable] + expected: FAIL + + [CryptoKey interface: attribute algorithm] + expected: FAIL + + [CryptoKey interface: attribute usages] + expected: FAIL + + [SubtleCrypto interface: existence and properties of interface object] + expected: FAIL + + [SubtleCrypto interface object length] + expected: FAIL + + [SubtleCrypto interface object name] + expected: FAIL + + [SubtleCrypto interface: existence and properties of interface prototype object] + expected: FAIL + + [SubtleCrypto interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [SubtleCrypto interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [SubtleCrypto interface: operation encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)] + expected: FAIL + + [SubtleCrypto interface: operation decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)] + expected: FAIL + + [SubtleCrypto interface: operation sign(AlgorithmIdentifier, CryptoKey, BufferSource)] + expected: FAIL + + [SubtleCrypto interface: operation verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)] + expected: FAIL + + [SubtleCrypto interface: operation digest(AlgorithmIdentifier, BufferSource)] + expected: FAIL + + [SubtleCrypto interface: operation generateKey(AlgorithmIdentifier, boolean, sequence)] + expected: FAIL + + [SubtleCrypto interface: operation deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, sequence)] + expected: FAIL + + [SubtleCrypto interface: operation deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)] + expected: FAIL + + [SubtleCrypto interface: operation importKey(KeyFormat, (BufferSource or JsonWebKey), AlgorithmIdentifier, boolean, sequence)] + expected: FAIL + + [SubtleCrypto interface: operation exportKey(KeyFormat, CryptoKey)] + expected: FAIL + + [SubtleCrypto interface: operation wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)] + expected: FAIL + + [SubtleCrypto interface: operation unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, sequence)] + expected: FAIL + + [SubtleCrypto must be primary interface of crypto.subtle] + expected: FAIL + + [Stringification of crypto.subtle] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling encrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling decrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "sign(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling sign(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "digest(AlgorithmIdentifier, BufferSource)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling digest(AlgorithmIdentifier, BufferSource) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "generateKey(AlgorithmIdentifier, boolean, sequence)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling generateKey(AlgorithmIdentifier, boolean, sequence) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, sequence)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, sequence) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "importKey(KeyFormat, (BufferSource or JsonWebKey), AlgorithmIdentifier, boolean, sequence)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling importKey(KeyFormat, (BufferSource or JsonWebKey), AlgorithmIdentifier, boolean, sequence) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "exportKey(KeyFormat, CryptoKey)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling exportKey(KeyFormat, CryptoKey) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, sequence)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, sequence) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + +[idlharness.https.any.html] + [Crypto interface: attribute subtle] + expected: FAIL + + [Crypto interface: operation randomUUID()] + expected: FAIL + + [Crypto interface: crypto must inherit property "subtle" with the proper type] + expected: FAIL + + [Crypto interface: crypto must inherit property "randomUUID()" with the proper type] + expected: FAIL + + [CryptoKey interface: existence and properties of interface object] + expected: FAIL + + [CryptoKey interface object length] + expected: FAIL + + [CryptoKey interface object name] + expected: FAIL + + [CryptoKey interface: existence and properties of interface prototype object] + expected: FAIL + + [CryptoKey interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [CryptoKey interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [CryptoKey interface: attribute type] + expected: FAIL + + [CryptoKey interface: attribute extractable] + expected: FAIL + + [CryptoKey interface: attribute algorithm] + expected: FAIL + + [CryptoKey interface: attribute usages] + expected: FAIL + + [SubtleCrypto interface: existence and properties of interface object] + expected: FAIL + + [SubtleCrypto interface object length] + expected: FAIL + + [SubtleCrypto interface object name] + expected: FAIL + + [SubtleCrypto interface: existence and properties of interface prototype object] + expected: FAIL + + [SubtleCrypto interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [SubtleCrypto interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [SubtleCrypto interface: operation encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)] + expected: FAIL + + [SubtleCrypto interface: operation decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)] + expected: FAIL + + [SubtleCrypto interface: operation sign(AlgorithmIdentifier, CryptoKey, BufferSource)] + expected: FAIL + + [SubtleCrypto interface: operation verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)] + expected: FAIL + + [SubtleCrypto interface: operation digest(AlgorithmIdentifier, BufferSource)] + expected: FAIL + + [SubtleCrypto interface: operation generateKey(AlgorithmIdentifier, boolean, sequence)] + expected: FAIL + + [SubtleCrypto interface: operation deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, sequence)] + expected: FAIL + + [SubtleCrypto interface: operation deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)] + expected: FAIL + + [SubtleCrypto interface: operation importKey(KeyFormat, (BufferSource or JsonWebKey), AlgorithmIdentifier, boolean, sequence)] + expected: FAIL + + [SubtleCrypto interface: operation exportKey(KeyFormat, CryptoKey)] + expected: FAIL + + [SubtleCrypto interface: operation wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)] + expected: FAIL + + [SubtleCrypto interface: operation unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, sequence)] + expected: FAIL + + [SubtleCrypto must be primary interface of crypto.subtle] + expected: FAIL + + [Stringification of crypto.subtle] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling encrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling decrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "sign(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling sign(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "digest(AlgorithmIdentifier, BufferSource)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling digest(AlgorithmIdentifier, BufferSource) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "generateKey(AlgorithmIdentifier, boolean, sequence)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling generateKey(AlgorithmIdentifier, boolean, sequence) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, sequence)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, sequence) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "importKey(KeyFormat, (BufferSource or JsonWebKey), AlgorithmIdentifier, boolean, sequence)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling importKey(KeyFormat, (BufferSource or JsonWebKey), AlgorithmIdentifier, boolean, sequence) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "exportKey(KeyFormat, CryptoKey)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling exportKey(KeyFormat, CryptoKey) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL + + [SubtleCrypto interface: crypto.subtle must inherit property "unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, sequence)" with the proper type] + expected: FAIL + + [SubtleCrypto interface: calling unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, sequence) on crypto.subtle with too few arguments must throw TypeError] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/import_export/okp_importKey.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/import_export/okp_importKey.https.any.js.ini new file mode 100644 index 00000000000..da258a1da13 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/import_export/okp_importKey.https.any.js.ini @@ -0,0 +1,290 @@ +[okp_importKey.https.any.worker.html] + [Good parameters: Ed25519 bits (spki, buffer(44), {name: Ed25519}, true, [\])] + expected: FAIL + + [Good parameters: Ed25519 bits (jwk, object(kty, crv, x), {name: Ed25519}, true, [\])] + expected: FAIL + + [Good parameters: Ed25519 bits (pkcs8, buffer(48), {name: Ed25519}, true, [sign\])] + expected: FAIL + + [Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), {name: Ed25519}, true, [sign\])] + expected: FAIL + + [Good parameters: Ed25519 bits (spki, buffer(44), {name: Ed25519}, false, [\])] + expected: FAIL + + [Good parameters: Ed25519 bits (jwk, object(kty, crv, x), {name: Ed25519}, false, [\])] + expected: FAIL + + [Good parameters: Ed25519 bits (pkcs8, buffer(48), {name: Ed25519}, false, [sign\])] + expected: FAIL + + [Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), {name: Ed25519}, false, [sign\])] + expected: FAIL + + [Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [\])] + expected: FAIL + + [Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [\])] + expected: FAIL + + [Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, true, [sign\])] + expected: FAIL + + [Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign\])] + expected: FAIL + + [Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [\])] + expected: FAIL + + [Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [\])] + expected: FAIL + + [Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign\])] + expected: FAIL + + [Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign\])] + expected: FAIL + + [Good parameters: X25519 bits (spki, buffer(44), {name: X25519}, true, [\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(kty, crv, x), {name: X25519}, true, [\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, true, [deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, true, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, true, [deriveBits\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits\])] + expected: FAIL + + [Good parameters: X25519 bits (spki, buffer(44), {name: X25519}, false, [\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(kty, crv, x), {name: X25519}, false, [\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, false, [deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, false, [deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, false, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, false, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, false, [deriveBits\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, false, [deriveBits\])] + expected: FAIL + + [Good parameters: X448 bits (spki, buffer(68), {name: X448}, true, [\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, true, [\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits\])] + expected: FAIL + + [Good parameters: X448 bits (spki, buffer(68), {name: X448}, false, [\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, false, [\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveBits\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveBits\])] + expected: FAIL + + +[okp_importKey.https.any.html] + [Good parameters: Ed25519 bits (spki, buffer(44), {name: Ed25519}, true, [\])] + expected: FAIL + + [Good parameters: Ed25519 bits (jwk, object(kty, crv, x), {name: Ed25519}, true, [\])] + expected: FAIL + + [Good parameters: Ed25519 bits (pkcs8, buffer(48), {name: Ed25519}, true, [sign\])] + expected: FAIL + + [Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), {name: Ed25519}, true, [sign\])] + expected: FAIL + + [Good parameters: Ed25519 bits (spki, buffer(44), {name: Ed25519}, false, [\])] + expected: FAIL + + [Good parameters: Ed25519 bits (jwk, object(kty, crv, x), {name: Ed25519}, false, [\])] + expected: FAIL + + [Good parameters: Ed25519 bits (pkcs8, buffer(48), {name: Ed25519}, false, [sign\])] + expected: FAIL + + [Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), {name: Ed25519}, false, [sign\])] + expected: FAIL + + [Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [\])] + expected: FAIL + + [Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [\])] + expected: FAIL + + [Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, true, [sign\])] + expected: FAIL + + [Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign\])] + expected: FAIL + + [Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [\])] + expected: FAIL + + [Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [\])] + expected: FAIL + + [Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign\])] + expected: FAIL + + [Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign\])] + expected: FAIL + + [Good parameters: X25519 bits (spki, buffer(44), {name: X25519}, true, [\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(kty, crv, x), {name: X25519}, true, [\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, true, [deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, true, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, true, [deriveBits\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits\])] + expected: FAIL + + [Good parameters: X25519 bits (spki, buffer(44), {name: X25519}, false, [\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(kty, crv, x), {name: X25519}, false, [\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, false, [deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, false, [deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, false, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, false, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, false, [deriveBits\])] + expected: FAIL + + [Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, false, [deriveBits\])] + expected: FAIL + + [Good parameters: X448 bits (spki, buffer(68), {name: X448}, true, [\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, true, [\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits\])] + expected: FAIL + + [Good parameters: X448 bits (spki, buffer(68), {name: X448}, false, [\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, false, [\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveBits, deriveKey\])] + expected: FAIL + + [Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveBits\])] + expected: FAIL + + [Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveBits\])] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/WebCryptoAPI/sign_verify/eddsa.https.any.js.ini b/tests/wpt/metadata-layout-2020/WebCryptoAPI/sign_verify/eddsa.https.any.js.ini new file mode 100644 index 00000000000..878a7c3f74a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebCryptoAPI/sign_verify/eddsa.https.any.js.ini @@ -0,0 +1,5 @@ +[eddsa.https.any.html] + expected: ERROR + +[eddsa.https.any.worker.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/cookies/prefix/__host.document-cookie.html.ini b/tests/wpt/metadata-layout-2020/cookies/prefix/__host.document-cookie.html.ini new file mode 100644 index 00000000000..6f8ab2d4cb0 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/cookies/prefix/__host.document-cookie.html.ini @@ -0,0 +1,9 @@ +[__host.document-cookie.html] + [__HoSt: Non-secure origin: 'Path=/;'] + expected: FAIL + + [__HoSt: Non-secure origin: 'Path=/;domain=web-platform.test'] + expected: FAIL + + [__HoSt: Non-secure origin: 'Path=/;MaxAge=10'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/cookies/prefix/__host.document-cookie.https.html.ini b/tests/wpt/metadata-layout-2020/cookies/prefix/__host.document-cookie.https.html.ini new file mode 100644 index 00000000000..cf3ab5fa14e --- /dev/null +++ b/tests/wpt/metadata-layout-2020/cookies/prefix/__host.document-cookie.https.html.ini @@ -0,0 +1,15 @@ +[__host.document-cookie.https.html] + [__HoSt: Secure origin: Does not set 'Path=/;'] + expected: FAIL + + [__HoSt: Secure origin: Does not set 'Secure; Path=/; Domain=web-platform.test; '] + expected: FAIL + + [__HoSt: Secure origin: Does not set 'Path=/;MaxAge=10'] + expected: FAIL + + [__HoSt: Secure origin: Does not set 'Secure; Path=/; Domain=web-platform.test; MaxAge=10'] + expected: FAIL + + [__HoSt: Secure origin: Does not set 'Secure; Path=/cookies/resources/list.py'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/cookies/prefix/__host.header.html.ini b/tests/wpt/metadata-layout-2020/cookies/prefix/__host.header.html.ini new file mode 100644 index 00000000000..2444b65c243 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/cookies/prefix/__host.header.html.ini @@ -0,0 +1,12 @@ +[__host.header.html] + [__HoSt: Non-secure origin: Does not set 'Path=/;'] + expected: FAIL + + [__HoSt: Non-secure origin: Does not set 'Path=/;domain=web-platform.test'] + expected: FAIL + + [__HoSt: Non-secure origin: Does not set 'Path=/;MaxAge=10'] + expected: FAIL + + [__HoSt: Non-secure origin: Does not set 'Path=/;HttpOnly'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/cookies/prefix/__host.header.https.html.ini b/tests/wpt/metadata-layout-2020/cookies/prefix/__host.header.https.html.ini new file mode 100644 index 00000000000..33d9e1ada62 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/cookies/prefix/__host.header.https.html.ini @@ -0,0 +1,21 @@ +[__host.header.https.html] + [__HoSt: Secure origin: Does not set 'Path=/;'] + expected: FAIL + + [__HoSt: Secure origin: Does not set 'Secure; Path=/; Domain=web-platform.test; '] + expected: FAIL + + [__HoSt: Secure origin: Does not set 'Path=/;MaxAge=10'] + expected: FAIL + + [__HoSt: Secure origin: Does not set 'Secure; Path=/; Domain=web-platform.test; MaxAge=10'] + expected: FAIL + + [__HoSt: Secure origin: Does not set 'Path=/;HttpOnly'] + expected: FAIL + + [__HoSt: Secure origin: Does not set 'Secure; Path=/; Domain=web-platform.test; HttpOnly'] + expected: FAIL + + [__HoSt: Secure origin: Does not set 'Secure; Path=/cookies/resources/list.py'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.document-cookie.html.ini b/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.document-cookie.html.ini new file mode 100644 index 00000000000..265fc3f0301 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.document-cookie.html.ini @@ -0,0 +1,9 @@ +[__secure.document-cookie.html] + [__SeCuRe: Non-secure origin: Should not set 'Path=/;'] + expected: FAIL + + [__SeCuRe: Non-secure origin: Should not set 'Path=/;MaxAge=10'] + expected: FAIL + + [__SeCuRe: Non-secure origin: Should not set 'Path=/;domain=web-platform.test'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.document-cookie.https.html.ini b/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.document-cookie.https.html.ini new file mode 100644 index 00000000000..5e070e58ba2 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.document-cookie.https.html.ini @@ -0,0 +1,9 @@ +[__secure.document-cookie.https.html] + [__SeCuRe: Secure origin: Should not set 'Path=/;'] + expected: FAIL + + [__SeCuRe: Secure origin: Should not set 'Path=/;MaxAge=10'] + expected: FAIL + + [__SeCuRe: Secure origin: Should not set 'Path=/;domain=web-platform.test'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.header.html.ini b/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.header.html.ini new file mode 100644 index 00000000000..142f4756a83 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.header.html.ini @@ -0,0 +1,12 @@ +[__secure.header.html] + [__SeCuRe: Non-secure origin: Should not set 'Path=/;'] + expected: FAIL + + [__SeCuRe: Non-secure origin: Should not set 'Path=/;domain=web-platform.test'] + expected: FAIL + + [__SeCuRe: Non-secure origin: Should not set 'Path=/;MaxAge=10'] + expected: FAIL + + [__SeCuRe: Non-secure origin: Should not set 'Path=/;HttpOnly'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.header.https.html.ini b/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.header.https.html.ini new file mode 100644 index 00000000000..10db3a84195 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/cookies/prefix/__secure.header.https.html.ini @@ -0,0 +1,12 @@ +[__secure.header.https.html] + [__SeCuRe: secure origin: Should not set 'Path=/;'] + expected: FAIL + + [__SeCuRe: secure origin: Should not set 'Path=/;MaxAge=10'] + expected: FAIL + + [__SeCuRe: secure origin: Should not set 'Path=/;HttpOnly'] + expected: FAIL + + [__SeCuRe: secure origin: Should not set 'Path=/;domain=not-web-platform.test'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/cookies/prefix/document-cookie.non-secure.html.ini b/tests/wpt/metadata-layout-2020/cookies/prefix/document-cookie.non-secure.html.ini new file mode 100644 index 00000000000..fcbb39e1912 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/cookies/prefix/document-cookie.non-secure.html.ini @@ -0,0 +1,18 @@ +[document-cookie.non-secure.html] + [__SeCuRe: Non-secure origin: 'Path=/;'] + expected: FAIL + + [__SeCuRe: Non-secure origin: 'Path=/;domain=web-platform.test'] + expected: FAIL + + [__SeCuRe: Non-secure origin: 'Path=/;MaxAge=10'] + expected: FAIL + + [__HoSt: Non-secure origin: 'Path=/; '] + expected: FAIL + + [__HoSt: Non-secure origin: 'Path=/; domain=web-platform.test'] + expected: FAIL + + [__HoSt: Non-secure origin: 'Path=/; MaxAge=10'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/cors/access-control-expose-headers-parsing.window.js.ini b/tests/wpt/metadata-layout-2020/cors/access-control-expose-headers-parsing.window.js.ini index 5f9ce168459..502b0f667da 100644 --- a/tests/wpt/metadata-layout-2020/cors/access-control-expose-headers-parsing.window.js.ini +++ b/tests/wpt/metadata-layout-2020/cors/access-control-expose-headers-parsing.window.js.ini @@ -11,9 +11,6 @@ [Parsing: Access-Control-Expose-Headers%3A%20bb-8%0D%0AAccess-Control-Expose-Headers%3A%20no%20no] expected: FAIL - [Parsing: Access-Control-Expose-Headers%3A%20%2Cbb-8] - expected: FAIL - [Parsing: Access-Control-Expose-Headers%3A%20bb-8%0C] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/cors/simple-requests-ch.tentative.htm.ini b/tests/wpt/metadata-layout-2020/cors/simple-requests-ch.tentative.htm.ini new file mode 100644 index 00000000000..f6a398b7102 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/cors/simple-requests-ch.tentative.htm.ini @@ -0,0 +1,9 @@ +[simple-requests-ch.tentative.htm] + [No preflight GET and {"save-data":"on","device-memory":"2.0","dpr":"3.0","width":"1200","viewport-width":"1300","rtt":"1","downlink":"1.0","ect":"2g"}] + expected: FAIL + + [No preflight HEAD and {"save-data":"on","device-memory":"2.0","dpr":"3.0","width":"1200","viewport-width":"1300","rtt":"1","downlink":"1.0","ect":"2g"}] + expected: FAIL + + [No preflight POST and {"save-data":"on","device-memory":"2.0","dpr":"3.0","width":"1200","viewport-width":"1300","rtt":"1","downlink":"1.0","ect":"2g"}] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-001.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-001.html.ini new file mode 100644 index 00000000000..0842d0b5727 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-001.html.ini @@ -0,0 +1,3 @@ +[hit-test-floats-001.html] + [hit-test-floats-001] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini new file mode 100644 index 00000000000..147f062e548 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini @@ -0,0 +1,3 @@ +[hit-test-floats-005.html] + [Miss clipped float] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini new file mode 100644 index 00000000000..51432362d66 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini @@ -0,0 +1,3 @@ +[block-in-inline-hittest-002.html] + [elementsFromPoint] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html.ini new file mode 100644 index 00000000000..585f7f61434 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html.ini @@ -0,0 +1,3 @@ +[block-in-inline-hittest-float-001.html] + [block-in-inline-hittest-float-001] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini new file mode 100644 index 00000000000..3e5096beef3 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini @@ -0,0 +1,3 @@ +[block-in-inline-hittest-float-002.html] + [block-in-inline-hittest-float-002] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-margin.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-margin.html.ini new file mode 100644 index 00000000000..33172481ace --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-margin.html.ini @@ -0,0 +1,3 @@ +[block-in-inline-hittest-margin.html] + [block-in-inline-hittest-margin] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini new file mode 100644 index 00000000000..cdd8b55f192 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini @@ -0,0 +1,3 @@ +[block-in-inline-hittest-relpos-zindex.html] + [position: relative; z-index: -1;] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/compositing/mix-blend-mode/mix-blend-mode-parsing.html.ini b/tests/wpt/metadata-layout-2020/css/compositing/mix-blend-mode/mix-blend-mode-parsing.html.ini new file mode 100644 index 00000000000..b0796527bd7 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/compositing/mix-blend-mode/mix-blend-mode-parsing.html.ini @@ -0,0 +1,3 @@ +[mix-blend-mode-parsing.html] + [Mix-blend-mode plus-lighter] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/CSSAnimation-effect.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/CSSAnimation-effect.tentative.html.ini index 3e192e52ac0..90a69fb978c 100644 --- a/tests/wpt/metadata-layout-2020/css/css-animations/CSSAnimation-effect.tentative.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-animations/CSSAnimation-effect.tentative.html.ini @@ -20,3 +20,5 @@ [Setting a null effect on a running animation fires an animationend event] expected: FAIL + [Setting animation-composition sets the composite property on the effect] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/KeyframeEffect-getKeyframes.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/KeyframeEffect-getKeyframes.tentative.html.ini index 32cef197526..941b807f4aa 100644 --- a/tests/wpt/metadata-layout-2020/css/css-animations/KeyframeEffect-getKeyframes.tentative.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-animations/KeyframeEffect-getKeyframes.tentative.html.ini @@ -74,3 +74,20 @@ [KeyframeEffect.getKeyframes() returns expected values for animations with CSS variables as keyframe values in a shorthand property] expected: FAIL + [KeyframeEffect.getKeyframes() returns frames with expected composite values, when the composite is set on the effect using animation-composition on the element] + expected: FAIL + + [KeyframeEffect.getKeyframes() returns frames with expected composite values, when the composite is specified on each keyframe] + expected: FAIL + + [KeyframeEffect.getKeyframes() returns frames with expected composite values, when the composite is specified on some keyframes] + expected: FAIL + + [KeyframeEffect.getKeyframes() returns expected frames for an animation with multiple keyframes for the same time and with different composite operations] + expected: FAIL + + [KeyframeEffect.getKeyframes() returns expected frames for an animation with multiple keyframes for the same time and with different easing functions and composite operations] + expected: FAIL + + [KeyframeEffect.getKeyframes() returns expected values for animations with implicit values and a non-default timingfunction specified for 0% and 100%] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/animation-play-state-005.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/animation-play-state-005.tentative.html.ini new file mode 100644 index 00000000000..14819ec8293 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/animation-play-state-005.tentative.html.ini @@ -0,0 +1,3 @@ +[animation-play-state-005.tentative.html] + [CSS animation should not restart after resetting its animation-play-state] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/dialog-animation.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/dialog-animation.html.ini new file mode 100644 index 00000000000..8a2d53d4b60 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/dialog-animation.html.ini @@ -0,0 +1,3 @@ +[dialog-animation.html] + [CSS Animations tied to are canceled and restarted as the dialog is hidden and shown] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/dialog-backdrop-animation.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/dialog-backdrop-animation.html.ini new file mode 100644 index 00000000000..f87e7ba7748 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/dialog-backdrop-animation.html.ini @@ -0,0 +1,3 @@ +[dialog-backdrop-animation.html] + [CSS Animations on a ::backdrop are canceled and restarted as the dialog is hidden and shown] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-composition-computed.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-composition-computed.tentative.html.ini new file mode 100644 index 00000000000..05eb67ba3c0 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-composition-computed.tentative.html.ini @@ -0,0 +1,3 @@ +[animation-composition-computed.tentative.html] + [Property animation-composition value 'replace, add, accumulate'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-composition-valid.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-composition-valid.tentative.html.ini new file mode 100644 index 00000000000..749e6bae389 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-composition-valid.tentative.html.ini @@ -0,0 +1,12 @@ +[animation-composition-valid.tentative.html] + [e.style['animation-composition'\] = "replace" should set the property value] + expected: FAIL + + [e.style['animation-composition'\] = "add" should set the property value] + expected: FAIL + + [e.style['animation-composition'\] = "accumulate" should set the property value] + expected: FAIL + + [e.style['animation-composition'\] = "replace, add, accumulate" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-computed.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-computed.html.ini index dbcba313b94..b8971a977db 100644 --- a/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-computed.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-computed.html.ini @@ -32,3 +32,5 @@ [Property animation value 'reverse'] expected: FAIL + [Default animation value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-end-computed.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-end-computed.html.ini new file mode 100644 index 00000000000..8e44295440a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-end-computed.html.ini @@ -0,0 +1,42 @@ +[animation-delay-end-computed.html] + [Property animation-delay-start value 'initial'] + expected: FAIL + + [Property animation-delay-start value '-500ms'] + expected: FAIL + + [Property animation-delay-start value 'calc(2 * 3s)'] + expected: FAIL + + [Property animation-delay-start value '20s, 10s'] + expected: FAIL + + [Property animation-delay-start value 'cover 0%'] + expected: FAIL + + [Property animation-delay-start value 'COVER 0%'] + expected: FAIL + + [Property animation-delay-start value 'cover 100%'] + expected: FAIL + + [Property animation-delay-start value 'cover 120%'] + expected: FAIL + + [Property animation-delay-start value 'cover 42%'] + expected: FAIL + + [Property animation-delay-start value 'cover -42%'] + expected: FAIL + + [Property animation-delay-start value 'contain 42%'] + expected: FAIL + + [Property animation-delay-start value 'exit 42%'] + expected: FAIL + + [Property animation-delay-start value 'exit calc(41% + 1%)'] + expected: FAIL + + [Property animation-delay-start value 'exit 1%, cover 2%, contain 100%'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-end-valid.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-end-valid.html.ini new file mode 100644 index 00000000000..7d2dc54a87b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-end-valid.html.ini @@ -0,0 +1,39 @@ +[animation-delay-end-valid.html] + [e.style['animation-delay-start'\] = "-5ms" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "0s" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "10s" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "20s, 10s" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "cover 0%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "cover 100%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "cover 120%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "cover 42%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "cover -42%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "contain 42%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "exit 42%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "exit 1%, cover 2%, contain 100%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "enter 42%" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-start-computed.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-start-computed.html.ini new file mode 100644 index 00000000000..66f7c1a42c6 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-start-computed.html.ini @@ -0,0 +1,42 @@ +[animation-delay-start-computed.html] + [Property animation-delay-start value 'initial'] + expected: FAIL + + [Property animation-delay-start value '-500ms'] + expected: FAIL + + [Property animation-delay-start value 'calc(2 * 3s)'] + expected: FAIL + + [Property animation-delay-start value '20s, 10s'] + expected: FAIL + + [Property animation-delay-start value 'cover 0%'] + expected: FAIL + + [Property animation-delay-start value 'COVER 0%'] + expected: FAIL + + [Property animation-delay-start value 'cover 100%'] + expected: FAIL + + [Property animation-delay-start value 'cover 120%'] + expected: FAIL + + [Property animation-delay-start value 'cover 42%'] + expected: FAIL + + [Property animation-delay-start value 'cover -42%'] + expected: FAIL + + [Property animation-delay-start value 'contain 42%'] + expected: FAIL + + [Property animation-delay-start value 'exit 42%'] + expected: FAIL + + [Property animation-delay-start value 'exit calc(41% + 1%)'] + expected: FAIL + + [Property animation-delay-start value 'exit 1%, cover 2%, contain 100%'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-start-valid.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-start-valid.html.ini new file mode 100644 index 00000000000..806a329b1ab --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-delay-start-valid.html.ini @@ -0,0 +1,39 @@ +[animation-delay-start-valid.html] + [e.style['animation-delay-start'\] = "-5ms" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "0s" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "10s" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "20s, 10s" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "cover 0%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "cover 100%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "cover 120%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "cover 42%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "cover -42%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "contain 42%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "exit 42%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "exit 1%, cover 2%, contain 100%" should set the property value] + expected: FAIL + + [e.style['animation-delay-start'\] = "enter 42%" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-name-invalid.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-name-invalid.html.ini new file mode 100644 index 00000000000..2c2d540d86b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/animation-name-invalid.html.ini @@ -0,0 +1,3 @@ +[animation-name-invalid.html] + [e.style['animation-name'\] = "revert-layer, four" should not set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/parsing/keyframes-allowed-properties.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/keyframes-allowed-properties.html.ini new file mode 100644 index 00000000000..bdb2856c7d0 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/keyframes-allowed-properties.html.ini @@ -0,0 +1,3 @@ +[keyframes-allowed-properties.html] + [@keyframes allows all non-animation properties and animation-timing-function] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/parsing/keyframes-name-invalid.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/keyframes-name-invalid.html.ini new file mode 100644 index 00000000000..19ebc4aef56 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/parsing/keyframes-name-invalid.html.ini @@ -0,0 +1,3 @@ +[keyframes-name-invalid.html] + [invalid: @keyframes revert-layer { }] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/animations/box-shadow-interpolation.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/animations/box-shadow-interpolation.html.ini index cd5da0ae6f7..d99ebf03b3a 100644 --- a/tests/wpt/metadata-layout-2020/css/css-backgrounds/animations/box-shadow-interpolation.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-backgrounds/animations/box-shadow-interpolation.html.ini @@ -238,3 +238,21 @@ [Web Animations: property from [0px 0px 0px 0px black\] to [1px 1px 1px 1px black\] at (1.5) should be [rgb(0, 0, 0) 1.5px 1.5px 1.5px 1.5px\]] expected: FAIL + + [Web Animations: property from [inset 0 0 0 0 black\] to [inset 0 0 0 calc(max(10em, 20px) / 2) black\] at (-0.3) should be [rgb(0, 0, 0) 0px 0px 0px -4.5px inset\]] + expected: FAIL + + [Web Animations: property from [inset 0 0 0 0 black\] to [inset 0 0 0 calc(max(10em, 20px) / 2) black\] at (0) should be [rgb(0, 0, 0) 0px 0px 0px 0px inset\]] + expected: FAIL + + [Web Animations: property from [inset 0 0 0 0 black\] to [inset 0 0 0 calc(max(10em, 20px) / 2) black\] at (0.3) should be [rgb(0, 0, 0) 0px 0px 0px 4.5px inset\]] + expected: FAIL + + [Web Animations: property from [inset 0 0 0 0 black\] to [inset 0 0 0 calc(max(10em, 20px) / 2) black\] at (0.6) should be [rgb(0, 0, 0) 0px 0px 0px 9px inset\]] + expected: FAIL + + [Web Animations: property from [inset 0 0 0 0 black\] to [inset 0 0 0 calc(max(10em, 20px) / 2) black\] at (1) should be [rgb(0, 0, 0) 0px 0px 0px 15px inset\]] + expected: FAIL + + [Web Animations: property from [inset 0 0 0 0 black\] to [inset 0 0 0 calc(max(10em, 20px) / 2) black\] at (1.5) should be [rgb(0, 0, 0) 0px 0px 0px 22.5px inset\]] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-size-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-size-001.html.ini new file mode 100644 index 00000000000..cb2d8ab83ed --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-size-001.html.ini @@ -0,0 +1,27 @@ +[background-size-001.html] + [background-size_length_zero] + expected: FAIL + + [background-size_length_negative_zero] + expected: FAIL + + [background-size_length_positive_zero] + expected: FAIL + + [background-size_length_normal] + expected: FAIL + + [background-size_percentage_min] + expected: FAIL + + [background-size_percentage_normal] + expected: FAIL + + [background-size_percentage_max] + expected: FAIL + + [background-size_length_auto] + expected: FAIL + + [background-size_percentage_auto] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/border-width-cssom.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/border-width-cssom.html.ini new file mode 100644 index 00000000000..93e03ee39cc --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-backgrounds/border-width-cssom.html.ini @@ -0,0 +1,2 @@ +[border-width-cssom.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/parsing/background-position-y-valid.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/parsing/background-position-y-valid.html.ini index f2a01f43d9a..be0538159c7 100644 --- a/tests/wpt/metadata-layout-2020/css/css-backgrounds/parsing/background-position-y-valid.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-backgrounds/parsing/background-position-y-valid.html.ini @@ -5,9 +5,5 @@ [e.style['background-position-y'\] = "0.5em, y-start, y-end" should set the property value] expected: FAIL - [e.style['background-position-y'\] = "calc(10px - 0.5em), top -20%, bottom 10px" should set the property value] - expected: FAIL - [e.style['background-position-y'\] = "y-end" should set the property value] expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/parsing/background-shorthand-serialization.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/parsing/background-shorthand-serialization.html.ini new file mode 100644 index 00000000000..9f3f3bde068 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-backgrounds/parsing/background-shorthand-serialization.html.ini @@ -0,0 +1,18 @@ +[background-shorthand-serialization.html] + [single value] + expected: FAIL + + [multiple values] + expected: FAIL + + [multiple backgrounds] + expected: FAIL + + [background-size with non-initial background-position] + expected: FAIL + + [multiple backgrounds with varying values] + expected: FAIL + + [all initial values] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/parsing/background-size-computed.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/parsing/background-size-computed.html.ini index 9fb3830b623..f596743b969 100644 --- a/tests/wpt/metadata-layout-2020/css/css-backgrounds/parsing/background-size-computed.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-backgrounds/parsing/background-size-computed.html.ini @@ -2,3 +2,8 @@ [Property background-size value 'auto 1px, 2% 3%, contain'] expected: FAIL + [Property background-size value '1px'] + expected: FAIL + + [Property background-size value '1px auto'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/animation/color-interpolation.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/animation/color-interpolation.html.ini index 9f925c264d9..da34b2048c1 100644 --- a/tests/wpt/metadata-layout-2020/css/css-color/animation/color-interpolation.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-color/animation/color-interpolation.html.ini @@ -89,3 +89,218 @@ [Web Animations: property from [inherit\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]] expected: FAIL + [CSS Transitions: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL + + [CSS Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [CSS Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [CSS Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [CSS Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL + + [Web Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [Web Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [Web Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [Web Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [Web Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [Web Animations: property from [rgb(0 0 0)\] to [color(srgb 1 1 1)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [rgb(255 255 255)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [CSS Transitions: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [CSS Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (-0.3) should be [oklab(0 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0) should be [oklab(0 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0.3) should be [oklab(0.3 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (0.6) should be [oklab(0.6 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (1) should be [oklab(1 0 0)\]] + expected: FAIL + + [Web Animations: property from [color(srgb 0 0 0)\] to [color(srgb 1 1 1)\] at (1.5) should be [oklab(1.5 0 0)\]] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-color-contrast-function.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-color-contrast-function.html.ini new file mode 100644 index 00000000000..ff8c020f68f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-color-contrast-function.html.ini @@ -0,0 +1,66 @@ +[color-computed-color-contrast-function.html] + [Property color value 'color-contrast(white vs red, blue)'] + expected: FAIL + + [Property color value 'color-contrast(white vs blue, red)'] + expected: FAIL + + [Property color value 'color-contrast(white vs red, blue, green)'] + expected: FAIL + + [Property color value 'color-contrast(white vs white, white)'] + expected: FAIL + + [Property color value 'color-contrast(blue vs red, white)'] + expected: FAIL + + [Property color value 'color-contrast(red vs blue, white, red)'] + expected: FAIL + + [Property color value 'color-contrast(black vs red, blue)'] + expected: FAIL + + [Property color value 'color-contrast(black vs blue, red)'] + expected: FAIL + + [Property color value 'color-contrast(black vs white, white)'] + expected: FAIL + + [Property color value 'color-contrast(red vs blue, rgb(255, 255, 255, .5))'] + expected: FAIL + + [Property color value 'color-contrast(wheat vs bisque, darkgoldenrod, olive, sienna, darkgreen, maroon to AA)'] + expected: FAIL + + [Property color value 'color-contrast(wheat vs bisque, darkgoldenrod, olive, sienna, darkgreen, maroon to AA-large)'] + expected: FAIL + + [Property color value 'color-contrast(wheat vs bisque, darkgoldenrod, olive, sienna, darkgreen, maroon to AAA)'] + expected: FAIL + + [Property color value 'color-contrast(wheat vs bisque, darkgoldenrod, olive, sienna, darkgreen, maroon to AAA-large)'] + expected: FAIL + + [Property color value 'color-contrast(wheat vs bisque, darkgoldenrod, olive, sienna, darkgreen, maroon to 5.8)'] + expected: FAIL + + [Property color value 'color-contrast(wheat vs bisque, darkgoldenrod, olive to 100)'] + expected: FAIL + + [Property color value 'color-contrast(green vs bisque, darkgoldenrod, olive to 100)'] + expected: FAIL + + [Property color value 'color-contrast(green vs color(display-p3 0 1 0), color(display-p3 0 0 1))'] + expected: FAIL + + [Property color value 'color-contrast(color(display-p3 1 1 0) vs color(display-p3 0 1 0), color(display-p3 0 0 1))'] + expected: FAIL + + [Property color value 'color-contrast(green vs lab(50% -160 160), lch(0.2 50 20deg))'] + expected: FAIL + + [Property color value 'color-contrast(lab(50% -160 160) vs green, lch(0.2 50 20deg))'] + expected: FAIL + + [Property color value 'color-contrast( white vs red, blue )'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-color-function.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-color-function.html.ini new file mode 100644 index 00000000000..aec9896ceb8 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-color-function.html.ini @@ -0,0 +1,1320 @@ +[color-computed-color-function.html] + [Property color value 'color(srgb 0% 0% 0%)'] + expected: FAIL + + [Property color value 'color(srgb 10% 10% 10%)'] + expected: FAIL + + [Property color value 'color(srgb .2 .2 25%)'] + expected: FAIL + + [Property color value 'color(srgb 0 0 0 / 1)'] + expected: FAIL + + [Property color value 'color(srgb 0% 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'color(srgb 20% 0 10/0.5)'] + expected: FAIL + + [Property color value 'color(srgb 20% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(srgb 400% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(srgb 50% -160 160)'] + expected: FAIL + + [Property color value 'color(srgb 50% -200 200)'] + expected: FAIL + + [Property color value 'color(srgb 0 0 0 / -10%)'] + expected: FAIL + + [Property color value 'color(srgb 0 0 0 / 110%)'] + expected: FAIL + + [Property color value 'color(srgb 0 0 0 / 300%)'] + expected: FAIL + + [Property color value 'color(srgb 50% -200)'] + expected: FAIL + + [Property color value 'color(srgb 50%)'] + expected: FAIL + + [Property color value 'color(srgb)'] + expected: FAIL + + [Property color value 'color(srgb 50% -200 / 0.5)'] + expected: FAIL + + [Property color value 'color(srgb 50% / 0.5)'] + expected: FAIL + + [Property color value 'color(srgb / 0.5)'] + expected: FAIL + + [Property color value 'color(srgb 200 200 200)'] + expected: FAIL + + [Property color value 'color(srgb 200 200 200 / 200)'] + expected: FAIL + + [Property color value 'color(srgb -200 -200 -200)'] + expected: FAIL + + [Property color value 'color(srgb -200 -200 -200 / -200)'] + expected: FAIL + + [Property color value 'color(srgb 200% 200% 200%)'] + expected: FAIL + + [Property color value 'color(srgb 200% 200% 200% / 200%)'] + expected: FAIL + + [Property color value 'color(srgb -200% -200% -200% / -200%)'] + expected: FAIL + + [Property color value 'color(srgb calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'color(srgb calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))'] + expected: FAIL + + [Property color value 'color(srgb none none none / none)'] + expected: FAIL + + [Property color value 'color(srgb none none none)'] + expected: FAIL + + [Property color value 'color(srgb 10% none none / none)'] + expected: FAIL + + [Property color value 'color(srgb none none none / 0.5)'] + expected: FAIL + + [Property color value 'color(srgb 0 0 0 / none)'] + expected: FAIL + + [Property color value 'color(srgb-linear 0% 0% 0%)'] + expected: FAIL + + [Property color value 'color(srgb-linear 10% 10% 10%)'] + expected: FAIL + + [Property color value 'color(srgb-linear .2 .2 25%)'] + expected: FAIL + + [Property color value 'color(srgb-linear 0 0 0 / 1)'] + expected: FAIL + + [Property color value 'color(srgb-linear 0% 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'color(srgb-linear 20% 0 10/0.5)'] + expected: FAIL + + [Property color value 'color(srgb-linear 20% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(srgb-linear 400% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(srgb-linear 50% -160 160)'] + expected: FAIL + + [Property color value 'color(srgb-linear 50% -200 200)'] + expected: FAIL + + [Property color value 'color(srgb-linear 0 0 0 / -10%)'] + expected: FAIL + + [Property color value 'color(srgb-linear 0 0 0 / 110%)'] + expected: FAIL + + [Property color value 'color(srgb-linear 0 0 0 / 300%)'] + expected: FAIL + + [Property color value 'color(srgb-linear 50% -200)'] + expected: FAIL + + [Property color value 'color(srgb-linear 50%)'] + expected: FAIL + + [Property color value 'color(srgb-linear)'] + expected: FAIL + + [Property color value 'color(srgb-linear 50% -200 / 0.5)'] + expected: FAIL + + [Property color value 'color(srgb-linear 50% / 0.5)'] + expected: FAIL + + [Property color value 'color(srgb-linear / 0.5)'] + expected: FAIL + + [Property color value 'color(srgb-linear 200 200 200)'] + expected: FAIL + + [Property color value 'color(srgb-linear 200 200 200 / 200)'] + expected: FAIL + + [Property color value 'color(srgb-linear -200 -200 -200)'] + expected: FAIL + + [Property color value 'color(srgb-linear -200 -200 -200 / -200)'] + expected: FAIL + + [Property color value 'color(srgb-linear 200% 200% 200%)'] + expected: FAIL + + [Property color value 'color(srgb-linear 200% 200% 200% / 200%)'] + expected: FAIL + + [Property color value 'color(srgb-linear -200% -200% -200% / -200%)'] + expected: FAIL + + [Property color value 'color(srgb-linear calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'color(srgb-linear calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))'] + expected: FAIL + + [Property color value 'color(srgb-linear none none none / none)'] + expected: FAIL + + [Property color value 'color(srgb-linear none none none)'] + expected: FAIL + + [Property color value 'color(srgb-linear 10% none none / none)'] + expected: FAIL + + [Property color value 'color(srgb-linear none none none / 0.5)'] + expected: FAIL + + [Property color value 'color(srgb-linear 0 0 0 / none)'] + expected: FAIL + + [Property color value 'color(a98-rgb 0% 0% 0%)'] + expected: FAIL + + [Property color value 'color(a98-rgb 10% 10% 10%)'] + expected: FAIL + + [Property color value 'color(a98-rgb .2 .2 25%)'] + expected: FAIL + + [Property color value 'color(a98-rgb 0 0 0 / 1)'] + expected: FAIL + + [Property color value 'color(a98-rgb 0% 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'color(a98-rgb 20% 0 10/0.5)'] + expected: FAIL + + [Property color value 'color(a98-rgb 20% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(a98-rgb 400% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(a98-rgb 50% -160 160)'] + expected: FAIL + + [Property color value 'color(a98-rgb 50% -200 200)'] + expected: FAIL + + [Property color value 'color(a98-rgb 0 0 0 / -10%)'] + expected: FAIL + + [Property color value 'color(a98-rgb 0 0 0 / 110%)'] + expected: FAIL + + [Property color value 'color(a98-rgb 0 0 0 / 300%)'] + expected: FAIL + + [Property color value 'color(a98-rgb 50% -200)'] + expected: FAIL + + [Property color value 'color(a98-rgb 50%)'] + expected: FAIL + + [Property color value 'color(a98-rgb)'] + expected: FAIL + + [Property color value 'color(a98-rgb 50% -200 / 0.5)'] + expected: FAIL + + [Property color value 'color(a98-rgb 50% / 0.5)'] + expected: FAIL + + [Property color value 'color(a98-rgb / 0.5)'] + expected: FAIL + + [Property color value 'color(a98-rgb 200 200 200)'] + expected: FAIL + + [Property color value 'color(a98-rgb 200 200 200 / 200)'] + expected: FAIL + + [Property color value 'color(a98-rgb -200 -200 -200)'] + expected: FAIL + + [Property color value 'color(a98-rgb -200 -200 -200 / -200)'] + expected: FAIL + + [Property color value 'color(a98-rgb 200% 200% 200%)'] + expected: FAIL + + [Property color value 'color(a98-rgb 200% 200% 200% / 200%)'] + expected: FAIL + + [Property color value 'color(a98-rgb -200% -200% -200% / -200%)'] + expected: FAIL + + [Property color value 'color(a98-rgb calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'color(a98-rgb calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))'] + expected: FAIL + + [Property color value 'color(a98-rgb none none none / none)'] + expected: FAIL + + [Property color value 'color(a98-rgb none none none)'] + expected: FAIL + + [Property color value 'color(a98-rgb 10% none none / none)'] + expected: FAIL + + [Property color value 'color(a98-rgb none none none / 0.5)'] + expected: FAIL + + [Property color value 'color(a98-rgb 0 0 0 / none)'] + expected: FAIL + + [Property color value 'color(rec2020 0% 0% 0%)'] + expected: FAIL + + [Property color value 'color(rec2020 10% 10% 10%)'] + expected: FAIL + + [Property color value 'color(rec2020 .2 .2 25%)'] + expected: FAIL + + [Property color value 'color(rec2020 0 0 0 / 1)'] + expected: FAIL + + [Property color value 'color(rec2020 0% 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'color(rec2020 20% 0 10/0.5)'] + expected: FAIL + + [Property color value 'color(rec2020 20% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(rec2020 400% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(rec2020 50% -160 160)'] + expected: FAIL + + [Property color value 'color(rec2020 50% -200 200)'] + expected: FAIL + + [Property color value 'color(rec2020 0 0 0 / -10%)'] + expected: FAIL + + [Property color value 'color(rec2020 0 0 0 / 110%)'] + expected: FAIL + + [Property color value 'color(rec2020 0 0 0 / 300%)'] + expected: FAIL + + [Property color value 'color(rec2020 50% -200)'] + expected: FAIL + + [Property color value 'color(rec2020 50%)'] + expected: FAIL + + [Property color value 'color(rec2020)'] + expected: FAIL + + [Property color value 'color(rec2020 50% -200 / 0.5)'] + expected: FAIL + + [Property color value 'color(rec2020 50% / 0.5)'] + expected: FAIL + + [Property color value 'color(rec2020 / 0.5)'] + expected: FAIL + + [Property color value 'color(rec2020 200 200 200)'] + expected: FAIL + + [Property color value 'color(rec2020 200 200 200 / 200)'] + expected: FAIL + + [Property color value 'color(rec2020 -200 -200 -200)'] + expected: FAIL + + [Property color value 'color(rec2020 -200 -200 -200 / -200)'] + expected: FAIL + + [Property color value 'color(rec2020 200% 200% 200%)'] + expected: FAIL + + [Property color value 'color(rec2020 200% 200% 200% / 200%)'] + expected: FAIL + + [Property color value 'color(rec2020 -200% -200% -200% / -200%)'] + expected: FAIL + + [Property color value 'color(rec2020 calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'color(rec2020 calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))'] + expected: FAIL + + [Property color value 'color(rec2020 none none none / none)'] + expected: FAIL + + [Property color value 'color(rec2020 none none none)'] + expected: FAIL + + [Property color value 'color(rec2020 10% none none / none)'] + expected: FAIL + + [Property color value 'color(rec2020 none none none / 0.5)'] + expected: FAIL + + [Property color value 'color(rec2020 0 0 0 / none)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 0% 0% 0%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 10% 10% 10%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb .2 .2 25%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 0 0 0 / 1)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 0% 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 20% 0 10/0.5)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 20% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 400% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 50% -160 160)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 50% -200 200)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 0 0 0 / -10%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 0 0 0 / 110%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 0 0 0 / 300%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 50% -200)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 50%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 50% -200 / 0.5)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 50% / 0.5)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb / 0.5)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 200 200 200)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 200 200 200 / 200)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb -200 -200 -200)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb -200 -200 -200 / -200)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 200% 200% 200%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 200% 200% 200% / 200%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb -200% -200% -200% / -200%)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'color(prophoto-rgb calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))'] + expected: FAIL + + [Property color value 'color(prophoto-rgb none none none / none)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb none none none)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 10% none none / none)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb none none none / 0.5)'] + expected: FAIL + + [Property color value 'color(prophoto-rgb 0 0 0 / none)'] + expected: FAIL + + [Property color value 'color(display-p3 0% 0% 0%)'] + expected: FAIL + + [Property color value 'color(display-p3 10% 10% 10%)'] + expected: FAIL + + [Property color value 'color(display-p3 .2 .2 25%)'] + expected: FAIL + + [Property color value 'color(display-p3 0 0 0 / 1)'] + expected: FAIL + + [Property color value 'color(display-p3 0% 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'color(display-p3 20% 0 10/0.5)'] + expected: FAIL + + [Property color value 'color(display-p3 20% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(display-p3 400% 0 10/50%)'] + expected: FAIL + + [Property color value 'color(display-p3 50% -160 160)'] + expected: FAIL + + [Property color value 'color(display-p3 50% -200 200)'] + expected: FAIL + + [Property color value 'color(display-p3 0 0 0 / -10%)'] + expected: FAIL + + [Property color value 'color(display-p3 0 0 0 / 110%)'] + expected: FAIL + + [Property color value 'color(display-p3 0 0 0 / 300%)'] + expected: FAIL + + [Property color value 'color(display-p3 50% -200)'] + expected: FAIL + + [Property color value 'color(display-p3 50%)'] + expected: FAIL + + [Property color value 'color(display-p3)'] + expected: FAIL + + [Property color value 'color(display-p3 50% -200 / 0.5)'] + expected: FAIL + + [Property color value 'color(display-p3 50% / 0.5)'] + expected: FAIL + + [Property color value 'color(display-p3 / 0.5)'] + expected: FAIL + + [Property color value 'color(display-p3 200 200 200)'] + expected: FAIL + + [Property color value 'color(display-p3 200 200 200 / 200)'] + expected: FAIL + + [Property color value 'color(display-p3 -200 -200 -200)'] + expected: FAIL + + [Property color value 'color(display-p3 -200 -200 -200 / -200)'] + expected: FAIL + + [Property color value 'color(display-p3 200% 200% 200%)'] + expected: FAIL + + [Property color value 'color(display-p3 200% 200% 200% / 200%)'] + expected: FAIL + + [Property color value 'color(display-p3 -200% -200% -200% / -200%)'] + expected: FAIL + + [Property color value 'color(display-p3 calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'color(display-p3 calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))'] + expected: FAIL + + [Property color value 'color(display-p3 none none none / none)'] + expected: FAIL + + [Property color value 'color(display-p3 none none none)'] + expected: FAIL + + [Property color value 'color(display-p3 10% none none / none)'] + expected: FAIL + + [Property color value 'color(display-p3 none none none / 0.5)'] + expected: FAIL + + [Property color value 'color(display-p3 0 0 0 / none)'] + expected: FAIL + + [Property color value 'color(xyz 0 0 0)'] + expected: FAIL + + [Property color value 'color(xyz 0 0 0 / 1)'] + expected: FAIL + + [Property color value 'color(xyz 1 1 1)'] + expected: FAIL + + [Property color value 'color(xyz 1 1 1 / 1)'] + expected: FAIL + + [Property color value 'color(xyz -1 -1 -1)'] + expected: FAIL + + [Property color value 'color(xyz 0.1 0.1 0.1)'] + expected: FAIL + + [Property color value 'color(xyz 10 10 10)'] + expected: FAIL + + [Property color value 'color(xyz .2 .2 .25)'] + expected: FAIL + + [Property color value 'color(xyz 0 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'color(xyz .20 0 10/0.5)'] + expected: FAIL + + [Property color value 'color(xyz .20 0 10/50%)'] + expected: FAIL + + [Property color value 'color(xyz 0 0 0 / -10%)'] + expected: FAIL + + [Property color value 'color(xyz 0 0 0 / 110%)'] + expected: FAIL + + [Property color value 'color(xyz 0 0 0 / 300%)'] + expected: FAIL + + [Property color value 'color(xyz 1 1)'] + expected: FAIL + + [Property color value 'color(xyz 1)'] + expected: FAIL + + [Property color value 'color(xyz)'] + expected: FAIL + + [Property color value 'color(xyz 1 1 / .5)'] + expected: FAIL + + [Property color value 'color(xyz 1 / 0.5)'] + expected: FAIL + + [Property color value 'color(xyz / 50%)'] + expected: FAIL + + [Property color value 'color(xyz calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'color(xyz none none none / none)'] + expected: FAIL + + [Property color value 'color(xyz none none none)'] + expected: FAIL + + [Property color value 'color(xyz 0.2 none none / none)'] + expected: FAIL + + [Property color value 'color(xyz none none none / 0.5)'] + expected: FAIL + + [Property color value 'color(xyz 0 0 0 / none)'] + expected: FAIL + + [Property color value 'color(xyz-d50 0 0 0)'] + expected: FAIL + + [Property color value 'color(xyz-d50 0 0 0 / 1)'] + expected: FAIL + + [Property color value 'color(xyz-d50 1 1 1)'] + expected: FAIL + + [Property color value 'color(xyz-d50 1 1 1 / 1)'] + expected: FAIL + + [Property color value 'color(xyz-d50 -1 -1 -1)'] + expected: FAIL + + [Property color value 'color(xyz-d50 0.1 0.1 0.1)'] + expected: FAIL + + [Property color value 'color(xyz-d50 10 10 10)'] + expected: FAIL + + [Property color value 'color(xyz-d50 .2 .2 .25)'] + expected: FAIL + + [Property color value 'color(xyz-d50 0 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'color(xyz-d50 .20 0 10/0.5)'] + expected: FAIL + + [Property color value 'color(xyz-d50 .20 0 10/50%)'] + expected: FAIL + + [Property color value 'color(xyz-d50 0 0 0 / -10%)'] + expected: FAIL + + [Property color value 'color(xyz-d50 0 0 0 / 110%)'] + expected: FAIL + + [Property color value 'color(xyz-d50 0 0 0 / 300%)'] + expected: FAIL + + [Property color value 'color(xyz-d50 1 1)'] + expected: FAIL + + [Property color value 'color(xyz-d50 1)'] + expected: FAIL + + [Property color value 'color(xyz-d50)'] + expected: FAIL + + [Property color value 'color(xyz-d50 1 1 / .5)'] + expected: FAIL + + [Property color value 'color(xyz-d50 1 / 0.5)'] + expected: FAIL + + [Property color value 'color(xyz-d50 / 50%)'] + expected: FAIL + + [Property color value 'color(xyz-d50 calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'color(xyz-d50 none none none / none)'] + expected: FAIL + + [Property color value 'color(xyz-d50 none none none)'] + expected: FAIL + + [Property color value 'color(xyz-d50 0.2 none none / none)'] + expected: FAIL + + [Property color value 'color(xyz-d50 none none none / 0.5)'] + expected: FAIL + + [Property color value 'color(xyz-d50 0 0 0 / none)'] + expected: FAIL + + [Property color value 'color(xyz-d65 0 0 0)'] + expected: FAIL + + [Property color value 'color(xyz-d65 0 0 0 / 1)'] + expected: FAIL + + [Property color value 'color(xyz-d65 1 1 1)'] + expected: FAIL + + [Property color value 'color(xyz-d65 1 1 1 / 1)'] + expected: FAIL + + [Property color value 'color(xyz-d65 -1 -1 -1)'] + expected: FAIL + + [Property color value 'color(xyz-d65 0.1 0.1 0.1)'] + expected: FAIL + + [Property color value 'color(xyz-d65 10 10 10)'] + expected: FAIL + + [Property color value 'color(xyz-d65 .2 .2 .25)'] + expected: FAIL + + [Property color value 'color(xyz-d65 0 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'color(xyz-d65 .20 0 10/0.5)'] + expected: FAIL + + [Property color value 'color(xyz-d65 .20 0 10/50%)'] + expected: FAIL + + [Property color value 'color(xyz-d65 0 0 0 / -10%)'] + expected: FAIL + + [Property color value 'color(xyz-d65 0 0 0 / 110%)'] + expected: FAIL + + [Property color value 'color(xyz-d65 0 0 0 / 300%)'] + expected: FAIL + + [Property color value 'color(xyz-d65 1 1)'] + expected: FAIL + + [Property color value 'color(xyz-d65 1)'] + expected: FAIL + + [Property color value 'color(xyz-d65)'] + expected: FAIL + + [Property color value 'color(xyz-d65 1 1 / .5)'] + expected: FAIL + + [Property color value 'color(xyz-d65 1 / 0.5)'] + expected: FAIL + + [Property color value 'color(xyz-d65 / 50%)'] + expected: FAIL + + [Property color value 'color(xyz-d65 calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'color(xyz-d65 none none none / none)'] + expected: FAIL + + [Property color value 'color(xyz-d65 none none none)'] + expected: FAIL + + [Property color value 'color(xyz-d65 0.2 none none / none)'] + expected: FAIL + + [Property color value 'color(xyz-d65 none none none / 0.5)'] + expected: FAIL + + [Property color value 'color(xyz-d65 0 0 0 / none)'] + expected: FAIL + + [Property color value 'color(srgb 1.00 0.50 0.200)' [sRGB all numbers\]] + expected: FAIL + + [Property color value 'color(srgb 100% 50% 20%)' [sRGB all percent\]] + expected: FAIL + + [Property color value 'color(srgb 100% 0.5 20%)' [sRGB mixed number and percent\]] + expected: FAIL + + [Property color value 'color(srgb 1.00 50% 0.2)' [sRGB mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(srgb none none none)' [sRGB all none\]] + expected: FAIL + + [Property color value 'color(srgb 1.00 none 0.2)' [sRGB number and none\]] + expected: FAIL + + [Property color value 'color(srgb 100% none 20%)' [sRGB percent and none\]] + expected: FAIL + + [Property color value 'color(srgb 100% none 0.2)' [sRGB number, percent and none\]] + expected: FAIL + + [Property color value 'color(srgb 1.00 0.50 0.200 / 0.6)' [sRGB with alpha, all numbers\]] + expected: FAIL + + [Property color value 'color(srgb 100% 50% 20% / 60%)' [sRGB with alpha, all percent\]] + expected: FAIL + + [Property color value 'color(srgb 100% 0.5 20% / 0.6)' [sRGB with alpha, mixed number and percent\]] + expected: FAIL + + [Property color value 'color(srgb 1.00 50% 0.2 / 60%)' [sRGB with alpha, mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(srgb none none none / none)' [sRGB with alpha, all none\]] + expected: FAIL + + [Property color value 'color(srgb 1.00 none 0.2 / none)' [sRGB with alpha, number and none\]] + expected: FAIL + + [Property color value 'color(srgb 100% none 20% / 30%)' [sRGB with alpha, percent and none\]] + expected: FAIL + + [Property color value 'color(srgb 100% none 0.2 / 23.7%)' [sRGB with alpha, number, percent and none\]] + expected: FAIL + + [Property color value 'color(srgb-linear 1.00 0.50 0.200)' [Linear-light sRGB all numbers\]] + expected: FAIL + + [Property color value 'color(srgb-linear 100% 50% 20%)' [Linear-light sRGB all percent\]] + expected: FAIL + + [Property color value 'color(srgb-linear 100% 0.5 20%)' [Linear-light sRGB mixed number and percent\]] + expected: FAIL + + [Property color value 'color(srgb-linear 1.00 50% 0.2)' [Linear-light sRGB mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(srgb-linear none none none)' [Linear-light sRGB all none\]] + expected: FAIL + + [Property color value 'color(srgb-linear 1.00 none 0.2)' [Linear-light sRGB number and none\]] + expected: FAIL + + [Property color value 'color(srgb-linear 100% none 20%)' [Linear-light sRGB percent and none\]] + expected: FAIL + + [Property color value 'color(srgb-linear 100% none 0.2)' [Linear-light sRGB number, percent and none\]] + expected: FAIL + + [Property color value 'color(srgb-linear 1.00 0.50 0.200 / 0.6)' [Linear-light sRGB with alpha, all numbers\]] + expected: FAIL + + [Property color value 'color(srgb-linear 100% 50% 20% / 60%)' [Linear-light sRGB with alpha, all percent\]] + expected: FAIL + + [Property color value 'color(srgb-linear 100% 0.5 20% / 0.6)' [Linear-light sRGB with alpha, mixed number and percent\]] + expected: FAIL + + [Property color value 'color(srgb-linear 1.00 50% 0.2 / 60%)' [Linear-light sRGB with alpha, mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(srgb-linear none none none / none)' [Linear-light sRGB with alpha, all none\]] + expected: FAIL + + [Property color value 'color(srgb-linear 1.00 none 0.2 / none)' [Linear-light sRGB with alpha, number and none\]] + expected: FAIL + + [Property color value 'color(srgb-linear 100% none 20% / 30%)' [Linear-light sRGB with alpha, percent and none\]] + expected: FAIL + + [Property color value 'color(srgb-linear 100% none 0.2 / 23.7%)' [Linear-light sRGB with alpha, number, percent and none\]] + expected: FAIL + + [Property color value 'color(display-p3 1.00 0.50 0.200)' [Display P3 all numbers\]] + expected: FAIL + + [Property color value 'color(display-p3 100% 50% 20%)' [Display P3 all percent\]] + expected: FAIL + + [Property color value 'color(display-p3 100% 0.5 20%)' [Display P3 mixed number and percent\]] + expected: FAIL + + [Property color value 'color(display-p3 1.00 50% 0.2)' [Display P3 mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(display-p3 none none none)' [Display P3 all none\]] + expected: FAIL + + [Property color value 'color(display-p3 1.00 none 0.2)' [Display P3 number and none\]] + expected: FAIL + + [Property color value 'color(display-p3 100% none 20%)' [Display P3 percent and none\]] + expected: FAIL + + [Property color value 'color(display-p3 100% none 0.2)' [Display P3 number, percent and none\]] + expected: FAIL + + [Property color value 'color(display-p3 1.00 0.50 0.200 / 0.6)' [Display P3 with alpha, all numbers\]] + expected: FAIL + + [Property color value 'color(display-p3 100% 50% 20% / 60%)' [Display P3 with alpha, all percent\]] + expected: FAIL + + [Property color value 'color(display-p3 100% 0.5 20% / 0.6)' [Display P3 with alpha, mixed number and percent\]] + expected: FAIL + + [Property color value 'color(display-p3 1.00 50% 0.2 / 60%)' [Display P3 with alpha, mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(display-p3 none none none / none)' [Display P3 with alpha, all none\]] + expected: FAIL + + [Property color value 'color(display-p3 1.00 none 0.2 / none)' [Display P3 with alpha, number and none\]] + expected: FAIL + + [Property color value 'color(display-p3 100% none 20% / 30%)' [Display P3 with alpha, percent and none\]] + expected: FAIL + + [Property color value 'color(display-p3 100% none 0.2 / 23.7%)' [Display P3 with alpha, number, percent and none\]] + expected: FAIL + + [Property color value 'color(a98-rgb 1.00 0.50 0.200)' [A98 RGB all numbers\]] + expected: FAIL + + [Property color value 'color(a98-rgb 100% 50% 20%)' [A98 RGB all percent\]] + expected: FAIL + + [Property color value 'color(a98-rgb 100% 0.5 20%)' [A98 RGB mixed number and percent\]] + expected: FAIL + + [Property color value 'color(a98-rgb 1.00 50% 0.2)' [A98 RGB mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(a98-rgb none none none)' [A98 RGB all none\]] + expected: FAIL + + [Property color value 'color(a98-rgb 1.00 none 0.2)' [A98 RGB number and none\]] + expected: FAIL + + [Property color value 'color(a98-rgb 100% none 20%)' [A98 RGB percent and none\]] + expected: FAIL + + [Property color value 'color(a98-rgb 100% none 0.2)' [A98 RGB number, percent and none\]] + expected: FAIL + + [Property color value 'color(a98-rgb 1.00 0.50 0.200 / 0.6)' [A98 RGB with alpha, all numbers\]] + expected: FAIL + + [Property color value 'color(a98-rgb 100% 50% 20% / 60%)' [A98 RGB with alpha, all percent\]] + expected: FAIL + + [Property color value 'color(a98-rgb 100% 0.5 20% / 0.6)' [A98 RGB with alpha, mixed number and percent\]] + expected: FAIL + + [Property color value 'color(a98-rgb 1.00 50% 0.2 / 60%)' [A98 RGB with alpha, mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(a98-rgb none none none / none)' [A98 RGB with alpha, all none\]] + expected: FAIL + + [Property color value 'color(a98-rgb 1.00 none 0.2 / none)' [A98 RGB with alpha, number and none\]] + expected: FAIL + + [Property color value 'color(a98-rgb 100% none 20% / 30%)' [A98 RGB with alpha, percent and none\]] + expected: FAIL + + [Property color value 'color(a98-rgb 100% none 0.2 / 23.7%)' [A98 RGB with alpha, number, percent and none\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 1.00 0.50 0.200)' [ProPhoto RGB all numbers\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 100% 50% 20%)' [ProPhoto RGB all percent\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 100% 0.5 20%)' [ProPhoto RGB mixed number and percent\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 1.00 50% 0.2)' [ProPhoto RGB mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb none none none)' [ProPhoto RGB all none\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 1.00 none 0.2)' [ProPhoto RGB number and none\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 100% none 20%)' [ProPhoto RGB percent and none\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 100% none 0.2)' [ProPhoto RGB number, percent and none\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 1.00 0.50 0.200 / 0.6)' [ProPhoto RGB with alpha, all numbers\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 100% 50% 20% / 60%)' [ProPhoto RGB with alpha, all percent\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 100% 0.5 20% / 0.6)' [ProPhoto RGB with alpha, mixed number and percent\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 1.00 50% 0.2 / 60%)' [ProPhoto RGB with alpha, mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb none none none / none)' [ProPhoto RGB with alpha, all none\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 1.00 none 0.2 / none)' [ProPhoto RGB with alpha, number and none\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 100% none 20% / 30%)' [ProPhoto RGB with alpha, percent and none\]] + expected: FAIL + + [Property color value 'color(prophoto-rgb 100% none 0.2 / 23.7%)' [ProPhoto RGB with alpha, number, percent and none\]] + expected: FAIL + + [Property color value 'color(rec2020 1.00 0.50 0.200)' [Rec BT.2020 all numbers\]] + expected: FAIL + + [Property color value 'color(rec2020 100% 50% 20%)' [Rec BT.2020 all percent\]] + expected: FAIL + + [Property color value 'color(rec2020 100% 0.5 20%)' [Rec BT.2020 mixed number and percent\]] + expected: FAIL + + [Property color value 'color(rec2020 1.00 50% 0.2)' [Rec BT.2020 mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(rec2020 none none none)' [Rec BT.2020 all none\]] + expected: FAIL + + [Property color value 'color(rec2020 1.00 none 0.2)' [Rec BT.2020 number and none\]] + expected: FAIL + + [Property color value 'color(rec2020 100% none 20%)' [Rec BT.2020 percent and none\]] + expected: FAIL + + [Property color value 'color(rec2020 100% none 0.2)' [Rec BT.2020 number, percent and none\]] + expected: FAIL + + [Property color value 'color(rec2020 1.00 0.50 0.200 / 0.6)' [Rec BT.2020 with alpha, all numbers\]] + expected: FAIL + + [Property color value 'color(rec2020 100% 50% 20% / 60%)' [Rec BT.2020 with alpha, all percent\]] + expected: FAIL + + [Property color value 'color(rec2020 100% 0.5 20% / 0.6)' [Rec BT.2020 with alpha, mixed number and percent\]] + expected: FAIL + + [Property color value 'color(rec2020 1.00 50% 0.2 / 60%)' [Rec BT.2020 with alpha, mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(rec2020 none none none / none)' [Rec BT.2020 with alpha, all none\]] + expected: FAIL + + [Property color value 'color(rec2020 1.00 none 0.2 / none)' [Rec BT.2020 with alpha, number and none\]] + expected: FAIL + + [Property color value 'color(rec2020 100% none 20% / 30%)' [Rec BT.2020 with alpha, percent and none\]] + expected: FAIL + + [Property color value 'color(rec2020 100% none 0.2 / 23.7%)' [Rec BT.2020 with alpha, number, percent and none\]] + expected: FAIL + + [Property color value 'color(xyz-d50 1.00 0.50 0.200)' [CIE XYZ D50 all numbers\]] + expected: FAIL + + [Property color value 'color(xyz-d50 100% 50% 20%)' [CIE XYZ D50 all percent\]] + expected: FAIL + + [Property color value 'color(xyz-d50 100% 0.5 20%)' [CIE XYZ D50 mixed number and percent\]] + expected: FAIL + + [Property color value 'color(xyz-d50 1.00 50% 0.2)' [CIE XYZ D50 mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(xyz-d50 none none none)' [CIE XYZ D50 all none\]] + expected: FAIL + + [Property color value 'color(xyz-d50 1.00 none 0.2)' [CIE XYZ D50 number and none\]] + expected: FAIL + + [Property color value 'color(xyz-d50 100% none 20%)' [CIE XYZ D50 percent and none\]] + expected: FAIL + + [Property color value 'color(xyz-d50 100% none 0.2)' [CIE XYZ D50 number, percent and none\]] + expected: FAIL + + [Property color value 'color(xyz-d50 1.00 0.50 0.200 / 0.6)' [CIE XYZ D50 with alpha, all numbers\]] + expected: FAIL + + [Property color value 'color(xyz-d50 100% 50% 20% / 60%)' [CIE XYZ D50 with alpha, all percent\]] + expected: FAIL + + [Property color value 'color(xyz-d50 100% 0.5 20% / 0.6)' [CIE XYZ D50 with alpha, mixed number and percent\]] + expected: FAIL + + [Property color value 'color(xyz-d50 1.00 50% 0.2 / 60%)' [CIE XYZ D50 with alpha, mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(xyz-d50 none none none / none)' [CIE XYZ D50 with alpha, all none\]] + expected: FAIL + + [Property color value 'color(xyz-d50 1.00 none 0.2 / none)' [CIE XYZ D50 with alpha, number and none\]] + expected: FAIL + + [Property color value 'color(xyz-d50 100% none 20% / 30%)' [CIE XYZ D50 with alpha, percent and none\]] + expected: FAIL + + [Property color value 'color(xyz-d50 100% none 0.2 / 23.7%)' [CIE XYZ D50 with alpha, number, percent and none\]] + expected: FAIL + + [Property color value 'color(xyz-d65 1.00 0.50 0.200)' [CIE XYZ D65 all numbers\]] + expected: FAIL + + [Property color value 'color(xyz-d65 100% 50% 20%)' [CIE XYZ D65 all percent\]] + expected: FAIL + + [Property color value 'color(xyz-d65 100% 0.5 20%)' [CIE XYZ D65 mixed number and percent\]] + expected: FAIL + + [Property color value 'color(xyz-d65 1.00 50% 0.2)' [CIE XYZ D65 mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(xyz-d65 none none none)' [CIE XYZ D65 all none\]] + expected: FAIL + + [Property color value 'color(xyz-d65 1.00 none 0.2)' [CIE XYZ D65 number and none\]] + expected: FAIL + + [Property color value 'color(xyz-d65 100% none 20%)' [CIE XYZ D65 percent and none\]] + expected: FAIL + + [Property color value 'color(xyz-d65 100% none 0.2)' [CIE XYZ D65 number, percent and none\]] + expected: FAIL + + [Property color value 'color(xyz-d65 1.00 0.50 0.200 / 0.6)' [CIE XYZ D65 with alpha, all numbers\]] + expected: FAIL + + [Property color value 'color(xyz-d65 100% 50% 20% / 60%)' [CIE XYZ D65 with alpha, all percent\]] + expected: FAIL + + [Property color value 'color(xyz-d65 100% 0.5 20% / 0.6)' [CIE XYZ D65 with alpha, mixed number and percent\]] + expected: FAIL + + [Property color value 'color(xyz-d65 1.00 50% 0.2 / 60%)' [CIE XYZ D65 with alpha, mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(xyz-d65 none none none / none)' [CIE XYZ D65 with alpha, all none\]] + expected: FAIL + + [Property color value 'color(xyz-d65 1.00 none 0.2 / none)' [CIE XYZ D65 with alpha, number and none\]] + expected: FAIL + + [Property color value 'color(xyz-d65 100% none 20% / 30%)' [CIE XYZ D65 with alpha, percent and none\]] + expected: FAIL + + [Property color value 'color(xyz-d65 100% none 0.2 / 23.7%)' [CIE XYZ D65 with alpha, number, percent and none\]] + expected: FAIL + + [Property color value 'color(xyz 1.00 0.50 0.200)' [CIE XYZ (implicit D65) all numbers\]] + expected: FAIL + + [Property color value 'color(xyz 100% 50% 20%)' [CIE XYZ (implicit D65) all percent\]] + expected: FAIL + + [Property color value 'color(xyz 100% 0.5 20%)' [CIE XYZ (implicit D65) mixed number and percent\]] + expected: FAIL + + [Property color value 'color(xyz 1.00 50% 0.2)' [CIE XYZ (implicit D65) mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(xyz none none none)' [CIE XYZ (implicit D65) all none\]] + expected: FAIL + + [Property color value 'color(xyz 1.00 none 0.2)' [CIE XYZ (implicit D65) number and none\]] + expected: FAIL + + [Property color value 'color(xyz 100% none 20%)' [CIE XYZ (implicit D65) percent and none\]] + expected: FAIL + + [Property color value 'color(xyz 100% none 0.2)' [CIE XYZ (implicit D65) number, percent and none\]] + expected: FAIL + + [Property color value 'color(xyz 1.00 0.50 0.200 / 0.6)' [CIE XYZ (implicit D65) with alpha, all numbers\]] + expected: FAIL + + [Property color value 'color(xyz 100% 50% 20% / 60%)' [CIE XYZ (implicit D65) with alpha, all percent\]] + expected: FAIL + + [Property color value 'color(xyz 100% 0.5 20% / 0.6)' [CIE XYZ (implicit D65) with alpha, mixed number and percent\]] + expected: FAIL + + [Property color value 'color(xyz 1.00 50% 0.2 / 60%)' [CIE XYZ (implicit D65) with alpha, mixed number and percent 2\]] + expected: FAIL + + [Property color value 'color(xyz none none none / none)' [CIE XYZ (implicit D65) with alpha, all none\]] + expected: FAIL + + [Property color value 'color(xyz 1.00 none 0.2 / none)' [CIE XYZ (implicit D65) with alpha, number and none\]] + expected: FAIL + + [Property color value 'color(xyz 100% none 20% / 30%)' [CIE XYZ (implicit D65) with alpha, percent and none\]] + expected: FAIL + + [Property color value 'color(xyz 100% none 0.2 / 23.7%)' [CIE XYZ (implicit D65) with alpha, number, percent and none\]] + expected: FAIL + + [Property color value 'color(srgb 1 1 1)' [Basic sRGB white\]] + expected: FAIL + + [Property color value 'color( srgb 1 1 1 )' [White with lots of space\]] + expected: FAIL + + [Property color value 'color(srgb 0.25 0.5 0.75)' [sRGB color\]] + expected: FAIL + + [Property color value 'color(SrGb 0.25 0.5 0.75)' [Different case for sRGB\]] + expected: FAIL + + [Property color value 'color(srgb 1.00000 0.500000 0.20)' [sRGB color with unnecessary decimals\]] + expected: FAIL + + [Property color value 'color(srgb 1 1 1 / 0.5)' [sRGB white with 0.5 alpha\]] + expected: FAIL + + [Property color value 'color(srgb 1 1 1 / 0)' [sRGB white with 0 alpha\]] + expected: FAIL + + [Property color value 'color(srgb 1 1 1 / 50%)' [sRGB white with 50% alpha\]] + expected: FAIL + + [Property color value 'color(srgb 1 1 1 / 0%)' [sRGB white with 0% alpha\]] + expected: FAIL + + [Property color value 'color(srgb 1 1)' [One missing component is 0\]] + expected: FAIL + + [Property color value 'color(srgb 1)' [Two missing components are 0\]] + expected: FAIL + + [Property color value 'color(srgb)' [All components missing\]] + expected: FAIL + + [Property color value 'color(display-p3 0.6 0.7 0.8)' [Display P3 color\]] + expected: FAIL + + [Property color value 'color(dIspLaY-P3 0.6 0.7 0.8)' [Different case for Display P3\]] + expected: FAIL + + [Property color value 'color(srgb -0.25 0.5 0.75)' [sRGB color with negative component should not clamp to 0\]] + expected: FAIL + + [Property color value 'color(srgb 0.25 1.5 0.75)' [sRGB color with component > 1 should not clamp\]] + expected: FAIL + + [Property color value 'color(display-p3 0.5 -199 0.75)' [Display P3 color with negative component should not clamp to 0\]] + expected: FAIL + + [Property color value 'color(display-p3 184 1.00001 2347329746587)' [Display P3 color with component > 1 should not clamp\]] + expected: FAIL + + [Property color value 'color(srgb 0.1 0.2 0.3 / 1.9)' [Alpha > 1 should clamp\]] + expected: FAIL + + [Property color value 'color(srgb 1 1 1 / -0.2)' [Negative alpha should clamp\]] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-color-mix-function.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-color-mix-function.html.ini new file mode 100644 index 00000000000..7c1963394f6 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-color-mix-function.html.ini @@ -0,0 +1,1422 @@ +[color-computed-color-mix-function.html] + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20%), hsl(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20%) 25%, hsl(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, 25% hsl(120deg 10% 20%), hsl(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20%), 25% hsl(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20%), hsl(30deg 30% 40%) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20%) 25%, hsl(30deg 30% 40%) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20%) 30%, hsl(30deg 30% 40%) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20%) 12.5%, hsl(30deg 30% 40%) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20%) 0%, hsl(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20% / .4), hsl(30deg 30% 40% / .8))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20%) 25%, hsl(30deg 30% 40% / .8))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, 25% hsl(120deg 10% 20% / .4), hsl(30deg 30% 40% / .8))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20% / .4), 25% hsl(30deg 30% 40% / .8))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20% / .4), hsl(30deg 30% 40% / .8) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20% / .4) 25%, hsl(30deg 30% 40% / .8) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20% / .4) 30%, hsl(30deg 30% 40% / .8) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20% / .4) 12.5%, hsl(30deg 30% 40% / .8) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 10% 20% / .4) 0%, hsl(30deg 30% 40% / .8))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(40deg 50% 50%), hsl(60deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(60deg 50% 50%), hsl(40deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(50deg 50% 50%), hsl(330deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(330deg 50% 50%), hsl(50deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(20deg 50% 50%), hsl(320deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(320deg 50% 50%), hsl(20deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl shorter hue, hsl(40deg 50% 50%), hsl(60deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl shorter hue, hsl(60deg 50% 50%), hsl(40deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl shorter hue, hsl(50deg 50% 50%), hsl(330deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl shorter hue, hsl(330deg 50% 50%), hsl(50deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl shorter hue, hsl(20deg 50% 50%), hsl(320deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl shorter hue, hsl(320deg 50% 50%), hsl(20deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl longer hue, hsl(40deg 50% 50%), hsl(60deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl longer hue, hsl(60deg 50% 50%), hsl(40deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl longer hue, hsl(50deg 50% 50%), hsl(330deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl longer hue, hsl(330deg 50% 50%), hsl(50deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl longer hue, hsl(20deg 50% 50%), hsl(320deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl longer hue, hsl(320deg 50% 50%), hsl(20deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl increasing hue, hsl(40deg 50% 50%), hsl(60deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl increasing hue, hsl(60deg 50% 50%), hsl(40deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl increasing hue, hsl(50deg 50% 50%), hsl(330deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl increasing hue, hsl(330deg 50% 50%), hsl(50deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl increasing hue, hsl(20deg 50% 50%), hsl(320deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl increasing hue, hsl(320deg 50% 50%), hsl(20deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl decreasing hue, hsl(40deg 50% 50%), hsl(60deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl decreasing hue, hsl(60deg 50% 50%), hsl(40deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl decreasing hue, hsl(50deg 50% 50%), hsl(330deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl decreasing hue, hsl(330deg 50% 50%), hsl(50deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl decreasing hue, hsl(20deg 50% 50%), hsl(320deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl decreasing hue, hsl(320deg 50% 50%), hsl(20deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl specified hue, hsl(40deg 50% 50%), hsl(60deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl specified hue, hsl(60deg 50% 50%), hsl(40deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl specified hue, hsl(50deg 50% 50%), hsl(330deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl specified hue, hsl(330deg 50% 50%), hsl(50deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl specified hue, hsl(20deg 50% 50%), hsl(320deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl specified hue, hsl(320deg 50% 50%), hsl(20deg 50% 50%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(none none none), hsl(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(none none none), hsl(30deg 40% 80%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 20% 40%), hsl(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 20% none), hsl(30deg 40% 60%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 20% 40%), hsl(30deg 20% none))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(none 20% 40%), hsl(30deg none 80%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 40% 40% / none), hsl(0deg 40% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 40% 40% / none), hsl(0deg 40% 40% / 0.5))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, hsl(120deg 40% 40% / none), hsl(0deg 40% 40% / none))'] + expected: FAIL + + [Property color value 'color-mix(in hsl, color(display-p3 0 1 0) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, lab(100 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, lab(0 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, lch(100 116 334) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, lch(0 116 334) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, oklab(100 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, oklab(0 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, oklch(100 0.399 336.3) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hsl, oklch(0 0.399 336.3) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20%), hwb(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20%) 25%, hwb(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, 25% hwb(120deg 10% 20%), hwb(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20%), 25% hwb(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20%), hwb(30deg 30% 40%) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20%) 25%, hwb(30deg 30% 40%) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20%) 30%, hwb(30deg 30% 40%) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20%) 12.5%, hwb(30deg 30% 40%) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20%) 0%, hwb(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20% / .4), hwb(30deg 30% 40% / .8))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20% / .4) 25%, hwb(30deg 30% 40% / .8))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, 25% hwb(120deg 10% 20% / .4), hwb(30deg 30% 40% / .8))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20%), 25% hwb(30deg 30% 40% / .8))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20% / .4), hwb(30deg 30% 40% / .8) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20% / .4) 25%, hwb(30deg 30% 40% / .8) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20% / .4) 30%, hwb(30deg 30% 40% / .8) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20% / .4) 12.5%, hwb(30deg 30% 40% / .8) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20% / .4) 0%, hwb(30deg 30% 40% / .8))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(40deg 30% 40%), hwb(60deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(60deg 30% 40%), hwb(40deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(50deg 30% 40%), hwb(330deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(330deg 30% 40%), hwb(50deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(20deg 30% 40%), hwb(320deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(320deg 30% 40%), hwb(20deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb shorter hue, hwb(40deg 30% 40%), hwb(60deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb shorter hue, hwb(60deg 30% 40%), hwb(40deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb shorter hue, hwb(50deg 30% 40%), hwb(330deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb shorter hue, hwb(330deg 30% 40%), hwb(50deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb shorter hue, hwb(20deg 30% 40%), hwb(320deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb shorter hue, hwb(320deg 30% 40%), hwb(20deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb longer hue, hwb(40deg 30% 40%), hwb(60deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb longer hue, hwb(60deg 30% 40%), hwb(40deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb longer hue, hwb(50deg 30% 40%), hwb(330deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb longer hue, hwb(330deg 30% 40%), hwb(50deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb longer hue, hwb(20deg 30% 40%), hwb(320deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb longer hue, hwb(320deg 30% 40%), hwb(20deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb increasing hue, hwb(40deg 30% 40%), hwb(60deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb increasing hue, hwb(60deg 30% 40%), hwb(40deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb increasing hue, hwb(50deg 30% 40%), hwb(330deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb increasing hue, hwb(330deg 30% 40%), hwb(50deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb increasing hue, hwb(20deg 30% 40%), hwb(320deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb increasing hue, hwb(320deg 30% 40%), hwb(20deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb decreasing hue, hwb(40deg 30% 40%), hwb(60deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb decreasing hue, hwb(60deg 30% 40%), hwb(40deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb decreasing hue, hwb(50deg 30% 40%), hwb(330deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb decreasing hue, hwb(330deg 30% 40%), hwb(50deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb decreasing hue, hwb(20deg 30% 40%), hwb(320deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb decreasing hue, hwb(320deg 30% 40%), hwb(20deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb specified hue, hwb(40deg 30% 40%), hwb(60deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb specified hue, hwb(60deg 30% 40%), hwb(40deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb specified hue, hwb(50deg 30% 40%), hwb(330deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb specified hue, hwb(330deg 30% 40%), hwb(50deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb specified hue, hwb(20deg 30% 40%), hwb(320deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb specified hue, hwb(320deg 30% 40%), hwb(20deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(none none none), hwb(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(none none none), hwb(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20%), hwb(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% none), hwb(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20%), hwb(30deg 30% none))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(none 10% 20%), hwb(30deg none 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20% / none), hwb(30deg 30% 40%))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20% / none), hwb(30deg 30% 40% / 0.5))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, hwb(120deg 10% 20% / none), hwb(30deg 30% 40% / none))'] + expected: FAIL + + [Property color value 'color-mix(in hwb, color(display-p3 0 1 0) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, lab(100 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, lab(0 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, lch(100 116 334) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, lch(0 116 334) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, oklab(100 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, oklab(0 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, oklch(100 0.399 336.3) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in hwb, oklch(0 0.399 336.3) 100%, rgb(0, 0, 0) 0%)'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg), lch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg) 25%, lch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, 25% lch(10 20 30deg), lch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg), 25% lch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg), lch(50 60 70deg) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg) 25%, lch(50 60 70deg) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg) 30%, lch(50 60 70deg) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg) 12.5%, lch(50 60 70deg) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg) 0%, lch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg / .4), lch(50 60 70deg / .8))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg / .4) 25%, lch(50 60 70deg / .8))'] + expected: FAIL + + [Property color value 'color-mix(in lch, 25% lch(10 20 30deg / .4), lch(50 60 70deg / .8))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg / .4), 25% lch(50 60 70deg / .8))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg / .4), lch(50 60 70deg / .8) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg / .4) 25%, lch(50 60 70deg / .8) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg / .4) 30%, lch(50 60 70deg / .8) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg / .4) 12.5%, lch(50 60 70deg / .8) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg / .4) 0%, lch(50 60 70deg / .8))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(100 0 40deg), lch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(100 0 60deg), lch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(100 0 50deg), lch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(100 0 330deg), lch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(100 0 20deg), lch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(100 0 320deg), lch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch shorter hue, lch(100 0 40deg), lch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch shorter hue, lch(100 0 60deg), lch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch shorter hue, lch(100 0 50deg), lch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch shorter hue, lch(100 0 330deg), lch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch shorter hue, lch(100 0 20deg), lch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch shorter hue, lch(100 0 320deg), lch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch longer hue, lch(100 0 40deg), lch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch longer hue, lch(100 0 60deg), lch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch longer hue, lch(100 0 50deg), lch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch longer hue, lch(100 0 330deg), lch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch longer hue, lch(100 0 20deg), lch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch longer hue, lch(100 0 320deg), lch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch increasing hue, lch(100 0 40deg), lch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch increasing hue, lch(100 0 60deg), lch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch increasing hue, lch(100 0 50deg), lch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch increasing hue, lch(100 0 330deg), lch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch increasing hue, lch(100 0 20deg), lch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch increasing hue, lch(100 0 320deg), lch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch decreasing hue, lch(100 0 40deg), lch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch decreasing hue, lch(100 0 60deg), lch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch decreasing hue, lch(100 0 50deg), lch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch decreasing hue, lch(100 0 330deg), lch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch decreasing hue, lch(100 0 20deg), lch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch decreasing hue, lch(100 0 320deg), lch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch specified hue, lch(100 0 40deg), lch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch specified hue, lch(100 0 60deg), lch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch specified hue, lch(100 0 50deg), lch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch specified hue, lch(100 0 330deg), lch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch specified hue, lch(100 0 20deg), lch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch specified hue, lch(100 0 320deg), lch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(none none none), lch(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(none none none), lch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg), lch(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 none), lch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg), lch(50 60 none))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(none 20 30deg), lch(50 none 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg / none), lch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg / none), lch(50 60 70deg / 0.5))'] + expected: FAIL + + [Property color value 'color-mix(in lch, lch(10 20 30deg / none), lch(50 60 70deg / none))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg), oklch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg) 25%, oklch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, 25% oklch(10 20 30deg), oklch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg), 25% oklch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg), oklch(50 60 70deg) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg) 25%, oklch(50 60 70deg) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg) 30%, oklch(50 60 70deg) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg) 12.5%, oklch(50 60 70deg) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg) 0%, oklch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg / .4), oklch(50 60 70deg / .8))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg / .4) 25%, oklch(50 60 70deg / .8))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, 25% oklch(10 20 30deg / .4), oklch(50 60 70deg / .8))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg / .4), 25% oklch(50 60 70deg / .8))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg / .4), oklch(50 60 70deg / .8) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg / .4) 25%, oklch(50 60 70deg / .8) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg / .4) 30%, oklch(50 60 70deg / .8) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg / .4) 12.5%, oklch(50 60 70deg / .8) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg / .4) 0%, oklch(50 60 70deg / .8))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(100 0 40deg), oklch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(100 0 60deg), oklch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(100 0 50deg), oklch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(100 0 330deg), oklch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(100 0 20deg), oklch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(100 0 320deg), oklch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch shorter hue, oklch(100 0 40deg), oklch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch shorter hue, oklch(100 0 60deg), oklch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch shorter hue, oklch(100 0 50deg), oklch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch shorter hue, oklch(100 0 330deg), oklch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch shorter hue, oklch(100 0 20deg), oklch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch shorter hue, oklch(100 0 320deg), oklch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch longer hue, oklch(100 0 40deg), oklch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch longer hue, oklch(100 0 60deg), oklch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch longer hue, oklch(100 0 50deg), oklch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch longer hue, oklch(100 0 330deg), oklch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch longer hue, oklch(100 0 20deg), oklch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch longer hue, oklch(100 0 320deg), oklch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch increasing hue, oklch(100 0 40deg), oklch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch increasing hue, oklch(100 0 60deg), oklch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch increasing hue, oklch(100 0 50deg), oklch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch increasing hue, oklch(100 0 330deg), oklch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch increasing hue, oklch(100 0 20deg), oklch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch increasing hue, oklch(100 0 320deg), oklch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch decreasing hue, oklch(100 0 40deg), oklch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch decreasing hue, oklch(100 0 60deg), oklch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch decreasing hue, oklch(100 0 50deg), oklch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch decreasing hue, oklch(100 0 330deg), oklch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch decreasing hue, oklch(100 0 20deg), oklch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch decreasing hue, oklch(100 0 320deg), oklch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch specified hue, oklch(100 0 40deg), oklch(100 0 60deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch specified hue, oklch(100 0 60deg), oklch(100 0 40deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch specified hue, oklch(100 0 50deg), oklch(100 0 330deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch specified hue, oklch(100 0 330deg), oklch(100 0 50deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch specified hue, oklch(100 0 20deg), oklch(100 0 320deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch specified hue, oklch(100 0 320deg), oklch(100 0 20deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(none none none), oklch(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(none none none), oklch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg), oklch(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 none), oklch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg), oklch(50 60 none))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(none 20 30deg), oklch(50 none 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg / none), oklch(50 60 70deg))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg / none), oklch(50 60 70deg / 0.5))'] + expected: FAIL + + [Property color value 'color-mix(in oklch, oklch(10 20 30deg / none), oklch(50 60 70deg / none))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30), lab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30) 25%, lab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in lab, 25% lab(10 20 30), lab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30), 25% lab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30), lab(50 60 70) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30) 25%, lab(50 60 70) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30) 30%, lab(50 60 70) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30) 12.5%, lab(50 60 70) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30) 0%, lab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30 / .4), lab(50 60 70 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30 / .4) 25%, lab(50 60 70 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in lab, 25% lab(10 20 30 / .4), lab(50 60 70 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30 / .4), 25% lab(50 60 70 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30 / .4), lab(50 60 70 / .8) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30 / .4) 25%, lab(50 60 70 / .8) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30 / .4) 30%, lab(50 60 70 / .8) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30 / .4) 12.5%, lab(50 60 70 / .8) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30 / .4) 0%, lab(50 60 70 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(none none none), lab(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(none none none), lab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30), lab(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 none), lab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30), lab(50 60 none))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(none 20 30), lab(50 none 70))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30 / none), lab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30 / none), lab(50 60 70 / 0.5))'] + expected: FAIL + + [Property color value 'color-mix(in lab, lab(10 20 30 / none), lab(50 60 70 / none))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30), oklab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30) 25%, oklab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, 25% oklab(10 20 30), oklab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30), 25% oklab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30), oklab(50 60 70) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30) 25%, oklab(50 60 70) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30) 30%, oklab(50 60 70) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30) 12.5%, oklab(50 60 70) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30) 0%, oklab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30 / .4), oklab(50 60 70 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30 / .4) 25%, oklab(50 60 70 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, 25% oklab(10 20 30 / .4), oklab(50 60 70 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30 / .4), 25% oklab(50 60 70 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30 / .4), oklab(50 60 70 / .8) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30 / .4) 25%, oklab(50 60 70 / .8) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30 / .4) 30%, oklab(50 60 70 / .8) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30 / .4) 12.5%, oklab(50 60 70 / .8) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30 / .4) 0%, oklab(50 60 70 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(none none none), oklab(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(none none none), oklab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30), oklab(none none none))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 none), oklab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30), oklab(50 60 none))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(none 20 30), oklab(50 none 70))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30 / none), oklab(50 60 70))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30 / none), oklab(50 60 70 / 0.5))'] + expected: FAIL + + [Property color value 'color-mix(in oklab, oklab(10 20 30 / none), oklab(50 60 70 / none))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3), color(srgb .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3) 25%, color(srgb .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, 25% color(srgb .1 .2 .3), color(srgb .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3), color(srgb .5 .6 .7) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3), 25% color(srgb .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3) 25%, color(srgb .5 .6 .7) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3) 30%, color(srgb .5 .6 .7) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3) 12.5%, color(srgb .5 .6 .7) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3) 0%, color(srgb .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3 / .5), color(srgb .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3 / .4) 25%, color(srgb .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, 25% color(srgb .1 .2 .3 / .4), color(srgb .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3 / .4), color(srgb .5 .6 .7 / .8) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3 / .4), 25% color(srgb .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3 / .4) 25%, color(srgb .5 .6 .7 / .8) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3 / .4) 30%, color(srgb .5 .6 .7 / .8) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3 / .4) 12.5%, color(srgb .5 .6 .7 / .8) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3 / .4) 0%, color(srgb .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb 2 3 4 / 5), color(srgb 4 6 8 / 10))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb -2 -3 -4), color(srgb -4 -6 -8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb -2 -3 -4 / -5), color(srgb -4 -6 -8 / -10))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb none none none), color(srgb none none none))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb none none none), color(srgb .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3), color(srgb none none none))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 none), color(srgb .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3), color(srgb .5 .6 none))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb none .2 .3), color(srgb .5 none .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3 / none), color(srgb .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3 / none), color(srgb .5 .6 .7 / 0.5))'] + expected: FAIL + + [Property color value 'color-mix(in srgb, color(srgb .1 .2 .3 / none), color(srgb .5 .6 .7 / none))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3), color(srgb-linear .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3) 25%, color(srgb-linear .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, 25% color(srgb-linear .1 .2 .3), color(srgb-linear .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3), color(srgb-linear .5 .6 .7) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3), 25% color(srgb-linear .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3) 25%, color(srgb-linear .5 .6 .7) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3) 30%, color(srgb-linear .5 .6 .7) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3) 12.5%, color(srgb-linear .5 .6 .7) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3) 0%, color(srgb-linear .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .5), color(srgb-linear .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4) 25%, color(srgb-linear .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, 25% color(srgb-linear .1 .2 .3 / .4), color(srgb-linear .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4), color(srgb-linear .5 .6 .7 / .8) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4), 25% color(srgb-linear .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4) 25%, color(srgb-linear .5 .6 .7 / .8) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4) 30%, color(srgb-linear .5 .6 .7 / .8) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4) 12.5%, color(srgb-linear .5 .6 .7 / .8) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4) 0%, color(srgb-linear .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear 2 3 4 / 5), color(srgb-linear 4 6 8 / 10))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear -2 -3 -4), color(srgb-linear -4 -6 -8))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear -2 -3 -4 / -5), color(srgb-linear -4 -6 -8 / -10))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear none none none), color(srgb-linear none none none))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear none none none), color(srgb-linear .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3), color(srgb-linear none none none))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 none), color(srgb-linear .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3), color(srgb-linear .5 .6 none))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear none .2 .3), color(srgb-linear .5 none .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / none), color(srgb-linear .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / none), color(srgb-linear .5 .6 .7 / 0.5))'] + expected: FAIL + + [Property color value 'color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / none), color(srgb-linear .5 .6 .7 / none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3), color(xyz .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3) 25%, color(xyz .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, 25% color(xyz .1 .2 .3), color(xyz .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3), color(xyz .5 .6 .7) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3), 25% color(xyz .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3) 25%, color(xyz .5 .6 .7) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3) 30%, color(xyz .5 .6 .7) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3) 12.5%, color(xyz .5 .6 .7) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3) 0%, color(xyz .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3 / .5), color(xyz .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3 / .4) 25%, color(xyz .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, 25% color(xyz .1 .2 .3 / .4), color(xyz .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3 / .4), color(xyz .5 .6 .7 / .8) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3 / .4), 25% color(xyz .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3 / .4) 25%, color(xyz .5 .6 .7 / .8) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3 / .4) 30%, color(xyz .5 .6 .7 / .8) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3 / .4) 12.5%, color(xyz .5 .6 .7 / .8) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3 / .4) 0%, color(xyz .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz 2 3 4 / 5), color(xyz 4 6 8 / 10))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz -2 -3 -4), color(xyz -4 -6 -8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz -2 -3 -4 / -5), color(xyz -4 -6 -8 / -10))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz none none none), color(xyz none none none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz none none none), color(xyz .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3), color(xyz none none none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 none), color(xyz .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3), color(xyz .5 .6 none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz none .2 .3), color(xyz .5 none .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3 / none), color(xyz .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3 / none), color(xyz .5 .6 .7 / 0.5))'] + expected: FAIL + + [Property color value 'color-mix(in xyz, color(xyz .1 .2 .3 / none), color(xyz .5 .6 .7 / none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3), color(xyz-d50 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3) 25%, color(xyz-d50 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, 25% color(xyz-d50 .1 .2 .3), color(xyz-d50 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3), color(xyz-d50 .5 .6 .7) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3), 25% color(xyz-d50 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3) 25%, color(xyz-d50 .5 .6 .7) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3) 30%, color(xyz-d50 .5 .6 .7) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3) 12.5%, color(xyz-d50 .5 .6 .7) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3) 0%, color(xyz-d50 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .5), color(xyz-d50 .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4) 25%, color(xyz-d50 .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, 25% color(xyz-d50 .1 .2 .3 / .4), color(xyz-d50 .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4), color(xyz-d50 .5 .6 .7 / .8) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4), 25% color(xyz-d50 .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4) 25%, color(xyz-d50 .5 .6 .7 / .8) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4) 30%, color(xyz-d50 .5 .6 .7 / .8) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4) 12.5%, color(xyz-d50 .5 .6 .7 / .8) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4) 0%, color(xyz-d50 .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 2 3 4 / 5), color(xyz-d50 4 6 8 / 10))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 -2 -3 -4), color(xyz-d50 -4 -6 -8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 -2 -3 -4 / -5), color(xyz-d50 -4 -6 -8 / -10))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 none none none), color(xyz-d50 none none none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 none none none), color(xyz-d50 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3), color(xyz-d50 none none none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 none), color(xyz-d50 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3), color(xyz-d50 .5 .6 none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 none .2 .3), color(xyz-d50 .5 none .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / none), color(xyz-d50 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / none), color(xyz-d50 .5 .6 .7 / 0.5))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / none), color(xyz-d50 .5 .6 .7 / none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3), color(xyz-d65 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3) 25%, color(xyz-d65 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, 25% color(xyz-d65 .1 .2 .3), color(xyz-d65 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3), color(xyz-d65 .5 .6 .7) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3), 25% color(xyz-d65 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3) 25%, color(xyz-d65 .5 .6 .7) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3) 30%, color(xyz-d65 .5 .6 .7) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3) 12.5%, color(xyz-d65 .5 .6 .7) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3) 0%, color(xyz-d65 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .5), color(xyz-d65 .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4) 25%, color(xyz-d65 .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, 25% color(xyz-d65 .1 .2 .3 / .4), color(xyz-d65 .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4), color(xyz-d65 .5 .6 .7 / .8) 25%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4), 25% color(xyz-d65 .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4) 25%, color(xyz-d65 .5 .6 .7 / .8) 75%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4) 30%, color(xyz-d65 .5 .6 .7 / .8) 90%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4) 12.5%, color(xyz-d65 .5 .6 .7 / .8) 37.5%)'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4) 0%, color(xyz-d65 .5 .6 .7 / .8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 2 3 4 / 5), color(xyz-d65 4 6 8 / 10))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 -2 -3 -4), color(xyz-d65 -4 -6 -8))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 -2 -3 -4 / -5), color(xyz-d65 -4 -6 -8 / -10))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 none none none), color(xyz-d65 none none none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 none none none), color(xyz-d65 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3), color(xyz-d65 none none none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 none), color(xyz-d65 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3), color(xyz-d65 .5 .6 none))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 none .2 .3), color(xyz-d65 .5 none .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / none), color(xyz-d65 .5 .6 .7))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / none), color(xyz-d65 .5 .6 .7 / 0.5))'] + expected: FAIL + + [Property color value 'color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / none), color(xyz-d65 .5 .6 .7 / none))'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-hsl.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-hsl.html.ini new file mode 100644 index 00000000000..011d5acef2c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-hsl.html.ini @@ -0,0 +1,27 @@ +[color-computed-hsl.html] + [Property color value 'hsl(none none none)'] + expected: FAIL + + [Property color value 'hsl(none none none / none)'] + expected: FAIL + + [Property color value 'hsla(none none none)'] + expected: FAIL + + [Property color value 'hsla(none none none / none)'] + expected: FAIL + + [Property color value 'hsl(120 none none)'] + expected: FAIL + + [Property color value 'hsl(120 80% none)'] + expected: FAIL + + [Property color value 'hsl(120 none 50%)'] + expected: FAIL + + [Property color value 'hsl(120 100% 50% / none)'] + expected: FAIL + + [Property color value 'hsl(none 100% 50%)'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-hwb.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-hwb.html.ini new file mode 100644 index 00000000000..9c148f3b56e --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-hwb.html.ini @@ -0,0 +1,21 @@ +[color-computed-hwb.html] + [Property color value 'hwb(none none none)'] + expected: FAIL + + [Property color value 'hwb(none none none / none)'] + expected: FAIL + + [Property color value 'hwb(120 none none)'] + expected: FAIL + + [Property color value 'hwb(120 80% none)'] + expected: FAIL + + [Property color value 'hwb(120 none 50%)'] + expected: FAIL + + [Property color value 'hwb(120 30% 50% / none)'] + expected: FAIL + + [Property color value 'hwb(none 100% 50% / none)'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-lab.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-lab.html.ini new file mode 100644 index 00000000000..60d3ed90fd9 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-lab.html.ini @@ -0,0 +1,276 @@ +[color-computed-lab.html] + [Property color value 'lab(0 0 0)'] + expected: FAIL + + [Property color value 'lab(0 0 0 / 1)'] + expected: FAIL + + [Property color value 'lab(0 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'lab(20 0 10/0.5)'] + expected: FAIL + + [Property color value 'lab(20 0 10/50%)'] + expected: FAIL + + [Property color value 'lab(400 0 10/50%)'] + expected: FAIL + + [Property color value 'lab(50 -160 160)'] + expected: FAIL + + [Property color value 'lab(50 -200 200)'] + expected: FAIL + + [Property color value 'lab(0 0 0 / -10%)'] + expected: FAIL + + [Property color value 'lab(0 0 0 / 110%)'] + expected: FAIL + + [Property color value 'lab(0 0 0 / 300%)'] + expected: FAIL + + [Property color value 'lab(-40 0 0)'] + expected: FAIL + + [Property color value 'lab(50 -20 0)'] + expected: FAIL + + [Property color value 'lab(50 0 -20)'] + expected: FAIL + + [Property color value 'lab(calc(50 * 3) calc(0.5 - 1) calc(1.5) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'lab(calc(-50 * 3) calc(0.5 + 1) calc(-1.5) / calc(-0.5 * 2))'] + expected: FAIL + + [Property color value 'lab(none none none / none)'] + expected: FAIL + + [Property color value 'lab(none none none)'] + expected: FAIL + + [Property color value 'lab(20 none none / none)'] + expected: FAIL + + [Property color value 'lab(none none none / 0.5)'] + expected: FAIL + + [Property color value 'lab(0 0 0 / none)'] + expected: FAIL + + [Property color value 'oklab(0 0 0)'] + expected: FAIL + + [Property color value 'oklab(0 0 0 / 1)'] + expected: FAIL + + [Property color value 'oklab(0 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'oklab(20 0 10/0.5)'] + expected: FAIL + + [Property color value 'oklab(20 0 10/50%)'] + expected: FAIL + + [Property color value 'oklab(400 0 10/50%)'] + expected: FAIL + + [Property color value 'oklab(50 -160 160)'] + expected: FAIL + + [Property color value 'oklab(50 -200 200)'] + expected: FAIL + + [Property color value 'oklab(0 0 0 / -10%)'] + expected: FAIL + + [Property color value 'oklab(0 0 0 / 110%)'] + expected: FAIL + + [Property color value 'oklab(0 0 0 / 300%)'] + expected: FAIL + + [Property color value 'oklab(-40 0 0)'] + expected: FAIL + + [Property color value 'oklab(50 -20 0)'] + expected: FAIL + + [Property color value 'oklab(50 0 -20)'] + expected: FAIL + + [Property color value 'oklab(calc(50 * 3) calc(0.5 - 1) calc(1.5) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'oklab(calc(-50 * 3) calc(0.5 + 1) calc(-1.5) / calc(-0.5 * 2))'] + expected: FAIL + + [Property color value 'oklab(none none none / none)'] + expected: FAIL + + [Property color value 'oklab(none none none)'] + expected: FAIL + + [Property color value 'oklab(20 none none / none)'] + expected: FAIL + + [Property color value 'oklab(none none none / 0.5)'] + expected: FAIL + + [Property color value 'oklab(0 0 0 / none)'] + expected: FAIL + + [Property color value 'lch(0 0 0deg)'] + expected: FAIL + + [Property color value 'lch(0 0 0deg / 1)'] + expected: FAIL + + [Property color value 'lch(0 0 0deg / 0.5)'] + expected: FAIL + + [Property color value 'lch(100 230 0deg / 0.5)'] + expected: FAIL + + [Property color value 'lch(20 50 20deg/0.5)'] + expected: FAIL + + [Property color value 'lch(20 50 20deg/50%)'] + expected: FAIL + + [Property color value 'lch(10 20 20deg / -10%)'] + expected: FAIL + + [Property color value 'lch(10 20 20deg / 110%)'] + expected: FAIL + + [Property color value 'lch(10 20 1.28rad)'] + expected: FAIL + + [Property color value 'lch(10 20 380deg)'] + expected: FAIL + + [Property color value 'lch(10 20 -340deg)'] + expected: FAIL + + [Property color value 'lch(10 20 740deg)'] + expected: FAIL + + [Property color value 'lch(10 20 -700deg)'] + expected: FAIL + + [Property color value 'lch(-40 0 0)'] + expected: FAIL + + [Property color value 'lch(20 -20 0)'] + expected: FAIL + + [Property color value 'lch(0 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'lch(10 20 20 / 110%)'] + expected: FAIL + + [Property color value 'lch(10 20 -700)'] + expected: FAIL + + [Property color value 'lch(calc(50 * 3) calc(0.5 - 1) calc(20deg * 2) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'lch(calc(-50 * 3) calc(0.5 + 1) calc(-20deg * 2) / calc(-0.5 * 2))'] + expected: FAIL + + [Property color value 'lch(none none none / none)'] + expected: FAIL + + [Property color value 'lch(none none none)'] + expected: FAIL + + [Property color value 'lch(20 none none / none)'] + expected: FAIL + + [Property color value 'lch(none none none / 0.5)'] + expected: FAIL + + [Property color value 'lch(0 0 0 / none)'] + expected: FAIL + + [Property color value 'oklch(0 0 0deg)'] + expected: FAIL + + [Property color value 'oklch(0 0 0deg / 1)'] + expected: FAIL + + [Property color value 'oklch(0 0 0deg / 0.5)'] + expected: FAIL + + [Property color value 'oklch(100 230 0deg / 0.5)'] + expected: FAIL + + [Property color value 'oklch(20 50 20deg/0.5)'] + expected: FAIL + + [Property color value 'oklch(20 50 20deg/50%)'] + expected: FAIL + + [Property color value 'oklch(10 20 20deg / -10%)'] + expected: FAIL + + [Property color value 'oklch(10 20 20deg / 110%)'] + expected: FAIL + + [Property color value 'oklch(10 20 1.28rad)'] + expected: FAIL + + [Property color value 'oklch(10 20 380deg)'] + expected: FAIL + + [Property color value 'oklch(10 20 -340deg)'] + expected: FAIL + + [Property color value 'oklch(10 20 740deg)'] + expected: FAIL + + [Property color value 'oklch(10 20 -700deg)'] + expected: FAIL + + [Property color value 'oklch(-40 0 0)'] + expected: FAIL + + [Property color value 'oklch(20 -20 0)'] + expected: FAIL + + [Property color value 'oklch(0 0 0 / 0.5)'] + expected: FAIL + + [Property color value 'oklch(10 20 20 / 110%)'] + expected: FAIL + + [Property color value 'oklch(10 20 -700)'] + expected: FAIL + + [Property color value 'oklch(calc(50 * 3) calc(0.5 - 1) calc(20deg * 2) / calc(-0.5 + 1))'] + expected: FAIL + + [Property color value 'oklch(calc(-50 * 3) calc(0.5 + 1) calc(-20deg * 2) / calc(-0.5 * 2))'] + expected: FAIL + + [Property color value 'oklch(none none none / none)'] + expected: FAIL + + [Property color value 'oklch(none none none)'] + expected: FAIL + + [Property color value 'oklch(20 none none / none)'] + expected: FAIL + + [Property color value 'oklch(none none none / 0.5)'] + expected: FAIL + + [Property color value 'oklch(0 0 0 / none)'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-relative-color.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-relative-color.html.ini new file mode 100644 index 00000000000..45682f1413d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-relative-color.html.ini @@ -0,0 +1,2883 @@ +[color-computed-relative-color.html] + [Property color value 'rgb(from rebeccapurple r g b)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r g b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r g b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from hsl(120deg 20% 50% / .5) r g b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(from rebeccapurple r g b) r g b)'] + expected: FAIL + + [Property color value 'rgb(from color(display-p3 0 1 0) r g b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from lab(100 104.3 -50.9) r g b)'] + expected: FAIL + + [Property color value 'rgb(from lab(0 104.3 -50.9) r g b)'] + expected: FAIL + + [Property color value 'rgb(from lch(100 116 334) r g b)'] + expected: FAIL + + [Property color value 'rgb(from lch(0 116 334) r g b)'] + expected: FAIL + + [Property color value 'rgb(from oklab(100 0.365 -0.16) r g b)'] + expected: FAIL + + [Property color value 'rgb(from oklab(0 0.365 -0.16) r g b)'] + expected: FAIL + + [Property color value 'rgb(from oklch(100 0.399 336.3) r g b)'] + expected: FAIL + + [Property color value 'rgb(from oklch(0 0.399 336.3) r g b)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple 0 0 0)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple 0 g b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r 0 b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r g 0 / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r g b / 0)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) 0 g b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r 0 b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r g 0 / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r g b / 0)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple 25 g b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r 25 b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r g 25 / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r g b / .25)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) 25 g b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r 25 b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r g 25 / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r g b / .20)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple 20% g b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r 20% b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r g 20% / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r g b / 20%)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) 20% g b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r 20% b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r g 20% / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r g b / 20%)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple 25 g b / 25%)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r 25 b / 25%)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r g 25 / 25%)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) 25 g b / 25%)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r 25 b / 25%)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r g 25 / 25%)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple g b r)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple b alpha r / g)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r r r / r)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) g b r)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) b alpha r / g)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r r r / r)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r 20% 10)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r 10 20%)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple 0% 10 10)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r 20% 10)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) r 10 20%)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) 0% 10 10)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple calc(r) calc(g) calc(b))'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r calc(g * 2) 10)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple b calc(r * .5) 10)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r calc(g * .5 + g * .5) 10)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r calc(b * .5 - g * .5) 10)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20%, 40%, 60%, 80%) calc(r) calc(g) calc(b) / calc(alpha))'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple none none none)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple none none none / none)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r g none)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r g none / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rebeccapurple r g b / none)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20% 40% 60% / 80%) r g none / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20% 40% 60% / 80%) r g b / none)'] + expected: FAIL + + [Property color value 'rgb(from rgb(none none none) r g b)'] + expected: FAIL + + [Property color value 'rgb(from rgb(none none none / none) r g b / alpha)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20% none 60%) r g b)'] + expected: FAIL + + [Property color value 'rgb(from rgb(20% 40% 60% / none) r g b / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h s l)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) h s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from hsl(120deg 20% 50% / .5) h s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from hsl(from rebeccapurple h s l) h s l)'] + expected: FAIL + + [Property color value 'hsl(from color(display-p3 0 1 0) h s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from lab(100 104.3 -50.9) h s l)'] + expected: FAIL + + [Property color value 'hsl(from lab(0 104.3 -50.9) h s l)'] + expected: FAIL + + [Property color value 'hsl(from lch(100 116 334) h s l)'] + expected: FAIL + + [Property color value 'hsl(from lch(0 116 334) h s l)'] + expected: FAIL + + [Property color value 'hsl(from oklab(100 0.365 -0.16) h s l)'] + expected: FAIL + + [Property color value 'hsl(from oklab(0 0.365 -0.16) h s l)'] + expected: FAIL + + [Property color value 'hsl(from oklch(100 0.399 336.3) h s l)'] + expected: FAIL + + [Property color value 'hsl(from oklch(0 0.399 336.3) h s l)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple 0 0% 0%)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple 0deg 0% 0%)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple 0 0% 0% / 0)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple 0deg 0% 0% / 0)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple 0 s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple 0deg s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h 0% l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h s 0% / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h s l / 0)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) 0 s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) 0deg s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) h 0% l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) h s 0% / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) h s l / 0)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple 25 s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple 25deg s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h 20% l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h s 20% / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h s l / .25)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) 25 s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) 25deg s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) h 20% l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) h s 20% / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) h s l / .2)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h l s)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h alpha l / s)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h l l / l)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) h l s)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) h alpha l / s)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) h l l / l)'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) h alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple calc(h) calc(s) calc(l))'] + expected: FAIL + + [Property color value 'hsl(from rgb(20%, 40%, 60%, 80%) calc(h) calc(s) calc(l) / calc(alpha))'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple none none none)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple none none none / none)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h s none)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h s none / alpha)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple h s l / none)'] + expected: FAIL + + [Property color value 'hsl(from rebeccapurple none s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from hsl(120deg 20% 50% / .5) h s none / alpha)'] + expected: FAIL + + [Property color value 'hsl(from hsl(120deg 20% 50% / .5) h s l / none)'] + expected: FAIL + + [Property color value 'hsl(from hsl(120deg 20% 50% / .5) none s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from hsl(none none none) h s l)'] + expected: FAIL + + [Property color value 'hsl(from hsl(none none none / none) h s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from hsl(120deg none 50% / .5) h s l)'] + expected: FAIL + + [Property color value 'hsl(from hsl(120deg 20% 50% / none) h s l / alpha)'] + expected: FAIL + + [Property color value 'hsl(from hsl(none 20% 50% / .5) h s l / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h w b)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) h w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from hsl(120deg 20% 50% / .5) h w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from hwb(from rebeccapurple h w b) h w b)'] + expected: FAIL + + [Property color value 'hwb(from color(display-p3 0 1 0) h w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from lab(100 104.3 -50.9) h w b)'] + expected: FAIL + + [Property color value 'hwb(from lab(0 104.3 -50.9) h w b)'] + expected: FAIL + + [Property color value 'hwb(from lch(100 116 334) h w b)'] + expected: FAIL + + [Property color value 'hwb(from lch(0 116 334) h w b)'] + expected: FAIL + + [Property color value 'hwb(from oklab(100 0.365 -0.16) h w b)'] + expected: FAIL + + [Property color value 'hwb(from oklab(0 0.365 -0.16) h w b)'] + expected: FAIL + + [Property color value 'hwb(from oklch(100 0.399 336.3) h w b)'] + expected: FAIL + + [Property color value 'hwb(from oklch(0 0.399 336.3) h w b)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple 0 0% 0%)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple 0deg 0% 0%)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple 0 0% 0% / 0)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple 0deg 0% 0% / 0)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple 0 w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple 0deg w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h 0% b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h w 0% / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h w b / 0)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) 0 w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) 0deg w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) h 0% b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) h w 0% / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) h w b / 0)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple 25 w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple 25deg w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h 20% b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h w 20% / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h w b / .2)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) 25 w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) 25deg w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) h 20% b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) h w 20% / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) h w b / .2)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h b w)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h alpha w / b)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h w w / w)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) h b w)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) h alpha w / b)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) h w w / w)'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) h alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple calc(h) calc(w) calc(b))'] + expected: FAIL + + [Property color value 'hwb(from rgb(20%, 40%, 60%, 80%) calc(h) calc(w) calc(b) / calc(alpha))'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple none none none)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple none none none / none)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h w none)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h w none / alpha)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple h w b / none)'] + expected: FAIL + + [Property color value 'hwb(from rebeccapurple none w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from hwb(120deg 20% 50% / .5) h w none / alpha)'] + expected: FAIL + + [Property color value 'hwb(from hwb(120deg 20% 50% / .5) h w b / none)'] + expected: FAIL + + [Property color value 'hwb(from hwb(120deg 20% 50% / .5) none w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from hwb(none none none) h w b)'] + expected: FAIL + + [Property color value 'hwb(from hwb(none none none / none) h w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from hwb(120deg none 50% / .5) h w b)'] + expected: FAIL + + [Property color value 'hwb(from hwb(120deg 20% 50% / none) h w b / alpha)'] + expected: FAIL + + [Property color value 'hwb(from hwb(none 20% 50% / .5) h w b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l a b)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) l a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(200 300 400 / 500%) l a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(-200 -300 -400 / -500%) l a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(from lab(25 20 50) l a b) l a b)'] + expected: FAIL + + [Property color value 'lab(from color(display-p3 0 0 0) l a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) 0 0 0)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) 0 a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l 0 b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l a 0 / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l a b / 0)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) 0 a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) l 0 b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) l a 0 / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) l a b / 0)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) 35 a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l 35 b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l a 35 / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l a b / .35)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) 35 a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) l 35 b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) l a 35 / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) l a b / .35)'] + expected: FAIL + + [Property color value 'lab(from lab(0.7 45 30 / 40%) 200 300 400 / 500)'] + expected: FAIL + + [Property color value 'lab(from lab(0.7 45 30 / 40%) -200 -300 -400 / -500)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l b a)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l a a / a)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) l b a)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) l a a / a)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) calc(l) calc(a) calc(b))'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) calc(l) calc(a) calc(b) / calc(alpha))'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) none none none)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) none none none / none)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l a none)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l a none / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50) l a b / none)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) l a none / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / 40%) l a b / none)'] + expected: FAIL + + [Property color value 'lab(from lab(none none none) l a b)'] + expected: FAIL + + [Property color value 'lab(from lab(none none none / none) l a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(25 none 50) l a b)'] + expected: FAIL + + [Property color value 'lab(from lab(25 20 50 / none) l a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l a b)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) l a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(200 300 400 / 500%) l a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(-200 -300 -400 / -500%) l a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(from oklab(25 20 50) l a b) l a b)'] + expected: FAIL + + [Property color value 'oklab(from color(display-p3 0 0 0) l a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) 0 0 0)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) 0 a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l 0 b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l a 0 / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l a b / 0)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) 0 a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) l 0 b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) l a 0 / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) l a b / 0)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) 35 a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l 35 b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l a 35 / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l a b / .35)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) 35 a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) l 35 b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) l a 35 / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) l a b / .35)'] + expected: FAIL + + [Property color value 'oklab(from oklab(0.7 45 30 / 40%) 200 300 400 / 500)'] + expected: FAIL + + [Property color value 'oklab(from oklab(0.7 45 30 / 40%) -200 -300 -400 / -500)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l b a)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l a a / a)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) l b a)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) l a a / a)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) calc(l) calc(a) calc(b))'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) calc(l) calc(a) calc(b) / calc(alpha))'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) none none none)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) none none none / none)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l a none)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l a none / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50) l a b / none)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) l a none / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / 40%) l a b / none)'] + expected: FAIL + + [Property color value 'oklab(from oklab(none none none) l a b)'] + expected: FAIL + + [Property color value 'oklab(from oklab(none none none / none) l a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 none 50) l a b)'] + expected: FAIL + + [Property color value 'oklab(from oklab(25 20 50 / none) l a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(.7 45 30) alpha b a / l)'] + expected: FAIL + + [Property color value 'lab(from lab(.7 45 30) alpha a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(.7 45 30) alpha a a / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(.7 45 30 / 40%) alpha b a / l)'] + expected: FAIL + + [Property color value 'lab(from lab(.7 45 30 / 40%) alpha a b / alpha)'] + expected: FAIL + + [Property color value 'lab(from lab(.7 45 30 / 40%) alpha a a / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(.7 45 30) alpha b a / l)'] + expected: FAIL + + [Property color value 'oklab(from oklab(.7 45 30) alpha a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(.7 45 30) alpha a a / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(.7 45 30 / 40%) alpha b a / l)'] + expected: FAIL + + [Property color value 'oklab(from oklab(.7 45 30 / 40%) alpha a b / alpha)'] + expected: FAIL + + [Property color value 'oklab(from oklab(.7 45 30 / 40%) alpha a a / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l c h)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) l c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(200 300 400 / 500%) l c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(-200 -300 -400 / -500%) l c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(from lch(0.7 45 30) l c h) l c h)'] + expected: FAIL + + [Property color value 'lch(from color(display-p3 0 0 0) l c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lab(0.7 45 30) l c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) 0 0 0)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) 0 0 0deg)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) 0 0 0deg / 0)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) 0 c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l 0 h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l c 0 / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l c 0deg / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l c h / 0)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) 0 c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) l 0 h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) l c 0 / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) l c 0deg / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) l c h / 0)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) 25 c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l 25 h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l c 25 / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l c 25deg / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l c h / .25)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) 25 c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) l 25 h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) l c 25 / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) l c 25deg / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) l c h / .25)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) 200 300 400 / 500)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) -200 -300 -400 / -500)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) 50 120 400deg / 500)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) 50 120 -400deg / -500)'] + expected: FAIL + + [Property color value 'lch(from lch(.7 45 30) l c c / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(.7 45 30 / 40%) l c c / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) calc(l) calc(c) calc(h))'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) calc(l) calc(c) calc(h) / calc(alpha))'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) none none none)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) none none none / none)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l c none)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l c none / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30) l c h / none)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) l c none / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / 40%) l c h / none)'] + expected: FAIL + + [Property color value 'lch(from lch(none none none) l c h)'] + expected: FAIL + + [Property color value 'lch(from lch(none none none / none) l c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 none 30) l c h)'] + expected: FAIL + + [Property color value 'lch(from lch(0.7 45 30 / none) l c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l c h)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) l c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(200 300 400 / 500%) l c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(-200 -300 -400 / -500%) l c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(from oklch(0.7 45 30) l c h) l c h)'] + expected: FAIL + + [Property color value 'oklch(from color(display-p3 0 0 0) l c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklab(0.7 45 30) l c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) 0 0 0)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) 0 0 0deg)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) 0 0 0deg / 0)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) 0 c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l 0 h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l c 0 / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l c 0deg / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l c h / 0)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) 0 c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) l 0 h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) l c 0 / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) l c 0deg / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) l c h / 0)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) 25 c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l 25 h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l c 25 / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l c 25deg / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l c h / .25)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) 25 c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) l 25 h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) l c 25 / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) l c 25deg / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) l c h / .25)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) 200 300 400 / 500)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) -200 -300 -400 / -500)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) 50 120 400deg / 500)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) 50 120 -400deg / -500)'] + expected: FAIL + + [Property color value 'oklch(from oklch(.7 45 30) l c c / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(.7 45 30 / 40%) l c c / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) calc(l) calc(c) calc(h))'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) calc(l) calc(c) calc(h) / calc(alpha))'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) none none none)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) none none none / none)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l c none)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l c none / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30) l c h / none)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) l c none / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / 40%) l c h / none)'] + expected: FAIL + + [Property color value 'oklch(from oklch(none none none) l c h)'] + expected: FAIL + + [Property color value 'oklch(from oklch(none none none / none) l c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 none 30) l c h)'] + expected: FAIL + + [Property color value 'oklch(from oklch(0.7 45 30 / none) l c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(.7 45 30) alpha c h / l)'] + expected: FAIL + + [Property color value 'lch(from lch(.7 45 30) alpha c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(.7 45 30) alpha c c / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(.7 45 30 / 40%) alpha c h / l)'] + expected: FAIL + + [Property color value 'lch(from lch(.7 45 30 / 40%) alpha c h / alpha)'] + expected: FAIL + + [Property color value 'lch(from lch(.7 45 30 / 40%) alpha c c / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(.7 45 30) alpha c h / l)'] + expected: FAIL + + [Property color value 'oklch(from oklch(.7 45 30) alpha c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(.7 45 30) alpha c c / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(.7 45 30 / 40%) alpha c h / l)'] + expected: FAIL + + [Property color value 'oklch(from oklch(.7 45 30 / 40%) alpha c h / alpha)'] + expected: FAIL + + [Property color value 'oklch(from oklch(.7 45 30 / 40%) alpha c c / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(from color(srgb 0.7 0.5 0.3) srgb r g b) srgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb 0 0 0)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb 2 3 4)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb 2 3 4 / 5)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb -2 -3 -4)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb -2 -3 -4 / -5)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb 200% 300% 400%)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb 200% 300% 400% / 500%)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb -200% -300% -400%)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb -200% -300% -400% / -500%)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb g b r)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb g b r)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 1.7 1.5 1.3) srgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb 1.7 1.5 1.3) srgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 1.7 1.5 1.3 / 140%) srgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb 1.7 1.5 1.3 / 140%) srgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb -0.7 -0.5 -0.3) srgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb -0.7 -0.5 -0.3) srgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb -0.7 -0.5 -0.3 / -40%) srgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb -0.7 -0.5 -0.3 / -40%) srgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb calc(r) calc(g) calc(b))'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb calc(r) calc(g) calc(b) / calc(alpha))'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb none none none)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb none none none / none)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r g none)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3) srgb r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(srgb none none none) srgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb none none none / none) srgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 none 0.3) srgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb 0.7 0.5 0.3 / none) srgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b) srgb-linear r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 0 0 0)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 2 3 4)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 2 3 4 / 5)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear -2 -3 -4)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear -2 -3 -4 / -5)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 200% 300% 400%)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 200% 300% 400% / 500%)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear -200% -300% -400%)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear -200% -300% -400% / -500%)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear g b r)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear g b r)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 1.7 1.5 1.3) srgb-linear r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 1.7 1.5 1.3) srgb-linear r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 1.7 1.5 1.3 / 140%) srgb-linear r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 1.7 1.5 1.3 / 140%) srgb-linear r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear -0.7 -0.5 -0.3) srgb-linear r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear -0.7 -0.5 -0.3) srgb-linear r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear -0.7 -0.5 -0.3 / -40%) srgb-linear r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear -0.7 -0.5 -0.3 / -40%) srgb-linear r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear calc(r) calc(g) calc(b))'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear calc(r) calc(g) calc(b) / calc(alpha))'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear none none none)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear none none none / none)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g none)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear none none none) srgb-linear r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear none none none / none) srgb-linear r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 none 0.3) srgb-linear r g b)'] + expected: FAIL + + [Property color value 'color(from color(srgb-linear 0.7 0.5 0.3 / none) srgb-linear r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b) a98-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 0 0 0)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 2 3 4)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 2 3 4 / 5)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb -2 -3 -4)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb -2 -3 -4 / -5)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 200% 300% 400%)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 200% 300% 400% / 500%)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb -200% -300% -400%)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb -200% -300% -400% / -500%)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb g b r)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb g b r)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 1.7 1.5 1.3) a98-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 1.7 1.5 1.3) a98-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 1.7 1.5 1.3 / 140%) a98-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 1.7 1.5 1.3 / 140%) a98-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb -0.7 -0.5 -0.3) a98-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb -0.7 -0.5 -0.3) a98-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb -0.7 -0.5 -0.3 / -40%) a98-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb -0.7 -0.5 -0.3 / -40%) a98-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb calc(r) calc(g) calc(b))'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb calc(r) calc(g) calc(b) / calc(alpha))'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb none none none)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb none none none / none)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g none)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb none none none) a98-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb none none none / none) a98-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 none 0.3) a98-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(a98-rgb 0.7 0.5 0.3 / none) a98-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b) rec2020 r g b)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 0 0 0)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 2 3 4)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 2 3 4 / 5)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 -2 -3 -4)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 -2 -3 -4 / -5)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 200% 300% 400%)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 200% 300% 400% / 500%)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 -200% -300% -400%)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 -200% -300% -400% / -500%)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 g b r)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 g b r)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 1.7 1.5 1.3) rec2020 r g b)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 1.7 1.5 1.3) rec2020 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 1.7 1.5 1.3 / 140%) rec2020 r g b)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 1.7 1.5 1.3 / 140%) rec2020 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 -0.7 -0.5 -0.3) rec2020 r g b)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 -0.7 -0.5 -0.3) rec2020 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 -0.7 -0.5 -0.3 / -40%) rec2020 r g b)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 -0.7 -0.5 -0.3 / -40%) rec2020 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 calc(r) calc(g) calc(b))'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 calc(r) calc(g) calc(b) / calc(alpha))'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 none none none)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 none none none / none)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r g none)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 none none none) rec2020 r g b)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 none none none / none) rec2020 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 none 0.3) rec2020 r g b)'] + expected: FAIL + + [Property color value 'color(from color(rec2020 0.7 0.5 0.3 / none) rec2020 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b) prophoto-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 0 0 0)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 2 3 4)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 2 3 4 / 5)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb -2 -3 -4)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb -2 -3 -4 / -5)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 200% 300% 400%)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 200% 300% 400% / 500%)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb -200% -300% -400%)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb -200% -300% -400% / -500%)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb g b r)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb g b r)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 1.7 1.5 1.3) prophoto-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 1.7 1.5 1.3) prophoto-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 1.7 1.5 1.3 / 140%) prophoto-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 1.7 1.5 1.3 / 140%) prophoto-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb -0.7 -0.5 -0.3) prophoto-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb -0.7 -0.5 -0.3) prophoto-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb -0.7 -0.5 -0.3 / -40%) prophoto-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb -0.7 -0.5 -0.3 / -40%) prophoto-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb calc(r) calc(g) calc(b))'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb calc(r) calc(g) calc(b) / calc(alpha))'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb none none none)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb none none none / none)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g none)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb none none none) prophoto-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb none none none / none) prophoto-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 none 0.3) prophoto-rgb r g b)'] + expected: FAIL + + [Property color value 'color(from color(prophoto-rgb 0.7 0.5 0.3 / none) prophoto-rgb r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b) display-p3 r g b)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 0 0 0)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 0 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r 0 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b / 0)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 0.2 g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 20% g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r 0.2 b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r 20% b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g 20% / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b / 20%)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 2 3 4)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 2 3 4 / 5)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 -2 -3 -4)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 -2 -3 -4 / -5)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 200% 300% 400%)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 200% 300% 400% / 500%)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 -200% -300% -400%)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 -200% -300% -400% / -500%)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 g b r)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 g b r)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 b alpha r / g)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r r r / r)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 alpha alpha alpha / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 1.7 1.5 1.3) display-p3 r g b)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 1.7 1.5 1.3) display-p3 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 1.7 1.5 1.3 / 140%) display-p3 r g b)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 1.7 1.5 1.3 / 140%) display-p3 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 -0.7 -0.5 -0.3) display-p3 r g b)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 -0.7 -0.5 -0.3) display-p3 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 -0.7 -0.5 -0.3 / -40%) display-p3 r g b)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 -0.7 -0.5 -0.3 / -40%) display-p3 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 calc(r) calc(g) calc(b))'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 calc(r) calc(g) calc(b) / calc(alpha))'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 none none none)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 none none none / none)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r g none)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b / none)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 none none none) display-p3 r g b)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 none none none / none) display-p3 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 none 0.3) display-p3 r g b)'] + expected: FAIL + + [Property color value 'color(from color(display-p3 0.7 0.5 0.3 / none) display-p3 r g b / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz x y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(from color(xyz 7 -20.5 100) xyz x y z) xyz x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz 0 0 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz 0 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x 0 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x y 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x y z / 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz 0 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz x 0 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz x y 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz x y z / 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz 0.2 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x 0.2 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x y 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x y z / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x y z / 20%)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz 0.2 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz x 0.2 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz x y 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz x y z / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz y z x)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x x x / x)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz y z x)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz x x x / x)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz calc(x) calc(y) calc(z))'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz calc(x) calc(y) calc(z) / calc(alpha))'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz none none none)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz none none none / none)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x y none)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x y none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100) xyz x y z / none)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz x y none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / 40%) xyz x y z / none)'] + expected: FAIL + + [Property color value 'color(from color(xyz none none none) xyz x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz none none none / none) xyz x y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 none 100) xyz x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz 7 -20.5 100 / none) xyz x y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z) xyz-d50 x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 0 0 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 0 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x 0 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z / 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 0 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x 0 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y z / 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 0.2 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x 0.2 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z / 20%)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 0.2 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x 0.2 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y z / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 y z x)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x x x / x)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 y z x)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x x x / x)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 calc(x) calc(y) calc(z))'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 calc(x) calc(y) calc(z) / calc(alpha))'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 none none none)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 none none none / none)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y none)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z / none)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y z / none)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 none none none) xyz-d50 x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 none none none / none) xyz-d50 x y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 none 100) xyz-d50 x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d50 7 -20.5 100 / none) xyz-d50 x y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z) xyz-d65 x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 0 0 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 0 0 0 / 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 0 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x 0 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 0 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x 0 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y 0 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y z / 0)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 0.2 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x 0.2 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / 20%)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 0.2 y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x 0.2 z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y 0.2 / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y z / 0.2)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 y z x)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x x x / x)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 y z x)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x x x / x)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 calc(x) calc(y) calc(z))'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 calc(x) calc(y) calc(z) / calc(alpha))'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 none none none)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 none none none / none)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y none)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / none)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y none / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y z / none)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 none none none) xyz-d65 x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 none none none / none) xyz-d65 x y z / alpha)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 none 100) xyz-d65 x y z)'] + expected: FAIL + + [Property color value 'color(from color(xyz-d65 7 -20.5 100 / none) xyz-d65 x y z / alpha)'] + expected: FAIL + + [Property color value 'rgb(from var(--bg-color) r g b / 80%)'] + expected: FAIL + + [Property color value 'lch(from var(--color) calc(l / 2) c h)'] + expected: FAIL + + [Property color value 'rgb(from var(--color) calc(r * .3 + g * .59 + b * .11) calc(r * .3 + g * .59 + b * .11) calc(r * .3 + g * .59 + b * .11))'] + expected: FAIL + + [Property color value 'lch(from var(--color) l 0 h)'] + expected: FAIL + + [Property color value 'rgb(from indianred 255 g b)'] + expected: FAIL + + [Property color value 'hsl(from var(--accent) calc(h + 180deg) s l)'] + expected: FAIL + + [Property color value 'lab(from var(--mycolor) l a b / 100%)'] + expected: FAIL + + [Property color value 'lab(from var(--mycolor) l a b / calc(alpha * 0.8))'] + expected: FAIL + + [Property color value 'lab(from var(--mycolor) l a b / calc(alpha - 20%))'] + expected: FAIL + + [Property color value 'lab(from var(--mycolor) l 0 0)'] + expected: FAIL + + [Property color value 'lch(from peru calc(l * 0.8) c h)'] + expected: FAIL + + [Property color value 'LCH(from var(--accent) l c calc(h + 180deg))'] + expected: FAIL + + [Property color value 'lch(from var(--mycolor) l 0 h)'] + expected: FAIL + + [Property color value 'var(--mygray)'] + expected: FAIL + + [Property color value 'lch(from var(--mygray) l 30 h)'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-rgb.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-rgb.html.ini new file mode 100644 index 00000000000..9626e373b42 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-computed-rgb.html.ini @@ -0,0 +1,48 @@ +[color-computed-rgb.html] + [Property color value 'rgb(none none none)'] + expected: FAIL + + [Property color value 'rgb(none none none / none)'] + expected: FAIL + + [Property color value 'rgb(128 none none)'] + expected: FAIL + + [Property color value 'rgb(128 none none / none)'] + expected: FAIL + + [Property color value 'rgb(none none none / .5)'] + expected: FAIL + + [Property color value 'rgb(20% none none)'] + expected: FAIL + + [Property color value 'rgb(20% none none / none)'] + expected: FAIL + + [Property color value 'rgb(none none none / 50%)'] + expected: FAIL + + [Property color value 'rgba(none none none)'] + expected: FAIL + + [Property color value 'rgba(none none none / none)'] + expected: FAIL + + [Property color value 'rgba(128 none none)'] + expected: FAIL + + [Property color value 'rgba(128 none none / none)'] + expected: FAIL + + [Property color value 'rgba(none none none / .5)'] + expected: FAIL + + [Property color value 'rgba(20% none none)'] + expected: FAIL + + [Property color value 'rgba(20% none none / none)'] + expected: FAIL + + [Property color value 'rgba(none none none / 50%)'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-color-contrast-function.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-color-contrast-function.html.ini new file mode 100644 index 00000000000..6c759d11a0e --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-color-contrast-function.html.ini @@ -0,0 +1,66 @@ +[color-valid-color-contrast-function.html] + [e.style['color'\] = "color-contrast(white vs red, blue)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(white vs blue, red)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(white vs red, blue, green)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(white vs white, white)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(blue vs red, white)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(red vs blue, white, red)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(black vs red, blue)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(black vs blue, red)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(black vs white, white)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(red vs blue, rgb(255, 255, 255, .5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(wheat vs bisque, darkgoldenrod, olive, sienna, darkgreen, maroon to AA)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(wheat vs bisque, darkgoldenrod, olive, sienna, darkgreen, maroon to AA-large)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(wheat vs bisque, darkgoldenrod, olive, sienna, darkgreen, maroon to AAA)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(wheat vs bisque, darkgoldenrod, olive, sienna, darkgreen, maroon to AAA-large)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(wheat vs bisque, darkgoldenrod, olive, sienna, darkgreen, maroon to 5.8)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(wheat vs bisque, darkgoldenrod, olive to 100)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(green vs bisque, darkgoldenrod, olive to 100)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(green vs color(display-p3 0 1 0), color(display-p3 0 0 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(color(display-p3 1 1 0) vs color(display-p3 0 1 0), color(display-p3 0 0 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(green vs lab(50% -160 160), lch(0.2 50 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast(lab(50% -160 160) vs green, lch(0.2 50 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-contrast( white vs red, blue )" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-color-function.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-color-function.html.ini new file mode 100644 index 00000000000..06d6dfdbc81 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-color-function.html.ini @@ -0,0 +1,828 @@ +[color-valid-color-function.html] + [e.style['color'\] = "color(srgb 0% 0% 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 10% 10% 10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb .2 .2 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 0 0 0 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 0% 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 20% 0 10/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 20% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 400% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 50% -160 160)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 50% -200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 0 0 0 / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 0 0 0 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 0 0 0 / 300%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 50% -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 50% -200 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 50% / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 200 200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 200 200 200 / 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb -200 -200 -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb -200 -200 -200 / -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 200% 200% 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 200% 200% 200% / 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb -200% -200% -200% / -200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 10% none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb 0 0 0 / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 0% 0% 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 10% 10% 10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear .2 .2 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 0 0 0 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 0% 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 20% 0 10/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 20% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 400% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 50% -160 160)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 50% -200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 0 0 0 / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 0 0 0 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 0 0 0 / 300%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 50% -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 50% -200 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 50% / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 200 200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 200 200 200 / 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear -200 -200 -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear -200 -200 -200 / -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 200% 200% 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 200% 200% 200% / 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear -200% -200% -200% / -200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 10% none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(srgb-linear 0 0 0 / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 0% 0% 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 10% 10% 10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb .2 .2 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 0 0 0 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 0% 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 20% 0 10/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 20% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 400% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 50% -160 160)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 50% -200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 0 0 0 / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 0 0 0 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 0 0 0 / 300%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 50% -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 50% -200 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 50% / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 200 200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 200 200 200 / 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb -200 -200 -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb -200 -200 -200 / -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 200% 200% 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 200% 200% 200% / 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb -200% -200% -200% / -200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 10% none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(a98-rgb 0 0 0 / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 0% 0% 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 10% 10% 10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 .2 .2 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 0 0 0 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 0% 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 20% 0 10/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 20% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 400% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 50% -160 160)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 50% -200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 0 0 0 / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 0 0 0 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 0 0 0 / 300%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 50% -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 50% -200 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 50% / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 200 200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 200 200 200 / 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 -200 -200 -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 -200 -200 -200 / -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 200% 200% 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 200% 200% 200% / 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 -200% -200% -200% / -200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 10% none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(rec2020 0 0 0 / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 0% 0% 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 10% 10% 10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb .2 .2 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 0 0 0 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 0% 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 20% 0 10/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 20% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 400% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 50% -160 160)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 50% -200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 0 0 0 / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 0 0 0 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 0 0 0 / 300%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 50% -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 50% -200 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 50% / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 200 200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 200 200 200 / 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb -200 -200 -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb -200 -200 -200 / -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 200% 200% 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 200% 200% 200% / 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb -200% -200% -200% / -200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 10% none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(prophoto-rgb 0 0 0 / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 0% 0% 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 10% 10% 10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 .2 .2 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 0 0 0 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 0% 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 20% 0 10/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 20% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 400% 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 50% -160 160)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 50% -200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 0 0 0 / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 0 0 0 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 0 0 0 / 300%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 50% -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 50% -200 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 50% / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 200 200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 200 200 200 / 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 -200 -200 -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 -200 -200 -200 / -200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 200% 200% 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 200% 200% 200% / 200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 -200% -200% -200% / -200%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 calc(50% * 3) calc(-150% / 3) calc(50%) / calc(-50% * 3))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 10% none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(display-p3 0 0 0 / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 0 0 0 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 1 1 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 1 1 1 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz -1 -1 -1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 0.1 0.1 0.1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 10 10 10)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz .2 .2 .25)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 0 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz .20 0 10/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz .20 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 0 0 0 / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 0 0 0 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 0 0 0 / 300%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 1 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 1 1 / .5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 1 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz / 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 0.2 none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz 0 0 0 / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 0 0 0 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 1 1 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 1 1 1 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 -1 -1 -1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 0.1 0.1 0.1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 10 10 10)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 .2 .2 .25)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 0 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 .20 0 10/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 .20 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 0 0 0 / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 0 0 0 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 0 0 0 / 300%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 1 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 1 1 / .5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 1 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 / 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 0.2 none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d50 0 0 0 / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 0 0 0 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 1 1 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 1 1 1 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 -1 -1 -1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 0.1 0.1 0.1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 10 10 10)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 .2 .2 .25)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 0 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 .20 0 10/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 .20 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 0 0 0 / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 0 0 0 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 0 0 0 / 300%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 1 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 1 1 / .5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 1 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 / 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 0.2 none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(xyz-d65 0 0 0 / none)" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-color-mix-function.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-color-mix-function.html.ini new file mode 100644 index 00000000000..bc3947b1438 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-color-mix-function.html.ini @@ -0,0 +1,1308 @@ +[color-valid-color-mix-function.html] + [e.style['color'\] = "color-mix(in srgb, red, blue)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, red, blue)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, red calc(20%), blue)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, currentcolor, blue)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, red 60%, blue 40%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch decreasing hue, red, hsl(120, 100%, 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20%), hsl(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20%) 25%, hsl(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, 25% hsl(120deg 10% 20%), hsl(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20%), 25% hsl(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20%), hsl(30deg 30% 40%) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20%) 25%, hsl(30deg 30% 40%) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20%) 30%, hsl(30deg 30% 40%) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20%) 12.5%, hsl(30deg 30% 40%) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20%) 0%, hsl(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20% / .4), hsl(30deg 30% 40% / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20%) 25%, hsl(30deg 30% 40% / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, 25% hsl(120deg 10% 20% / .4), hsl(30deg 30% 40% / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20% / .4), 25% hsl(30deg 30% 40% / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20% / .4), hsl(30deg 30% 40% / .8) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20% / .4) 25%, hsl(30deg 30% 40% / .8) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20% / .4) 30%, hsl(30deg 30% 40% / .8) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20% / .4) 12.5%, hsl(30deg 30% 40% / .8) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 10% 20% / .4) 0%, hsl(30deg 30% 40% / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(40deg 50% 50%), hsl(60deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(60deg 50% 50%), hsl(40deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(50deg 50% 50%), hsl(330deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(330deg 50% 50%), hsl(50deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(20deg 50% 50%), hsl(320deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(320deg 50% 50%), hsl(20deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl shorter hue, hsl(40deg 50% 50%), hsl(60deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl shorter hue, hsl(60deg 50% 50%), hsl(40deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl shorter hue, hsl(50deg 50% 50%), hsl(330deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl shorter hue, hsl(330deg 50% 50%), hsl(50deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl shorter hue, hsl(20deg 50% 50%), hsl(320deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl shorter hue, hsl(320deg 50% 50%), hsl(20deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl longer hue, hsl(40deg 50% 50%), hsl(60deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl longer hue, hsl(60deg 50% 50%), hsl(40deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl longer hue, hsl(50deg 50% 50%), hsl(330deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl longer hue, hsl(330deg 50% 50%), hsl(50deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl longer hue, hsl(20deg 50% 50%), hsl(320deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl longer hue, hsl(320deg 50% 50%), hsl(20deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl increasing hue, hsl(40deg 50% 50%), hsl(60deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl increasing hue, hsl(60deg 50% 50%), hsl(40deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl increasing hue, hsl(50deg 50% 50%), hsl(330deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl increasing hue, hsl(330deg 50% 50%), hsl(50deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl increasing hue, hsl(20deg 50% 50%), hsl(320deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl increasing hue, hsl(320deg 50% 50%), hsl(20deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl decreasing hue, hsl(40deg 50% 50%), hsl(60deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl decreasing hue, hsl(60deg 50% 50%), hsl(40deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl decreasing hue, hsl(50deg 50% 50%), hsl(330deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl decreasing hue, hsl(330deg 50% 50%), hsl(50deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl decreasing hue, hsl(20deg 50% 50%), hsl(320deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl decreasing hue, hsl(320deg 50% 50%), hsl(20deg 50% 50%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(none none none), hsl(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(none none none), hsl(30deg 40% 80%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 20% 40%), hsl(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 20% none), hsl(30deg 40% 60%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 20% 40%), hsl(30deg 20% none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(none 20% 40%), hsl(30deg none 80%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 40% 40% / none), hsl(0deg 40% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 40% 40% / none), hsl(0deg 40% 40% / 0.5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, hsl(120deg 40% 40% / none), hsl(0deg 40% 40% / none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, color(display-p3 0 1 0) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, lab(100 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, lab(0 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, lch(100 116 334) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, lch(0 116 334) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, oklab(100 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, oklab(0 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, oklch(100 0.399 336.3) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hsl, oklch(0 0.399 336.3) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20%), hwb(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20%) 25%, hwb(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, 25% hwb(120deg 10% 20%), hwb(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20%), 25% hwb(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20%), hwb(30deg 30% 40%) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20%) 25%, hwb(30deg 30% 40%) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20%) 30%, hwb(30deg 30% 40%) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20%) 12.5%, hwb(30deg 30% 40%) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20%) 0%, hwb(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20% / .4), hwb(30deg 30% 40% / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20% / .4) 25%, hwb(30deg 30% 40% / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, 25% hwb(120deg 10% 20% / .4), hwb(30deg 30% 40% / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20%), 25% hwb(30deg 30% 40% / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20% / .4), hwb(30deg 30% 40% / .8) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20% / .4) 25%, hwb(30deg 30% 40% / .8) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20% / .4) 30%, hwb(30deg 30% 40% / .8) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20% / .4) 12.5%, hwb(30deg 30% 40% / .8) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20% / .4) 0%, hwb(30deg 30% 40% / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(40deg 30% 40%), hwb(60deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(60deg 30% 40%), hwb(40deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(50deg 30% 40%), hwb(330deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(330deg 30% 40%), hwb(50deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(20deg 30% 40%), hwb(320deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(320deg 30% 40%), hwb(20deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb shorter hue, hwb(40deg 30% 40%), hwb(60deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb shorter hue, hwb(60deg 30% 40%), hwb(40deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb shorter hue, hwb(50deg 30% 40%), hwb(330deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb shorter hue, hwb(330deg 30% 40%), hwb(50deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb shorter hue, hwb(20deg 30% 40%), hwb(320deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb shorter hue, hwb(320deg 30% 40%), hwb(20deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb longer hue, hwb(40deg 30% 40%), hwb(60deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb longer hue, hwb(60deg 30% 40%), hwb(40deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb longer hue, hwb(50deg 30% 40%), hwb(330deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb longer hue, hwb(330deg 30% 40%), hwb(50deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb longer hue, hwb(20deg 30% 40%), hwb(320deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb longer hue, hwb(320deg 30% 40%), hwb(20deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb increasing hue, hwb(40deg 30% 40%), hwb(60deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb increasing hue, hwb(60deg 30% 40%), hwb(40deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb increasing hue, hwb(50deg 30% 40%), hwb(330deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb increasing hue, hwb(330deg 30% 40%), hwb(50deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb increasing hue, hwb(20deg 30% 40%), hwb(320deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb increasing hue, hwb(320deg 30% 40%), hwb(20deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb decreasing hue, hwb(40deg 30% 40%), hwb(60deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb decreasing hue, hwb(60deg 30% 40%), hwb(40deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb decreasing hue, hwb(50deg 30% 40%), hwb(330deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb decreasing hue, hwb(330deg 30% 40%), hwb(50deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb decreasing hue, hwb(20deg 30% 40%), hwb(320deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb decreasing hue, hwb(320deg 30% 40%), hwb(20deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(none none none), hwb(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(none none none), hwb(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20%), hwb(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% none), hwb(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20%), hwb(30deg 30% none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(none 10% 20%), hwb(30deg none 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20% / none), hwb(30deg 30% 40%))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20% / none), hwb(30deg 30% 40% / 0.5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, hwb(120deg 10% 20% / none), hwb(30deg 30% 40% / none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, color(display-p3 0 1 0) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, lab(100 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, lab(0 104.3 -50.9) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, lch(100 116 334) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, lch(0 116 334) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, oklab(100 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, oklab(0 0.365 -0.16) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, oklch(100 0.399 336.3) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in hwb, oklch(0 0.399 336.3) 100%, rgb(0, 0, 0) 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg), lch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg) 25%, lch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, 25% lch(10 20 30deg), lch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg), 25% lch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg), lch(50 60 70deg) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg) 25%, lch(50 60 70deg) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg) 30%, lch(50 60 70deg) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg) 12.5%, lch(50 60 70deg) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg) 0%, lch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg / .4), lch(50 60 70deg / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg / .4) 25%, lch(50 60 70deg / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, 25% lch(10 20 30deg / .4), lch(50 60 70deg / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg / .4), 25% lch(50 60 70deg / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg / .4), lch(50 60 70deg / .8) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg / .4) 25%, lch(50 60 70deg / .8) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg / .4) 30%, lch(50 60 70deg / .8) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg / .4) 12.5%, lch(50 60 70deg / .8) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg / .4) 0%, lch(50 60 70deg / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(100 0 40deg), lch(100 0 60deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(100 0 60deg), lch(100 0 40deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(100 0 50deg), lch(100 0 330deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(100 0 330deg), lch(100 0 50deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(100 0 20deg), lch(100 0 320deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(100 0 320deg), lch(100 0 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch shorter hue, lch(100 0 40deg), lch(100 0 60deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch shorter hue, lch(100 0 60deg), lch(100 0 40deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch shorter hue, lch(100 0 50deg), lch(100 0 330deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch shorter hue, lch(100 0 330deg), lch(100 0 50deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch shorter hue, lch(100 0 20deg), lch(100 0 320deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch shorter hue, lch(100 0 320deg), lch(100 0 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch longer hue, lch(100 0 40deg), lch(100 0 60deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch longer hue, lch(100 0 60deg), lch(100 0 40deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch longer hue, lch(100 0 50deg), lch(100 0 330deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch longer hue, lch(100 0 330deg), lch(100 0 50deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch longer hue, lch(100 0 20deg), lch(100 0 320deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch longer hue, lch(100 0 320deg), lch(100 0 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch increasing hue, lch(100 0 40deg), lch(100 0 60deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch increasing hue, lch(100 0 60deg), lch(100 0 40deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch increasing hue, lch(100 0 50deg), lch(100 0 330deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch increasing hue, lch(100 0 330deg), lch(100 0 50deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch increasing hue, lch(100 0 20deg), lch(100 0 320deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch increasing hue, lch(100 0 320deg), lch(100 0 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch decreasing hue, lch(100 0 40deg), lch(100 0 60deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch decreasing hue, lch(100 0 60deg), lch(100 0 40deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch decreasing hue, lch(100 0 50deg), lch(100 0 330deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch decreasing hue, lch(100 0 330deg), lch(100 0 50deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch decreasing hue, lch(100 0 20deg), lch(100 0 320deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch decreasing hue, lch(100 0 320deg), lch(100 0 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(none none none), lch(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(none none none), lch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg), lch(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 none), lch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg), lch(50 60 none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(none 20 30deg), lch(50 none 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg / none), lch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg / none), lch(50 60 70deg / 0.5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lch, lch(10 20 30deg / none), lch(50 60 70deg / none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg), oklch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg) 25%, oklch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, 25% oklch(10 20 30deg), oklch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg), 25% oklch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg), oklch(50 60 70deg) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg) 25%, oklch(50 60 70deg) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg) 30%, oklch(50 60 70deg) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg) 12.5%, oklch(50 60 70deg) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg) 0%, oklch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg / .4), oklch(50 60 70deg / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg / .4) 25%, oklch(50 60 70deg / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, 25% oklch(10 20 30deg / .4), oklch(50 60 70deg / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg / .4), 25% oklch(50 60 70deg / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg / .4), oklch(50 60 70deg / .8) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg / .4) 25%, oklch(50 60 70deg / .8) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg / .4) 30%, oklch(50 60 70deg / .8) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg / .4) 12.5%, oklch(50 60 70deg / .8) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg / .4) 0%, oklch(50 60 70deg / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(100 0 40deg), oklch(100 0 60deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(100 0 60deg), oklch(100 0 40deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(100 0 50deg), oklch(100 0 330deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(100 0 330deg), oklch(100 0 50deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(100 0 20deg), oklch(100 0 320deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(100 0 320deg), oklch(100 0 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch shorter hue, oklch(100 0 40deg), oklch(100 0 60deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch shorter hue, oklch(100 0 60deg), oklch(100 0 40deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch shorter hue, oklch(100 0 50deg), oklch(100 0 330deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch shorter hue, oklch(100 0 330deg), oklch(100 0 50deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch shorter hue, oklch(100 0 20deg), oklch(100 0 320deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch shorter hue, oklch(100 0 320deg), oklch(100 0 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch longer hue, oklch(100 0 40deg), oklch(100 0 60deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch longer hue, oklch(100 0 60deg), oklch(100 0 40deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch longer hue, oklch(100 0 50deg), oklch(100 0 330deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch longer hue, oklch(100 0 330deg), oklch(100 0 50deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch longer hue, oklch(100 0 20deg), oklch(100 0 320deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch longer hue, oklch(100 0 320deg), oklch(100 0 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch increasing hue, oklch(100 0 40deg), oklch(100 0 60deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch increasing hue, oklch(100 0 60deg), oklch(100 0 40deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch increasing hue, oklch(100 0 50deg), oklch(100 0 330deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch increasing hue, oklch(100 0 330deg), oklch(100 0 50deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch increasing hue, oklch(100 0 20deg), oklch(100 0 320deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch increasing hue, oklch(100 0 320deg), oklch(100 0 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch decreasing hue, oklch(100 0 40deg), oklch(100 0 60deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch decreasing hue, oklch(100 0 60deg), oklch(100 0 40deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch decreasing hue, oklch(100 0 50deg), oklch(100 0 330deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch decreasing hue, oklch(100 0 330deg), oklch(100 0 50deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch decreasing hue, oklch(100 0 20deg), oklch(100 0 320deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch decreasing hue, oklch(100 0 320deg), oklch(100 0 20deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(none none none), oklch(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(none none none), oklch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg), oklch(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 none), oklch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg), oklch(50 60 none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(none 20 30deg), oklch(50 none 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg / none), oklch(50 60 70deg))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg / none), oklch(50 60 70deg / 0.5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklch, oklch(10 20 30deg / none), oklch(50 60 70deg / none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30), lab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30) 25%, lab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, 25% lab(10 20 30), lab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30), 25% lab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30), lab(50 60 70) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30) 25%, lab(50 60 70) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30) 30%, lab(50 60 70) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30) 12.5%, lab(50 60 70) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30) 0%, lab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30 / .4), lab(50 60 70 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30 / .4) 25%, lab(50 60 70 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, 25% lab(10 20 30 / .4), lab(50 60 70 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30 / .4), 25% lab(50 60 70 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30 / .4), lab(50 60 70 / .8) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30 / .4) 25%, lab(50 60 70 / .8) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30 / .4) 30%, lab(50 60 70 / .8) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30 / .4) 12.5%, lab(50 60 70 / .8) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30 / .4) 0%, lab(50 60 70 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(none none none), lab(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(none none none), lab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30), lab(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 none), lab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30), lab(50 60 none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(none 20 30), lab(50 none 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30 / none), lab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30 / none), lab(50 60 70 / 0.5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in lab, lab(10 20 30 / none), lab(50 60 70 / none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30), oklab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30) 25%, oklab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, 25% oklab(10 20 30), oklab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30), 25% oklab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30), oklab(50 60 70) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30) 25%, oklab(50 60 70) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30) 30%, oklab(50 60 70) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30) 12.5%, oklab(50 60 70) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30) 0%, oklab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30 / .4), oklab(50 60 70 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30 / .4) 25%, oklab(50 60 70 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, 25% oklab(10 20 30 / .4), oklab(50 60 70 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30 / .4), 25% oklab(50 60 70 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30 / .4), oklab(50 60 70 / .8) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30 / .4) 25%, oklab(50 60 70 / .8) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30 / .4) 30%, oklab(50 60 70 / .8) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30 / .4) 12.5%, oklab(50 60 70 / .8) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30 / .4) 0%, oklab(50 60 70 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(none none none), oklab(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(none none none), oklab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30), oklab(none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 none), oklab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30), oklab(50 60 none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(none 20 30), oklab(50 none 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30 / none), oklab(50 60 70))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30 / none), oklab(50 60 70 / 0.5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in oklab, oklab(10 20 30 / none), oklab(50 60 70 / none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3), color(srgb .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3) 25%, color(srgb .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3), color(srgb .5 .6 .7) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3) 25%, color(srgb .5 .6 .7) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3) 30%, color(srgb .5 .6 .7) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3) 12.5%, color(srgb .5 .6 .7) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3) 0%, color(srgb .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3 / .5), color(srgb .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3 / .4) 25%, color(srgb .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3 / .4), color(srgb .5 .6 .7 / .8) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3 / .4) 25%, color(srgb .5 .6 .7 / .8) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3 / .4) 30%, color(srgb .5 .6 .7 / .8) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3 / .4) 12.5%, color(srgb .5 .6 .7 / .8) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3 / .4) 0%, color(srgb .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb 2 3 4 / 5), color(srgb 4 6 8 / 10))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb -2 -3 -4), color(srgb -4 -6 -8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb -2 -3 -4 / -5), color(srgb -4 -6 -8 / -10))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb none none none), color(srgb none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb none none none), color(srgb .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3), color(srgb none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 none), color(srgb .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3), color(srgb .5 .6 none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb none .2 .3), color(srgb .5 none .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3 / none), color(srgb .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3 / none), color(srgb .5 .6 .7 / 0.5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb, color(srgb .1 .2 .3 / none), color(srgb .5 .6 .7 / none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3), color(srgb-linear .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3) 25%, color(srgb-linear .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3), color(srgb-linear .5 .6 .7) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3) 25%, color(srgb-linear .5 .6 .7) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3) 30%, color(srgb-linear .5 .6 .7) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3) 12.5%, color(srgb-linear .5 .6 .7) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3) 0%, color(srgb-linear .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .5), color(srgb-linear .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4) 25%, color(srgb-linear .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4), color(srgb-linear .5 .6 .7 / .8) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4) 25%, color(srgb-linear .5 .6 .7 / .8) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4) 30%, color(srgb-linear .5 .6 .7 / .8) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4) 12.5%, color(srgb-linear .5 .6 .7 / .8) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / .4) 0%, color(srgb-linear .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear 2 3 4 / 5), color(srgb-linear 4 6 8 / 10))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear -2 -3 -4), color(srgb-linear -4 -6 -8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear -2 -3 -4 / -5), color(srgb-linear -4 -6 -8 / -10))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear none none none), color(srgb-linear none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear none none none), color(srgb-linear .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3), color(srgb-linear none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 none), color(srgb-linear .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3), color(srgb-linear .5 .6 none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear none .2 .3), color(srgb-linear .5 none .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / none), color(srgb-linear .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / none), color(srgb-linear .5 .6 .7 / 0.5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in srgb-linear, color(srgb-linear .1 .2 .3 / none), color(srgb-linear .5 .6 .7 / none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3), color(xyz .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3) 25%, color(xyz .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3), color(xyz .5 .6 .7) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3) 25%, color(xyz .5 .6 .7) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3) 30%, color(xyz .5 .6 .7) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3) 12.5%, color(xyz .5 .6 .7) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3) 0%, color(xyz .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3 / .5), color(xyz .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3 / .4) 25%, color(xyz .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3 / .4), color(xyz .5 .6 .7 / .8) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3 / .4) 25%, color(xyz .5 .6 .7 / .8) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3 / .4) 30%, color(xyz .5 .6 .7 / .8) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3 / .4) 12.5%, color(xyz .5 .6 .7 / .8) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3 / .4) 0%, color(xyz .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz 2 3 4 / 5), color(xyz 4 6 8 / 10))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz -2 -3 -4), color(xyz -4 -6 -8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz -2 -3 -4 / -5), color(xyz -4 -6 -8 / -10))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz none none none), color(xyz none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz none none none), color(xyz .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3), color(xyz none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 none), color(xyz .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3), color(xyz .5 .6 none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz none .2 .3), color(xyz .5 none .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3 / none), color(xyz .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3 / none), color(xyz .5 .6 .7 / 0.5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz, color(xyz .1 .2 .3 / none), color(xyz .5 .6 .7 / none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3), color(xyz-d50 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3) 25%, color(xyz-d50 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3), color(xyz-d50 .5 .6 .7) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3) 25%, color(xyz-d50 .5 .6 .7) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3) 30%, color(xyz-d50 .5 .6 .7) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3) 12.5%, color(xyz-d50 .5 .6 .7) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3) 0%, color(xyz-d50 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .5), color(xyz-d50 .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4) 25%, color(xyz-d50 .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4), color(xyz-d50 .5 .6 .7 / .8) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4) 25%, color(xyz-d50 .5 .6 .7 / .8) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4) 30%, color(xyz-d50 .5 .6 .7 / .8) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4) 12.5%, color(xyz-d50 .5 .6 .7 / .8) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / .4) 0%, color(xyz-d50 .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 2 3 4 / 5), color(xyz-d50 4 6 8 / 10))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 -2 -3 -4), color(xyz-d50 -4 -6 -8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 -2 -3 -4 / -5), color(xyz-d50 -4 -6 -8 / -10))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 none none none), color(xyz-d50 none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 none none none), color(xyz-d50 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3), color(xyz-d50 none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 none), color(xyz-d50 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3), color(xyz-d50 .5 .6 none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 none .2 .3), color(xyz-d50 .5 none .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / none), color(xyz-d50 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / none), color(xyz-d50 .5 .6 .7 / 0.5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d50, color(xyz-d50 .1 .2 .3 / none), color(xyz-d50 .5 .6 .7 / none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3), color(xyz-d65 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3) 25%, color(xyz-d65 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3), color(xyz-d65 .5 .6 .7) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3) 25%, color(xyz-d65 .5 .6 .7) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3) 30%, color(xyz-d65 .5 .6 .7) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3) 12.5%, color(xyz-d65 .5 .6 .7) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3) 0%, color(xyz-d65 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .5), color(xyz-d65 .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4) 25%, color(xyz-d65 .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4), color(xyz-d65 .5 .6 .7 / .8) 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4) 25%, color(xyz-d65 .5 .6 .7 / .8) 75%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4) 30%, color(xyz-d65 .5 .6 .7 / .8) 90%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4) 12.5%, color(xyz-d65 .5 .6 .7 / .8) 37.5%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / .4) 0%, color(xyz-d65 .5 .6 .7 / .8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 2 3 4 / 5), color(xyz-d65 4 6 8 / 10))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 -2 -3 -4), color(xyz-d65 -4 -6 -8))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 -2 -3 -4 / -5), color(xyz-d65 -4 -6 -8 / -10))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 none none none), color(xyz-d65 none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 none none none), color(xyz-d65 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3), color(xyz-d65 none none none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 none), color(xyz-d65 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3), color(xyz-d65 .5 .6 none))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 none .2 .3), color(xyz-d65 .5 none .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / none), color(xyz-d65 .5 .6 .7))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / none), color(xyz-d65 .5 .6 .7 / 0.5))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color-mix(in xyz-d65, color(xyz-d65 .1 .2 .3 / none), color(xyz-d65 .5 .6 .7 / none))" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-hsl.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-hsl.html.ini new file mode 100644 index 00000000000..efd69fefe4d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-hsl.html.ini @@ -0,0 +1,27 @@ +[color-valid-hsl.html] + [e.style['color'\] = "hsl(none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsla(none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsla(none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(120 none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(120 80% none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(120 none 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(120 100% 50% / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(none 100% 50%)" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-hwb.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-hwb.html.ini new file mode 100644 index 00000000000..8c9a4ca783d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-hwb.html.ini @@ -0,0 +1,21 @@ +[color-valid-hwb.html] + [e.style['color'\] = "hwb(none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(120 none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(120 80% none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(120 none 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(120 30% 50% / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(none 100% 50% / none)" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-lab.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-lab.html.ini new file mode 100644 index 00000000000..da803858db7 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-lab.html.ini @@ -0,0 +1,276 @@ +[color-valid-lab.html] + [e.style['color'\] = "lab(0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(0 0 0 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(0 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(20 0 10/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(20 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(400 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(50 -160 160)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(50 -200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(0 0 0 / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(0 0 0 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(0 0 0 / 300%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(-40 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(50 -20 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(50 0 -20)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(calc(50 * 3) calc(0.5 - 1) calc(1.5) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(calc(-50 * 3) calc(0.5 + 1) calc(-1.5) / calc(-0.5 * 2))" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(20 none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(0 0 0 / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(0 0 0 / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(0 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(20 0 10/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(20 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(400 0 10/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(50 -160 160)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(50 -200 200)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(0 0 0 / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(0 0 0 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(0 0 0 / 300%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(-40 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(50 -20 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(50 0 -20)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(calc(50 * 3) calc(0.5 - 1) calc(1.5) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(calc(-50 * 3) calc(0.5 + 1) calc(-1.5) / calc(-0.5 * 2))" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(20 none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(0 0 0 / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(0 0 0deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(0 0 0deg / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(0 0 0deg / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(100 230 0deg / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(20 50 20deg/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(20 50 20deg/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(10 20 20deg / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(10 20 20deg / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(10 20 1.28rad)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(10 20 380deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(10 20 -340deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(10 20 740deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(10 20 -700deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(-40 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(20 -20 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(0 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(10 20 20 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(10 20 -700)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(calc(50 * 3) calc(0.5 - 1) calc(20deg * 2) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(calc(-50 * 3) calc(0.5 + 1) calc(-20deg * 2) / calc(-0.5 * 2))" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(20 none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(0 0 0 / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(0 0 0deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(0 0 0deg / 1)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(0 0 0deg / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(100 230 0deg / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(20 50 20deg/0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(20 50 20deg/50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(10 20 20deg / -10%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(10 20 20deg / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(10 20 1.28rad)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(10 20 380deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(10 20 -340deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(10 20 740deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(10 20 -700deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(-40 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(20 -20 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(0 0 0 / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(10 20 20 / 110%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(10 20 -700)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(calc(50 * 3) calc(0.5 - 1) calc(20deg * 2) / calc(-0.5 + 1))" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(calc(-50 * 3) calc(0.5 + 1) calc(-20deg * 2) / calc(-0.5 * 2))" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(20 none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(none none none / 0.5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(0 0 0 / none)" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-relative-color.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-relative-color.html.ini new file mode 100644 index 00000000000..8b31e3c4400 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-relative-color.html.ini @@ -0,0 +1,2847 @@ +[color-valid-relative-color.html] + [e.style['color'\] = "rgb(from rebeccapurple r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from hsl(120deg 20% 50% / .5) r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(from rebeccapurple r g b) r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from color(display-p3 0 1 0) r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from lab(100 104.3 -50.9) r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from lab(0 104.3 -50.9) r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from lch(100 116 334) r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from lch(0 116 334) r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from oklab(100 0.365 -0.16) r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from oklab(0 0.365 -0.16) r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from oklch(100 0.399 336.3) r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from oklch(0 0.399 336.3) r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple 25 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r 25 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r g 25 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r g b / .25)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) 25 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r 25 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r g 25 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r g b / .20)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple 25 g b / 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r 25 b / 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r g 25 / 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) 25 g b / 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r 25 b / 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r g 25 / 25%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r 20% 10)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r 10 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple 0% 10 10)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r 20% 10)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) r 10 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) 0% 10 10)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple calc(r) calc(g) calc(b))" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r calc(g * 2) 10)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple b calc(r * .5) 10)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r calc(g * .5 + g * .5) 10)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r calc(b * .5 - g * .5) 10)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20%, 40%, 60%, 80%) calc(r) calc(g) calc(b) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r g none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rebeccapurple r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20% 40% 60% / 80%) r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20% 40% 60% / 80%) r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(none none none) r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(none none none / none) r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20% none 60%) r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from rgb(20% 40% 60% / none) r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) h s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from hsl(120deg 20% 50% / .5) h s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from hsl(from rebeccapurple h s l) h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from color(display-p3 0 1 0) h s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from lab(100 104.3 -50.9) h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from lab(0 104.3 -50.9) h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from lch(100 116 334) h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from lch(0 116 334) h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from oklab(100 0.365 -0.16) h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from oklab(0 0.365 -0.16) h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from oklch(100 0.399 336.3) h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from oklch(0 0.399 336.3) h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple 0 0% 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple 0deg 0% 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple 0 0% 0% / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple 0deg 0% 0% / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple 0 s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple 0deg s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h 0% l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h s 0% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h s l / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) 0 s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) 0deg s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) h 0% l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) h s 0% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) h s l / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple 25 s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple 25deg s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h 20% l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h s 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h s l / .25)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) 25 s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) 25deg s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) h 20% l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) h s 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) h s l / .2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h l s)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h alpha l / s)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h l l / l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) h l s)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) h alpha l / s)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) h l l / l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) h alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple calc(h) calc(s) calc(l))" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rgb(20%, 40%, 60%, 80%) calc(h) calc(s) calc(l) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h s none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h s none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple h s l / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from rebeccapurple none s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from hsl(120deg 20% 50% / .5) h s none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from hsl(120deg 20% 50% / .5) h s l / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from hsl(120deg 20% 50% / .5) none s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from hsl(none none none) h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from hsl(none none none / none) h s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from hsl(120deg none 50% / .5) h s l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from hsl(120deg 20% 50% / none) h s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hsl(from hsl(none 20% 50% / .5) h s l / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) h w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from hsl(120deg 20% 50% / .5) h w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from hwb(from rebeccapurple h w b) h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from color(display-p3 0 1 0) h w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from lab(100 104.3 -50.9) h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from lab(0 104.3 -50.9) h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from lch(100 116 334) h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from lch(0 116 334) h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from oklab(100 0.365 -0.16) h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from oklab(0 0.365 -0.16) h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from oklch(100 0.399 336.3) h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from oklch(0 0.399 336.3) h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple 0 0% 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple 0deg 0% 0%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple 0 0% 0% / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple 0deg 0% 0% / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple 0 w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple 0deg w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h 0% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h w 0% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h w b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) 0 w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) 0deg w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) h 0% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) h w 0% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) h w b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple 25 w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple 25deg w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h w 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h w b / .2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) 25 w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) 25deg w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) h 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) h w 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) h w b / .2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h b w)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h alpha w / b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h w w / w)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) h b w)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) h alpha w / b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) h w w / w)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) h alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple calc(h) calc(w) calc(b))" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rgb(20%, 40%, 60%, 80%) calc(h) calc(w) calc(b) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h w none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h w none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple h w b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from rebeccapurple none w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from hwb(120deg 20% 50% / .5) h w none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from hwb(120deg 20% 50% / .5) h w b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from hwb(120deg 20% 50% / .5) none w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from hwb(none none none) h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from hwb(none none none / none) h w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from hwb(120deg none 50% / .5) h w b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from hwb(120deg 20% 50% / none) h w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "hwb(from hwb(none 20% 50% / .5) h w b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l a b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(200 300 400 / 500%) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(-200 -300 -400 / -500%) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(from lab(25 20 50) l a b) l a b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from color(display-p3 0 0 0) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) 0 a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l a 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l a b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) 0 a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) l 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) l a 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) l a b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) 35 a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l 35 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l a 35 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l a b / .35)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) 35 a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) l 35 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) l a 35 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) l a b / .35)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(0.7 45 30 / 40%) 200 300 400 / 500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(0.7 45 30 / 40%) -200 -300 -400 / -500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l b a)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l a a / a)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) l b a)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) l a a / a)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) calc(l) calc(a) calc(b))" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) calc(l) calc(a) calc(b) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l a none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l a none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50) l a b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) l a none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / 40%) l a b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(none none none) l a b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(none none none / none) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 none 50) l a b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(25 20 50 / none) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l a b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(200 300 400 / 500%) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(-200 -300 -400 / -500%) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(from oklab(25 20 50) l a b) l a b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from color(display-p3 0 0 0) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) 0 a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l a 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l a b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) 0 a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) l 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) l a 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) l a b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) 35 a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l 35 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l a 35 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l a b / .35)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) 35 a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) l 35 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) l a 35 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) l a b / .35)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(0.7 45 30 / 40%) 200 300 400 / 500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(0.7 45 30 / 40%) -200 -300 -400 / -500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l b a)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l a a / a)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) l b a)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) l a a / a)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) calc(l) calc(a) calc(b))" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) calc(l) calc(a) calc(b) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l a none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l a none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50) l a b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) l a none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / 40%) l a b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(none none none) l a b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(none none none / none) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 none 50) l a b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(25 20 50 / none) l a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(.7 45 30) alpha b a / l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(.7 45 30) alpha a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(.7 45 30) alpha a a / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(.7 45 30 / 40%) alpha b a / l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(.7 45 30 / 40%) alpha a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lab(from lab(.7 45 30 / 40%) alpha a a / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(.7 45 30) alpha b a / l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(.7 45 30) alpha a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(.7 45 30) alpha a a / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(.7 45 30 / 40%) alpha b a / l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(.7 45 30 / 40%) alpha a b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklab(from oklab(.7 45 30 / 40%) alpha a a / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l c h)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(200 300 400 / 500%) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(-200 -300 -400 / -500%) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(from lch(0.7 45 30) l c h) l c h)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from color(display-p3 0 0 0) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lab(0.7 45 30) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) 0 0 0deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) 0 0 0deg / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) 0 c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l 0 h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l c 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l c 0deg / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l c h / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) 0 c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l 0 h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l c 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l c 0deg / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l c h / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) 25 c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l 25 h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l c 25 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l c 25deg / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l c h / .25)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) 25 c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l 25 h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l c 25 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l c 25deg / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l c h / .25)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) 200 300 400 / 500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) -200 -300 -400 / -500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) 50 120 400deg / 500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) 50 120 -400deg / -500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(.7 45 30) l c c / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(.7 45 30 / 40%) l c c / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) calc(l) calc(c) calc(h))" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) calc(l) calc(c) calc(h) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l c none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l c none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30) l c h / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l c none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l c h / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(none none none) l c h)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(none none none / none) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 none 30) l c h)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(0.7 45 30 / none) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l c h)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(200 300 400 / 500%) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(-200 -300 -400 / -500%) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(from oklch(0.7 45 30) l c h) l c h)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from color(display-p3 0 0 0) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklab(0.7 45 30) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) 0 0 0deg)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) 0 0 0deg / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) 0 c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l 0 h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l c 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l c 0deg / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l c h / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) 0 c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) l 0 h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) l c 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) l c 0deg / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) l c h / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) 25 c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l 25 h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l c 25 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l c 25deg / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l c h / .25)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) 25 c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) l 25 h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) l c 25 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) l c 25deg / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) l c h / .25)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) 200 300 400 / 500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) -200 -300 -400 / -500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) 50 120 400deg / 500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) 50 120 -400deg / -500)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(.7 45 30) l c c / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(.7 45 30 / 40%) l c c / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) calc(l) calc(c) calc(h))" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) calc(l) calc(c) calc(h) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l c none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l c none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30) l c h / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) l c none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / 40%) l c h / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(none none none) l c h)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(none none none / none) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 none 30) l c h)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(0.7 45 30 / none) l c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(.7 45 30) alpha c h / l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(.7 45 30) alpha c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(.7 45 30) alpha c c / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(.7 45 30 / 40%) alpha c h / l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(.7 45 30 / 40%) alpha c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from lch(.7 45 30 / 40%) alpha c c / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(.7 45 30) alpha c h / l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(.7 45 30) alpha c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(.7 45 30) alpha c c / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(.7 45 30 / 40%) alpha c h / l)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(.7 45 30 / 40%) alpha c h / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "oklch(from oklch(.7 45 30 / 40%) alpha c c / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(from color(srgb 0.7 0.5 0.3) srgb r g b) srgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb 2 3 4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb 2 3 4 / 5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb -2 -3 -4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb -2 -3 -4 / -5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb 200% 300% 400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb 200% 300% 400% / 500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb -200% -300% -400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb -200% -300% -400% / -500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 1.7 1.5 1.3) srgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 1.7 1.5 1.3) srgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 1.7 1.5 1.3 / 140%) srgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 1.7 1.5 1.3 / 140%) srgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb -0.7 -0.5 -0.3) srgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb -0.7 -0.5 -0.3) srgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb -0.7 -0.5 -0.3 / -40%) srgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb -0.7 -0.5 -0.3 / -40%) srgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb calc(r) calc(g) calc(b))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb calc(r) calc(g) calc(b) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r g none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3) srgb r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / 40%) srgb r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb none none none) srgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb none none none / none) srgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 none 0.3) srgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb 0.7 0.5 0.3 / none) srgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b) srgb-linear r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 2 3 4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 2 3 4 / 5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear -2 -3 -4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear -2 -3 -4 / -5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 200% 300% 400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear 200% 300% 400% / 500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear -200% -300% -400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear -200% -300% -400% / -500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 1.7 1.5 1.3) srgb-linear r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 1.7 1.5 1.3) srgb-linear r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 1.7 1.5 1.3 / 140%) srgb-linear r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 1.7 1.5 1.3 / 140%) srgb-linear r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear -0.7 -0.5 -0.3) srgb-linear r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear -0.7 -0.5 -0.3) srgb-linear r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear -0.7 -0.5 -0.3 / -40%) srgb-linear r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear -0.7 -0.5 -0.3 / -40%) srgb-linear r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear calc(r) calc(g) calc(b))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear calc(r) calc(g) calc(b) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3) srgb-linear r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / 40%) srgb-linear r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear none none none) srgb-linear r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear none none none / none) srgb-linear r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 none 0.3) srgb-linear r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(srgb-linear 0.7 0.5 0.3 / none) srgb-linear r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b) a98-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 2 3 4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 2 3 4 / 5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb -2 -3 -4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb -2 -3 -4 / -5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 200% 300% 400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb 200% 300% 400% / 500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb -200% -300% -400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb -200% -300% -400% / -500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 1.7 1.5 1.3) a98-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 1.7 1.5 1.3) a98-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 1.7 1.5 1.3 / 140%) a98-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 1.7 1.5 1.3 / 140%) a98-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb -0.7 -0.5 -0.3) a98-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb -0.7 -0.5 -0.3) a98-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb -0.7 -0.5 -0.3 / -40%) a98-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb -0.7 -0.5 -0.3 / -40%) a98-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb calc(r) calc(g) calc(b))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb calc(r) calc(g) calc(b) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3) a98-rgb r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / 40%) a98-rgb r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb none none none) a98-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb none none none / none) a98-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 none 0.3) a98-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(a98-rgb 0.7 0.5 0.3 / none) a98-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b) rec2020 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 2 3 4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 2 3 4 / 5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 -2 -3 -4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 -2 -3 -4 / -5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 200% 300% 400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 200% 300% 400% / 500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 -200% -300% -400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 -200% -300% -400% / -500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 1.7 1.5 1.3) rec2020 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 1.7 1.5 1.3) rec2020 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 1.7 1.5 1.3 / 140%) rec2020 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 1.7 1.5 1.3 / 140%) rec2020 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 -0.7 -0.5 -0.3) rec2020 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 -0.7 -0.5 -0.3) rec2020 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 -0.7 -0.5 -0.3 / -40%) rec2020 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 -0.7 -0.5 -0.3 / -40%) rec2020 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 calc(r) calc(g) calc(b))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 calc(r) calc(g) calc(b) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r g none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3) rec2020 r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / 40%) rec2020 r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 none none none) rec2020 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 none none none / none) rec2020 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 none 0.3) rec2020 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(rec2020 0.7 0.5 0.3 / none) rec2020 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b) prophoto-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 2 3 4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 2 3 4 / 5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb -2 -3 -4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb -2 -3 -4 / -5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 200% 300% 400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb 200% 300% 400% / 500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb -200% -300% -400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb -200% -300% -400% / -500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 1.7 1.5 1.3) prophoto-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 1.7 1.5 1.3) prophoto-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 1.7 1.5 1.3 / 140%) prophoto-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 1.7 1.5 1.3 / 140%) prophoto-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb -0.7 -0.5 -0.3) prophoto-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb -0.7 -0.5 -0.3) prophoto-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb -0.7 -0.5 -0.3 / -40%) prophoto-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb -0.7 -0.5 -0.3 / -40%) prophoto-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb calc(r) calc(g) calc(b))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb calc(r) calc(g) calc(b) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3) prophoto-rgb r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / 40%) prophoto-rgb r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb none none none) prophoto-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb none none none / none) prophoto-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 none 0.3) prophoto-rgb r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(prophoto-rgb 0.7 0.5 0.3 / none) prophoto-rgb r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b) display-p3 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 0 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r 0 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 0.2 g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 20% g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r 0.2 b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r 20% b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g 20% / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 2 3 4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 2 3 4 / 5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 -2 -3 -4)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 -2 -3 -4 / -5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 200% 300% 400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 200% 300% 400% / 500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 -200% -300% -400%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 -200% -300% -400% / -500%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 g b r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 b alpha r / g)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r r r / r)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 alpha alpha alpha / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 1.7 1.5 1.3) display-p3 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 1.7 1.5 1.3) display-p3 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 1.7 1.5 1.3 / 140%) display-p3 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 1.7 1.5 1.3 / 140%) display-p3 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 -0.7 -0.5 -0.3) display-p3 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 -0.7 -0.5 -0.3) display-p3 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 -0.7 -0.5 -0.3 / -40%) display-p3 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 -0.7 -0.5 -0.3 / -40%) display-p3 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 calc(r) calc(g) calc(b))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 calc(r) calc(g) calc(b) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r g none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3) display-p3 r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / 40%) display-p3 r g b / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 none none none) display-p3 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 none none none / none) display-p3 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 none 0.3) display-p3 r g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(display-p3 0.7 0.5 0.3 / none) display-p3 r g b / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(from color(xyz 7 -20.5 100) xyz x y z) xyz x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz 0 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x 0 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x y 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x y z / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz 0 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz x 0 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz x y 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz x y z / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz 0.2 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x 0.2 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x y 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x y z / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x y z / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz 0.2 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz x 0.2 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz x y 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz x y z / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz y z x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x x x / x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz y z x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz x x x / x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz calc(x) calc(y) calc(z))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz calc(x) calc(y) calc(z) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x y none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x y none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100) xyz x y z / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz x y none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / 40%) xyz x y z / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz none none none) xyz x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz none none none / none) xyz x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 none 100) xyz x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz 7 -20.5 100 / none) xyz x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z) xyz-d50 x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 0 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x 0 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 0 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x 0 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y z / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 0.2 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x 0.2 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 0.2 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x 0.2 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y z / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 y z x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x x x / x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 y z x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x x x / x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 calc(x) calc(y) calc(z))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 calc(x) calc(y) calc(z) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100) xyz-d50 x y z / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / 40%) xyz-d50 x y z / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 none none none) xyz-d50 x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 none none none / none) xyz-d50 x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 none 100) xyz-d50 x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d50 7 -20.5 100 / none) xyz-d50 x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z) xyz-d65 x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 0 0 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 0 0 0 / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 0 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x 0 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 0 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x 0 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y 0 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y z / 0)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 0.2 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x 0.2 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / 20%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 0.2 y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x 0.2 z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y 0.2 / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y z / 0.2)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 y z x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x x x / x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 y z x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x x x / x)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 calc(x) calc(y) calc(z))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 calc(x) calc(y) calc(z) / calc(alpha))" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y none / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / 40%) xyz-d65 x y z / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 none none none) xyz-d65 x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 none none none / none) xyz-d65 x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 none 100) xyz-d65 x y z)" should set the property value] + expected: FAIL + + [e.style['color'\] = "color(from color(xyz-d65 7 -20.5 100 / none) xyz-d65 x y z / alpha)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from var(--color) calc(r * .3 + g * .59 + b * .11) calc(r * .3 + g * .59 + b * .11) calc(r * .3 + g * .59 + b * .11))" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(from indianred 255 g b)" should set the property value] + expected: FAIL + + [e.style['color'\] = "lch(from peru calc(l * 0.8) c h)" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-rgb.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-rgb.html.ini new file mode 100644 index 00000000000..d80e615f3f7 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-rgb.html.ini @@ -0,0 +1,48 @@ +[color-valid-rgb.html] + [e.style['color'\] = "rgb(none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(128 none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(128 none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(none none none / .5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(20% none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(20% none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgb(none none none / 50%)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgba(none none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgba(none none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgba(128 none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgba(128 none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgba(none none none / .5)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgba(20% none none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgba(20% none none / none)" should set the property value] + expected: FAIL + + [e.style['color'\] = "rgba(none none none / 50%)" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-system-color.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-system-color.html.ini new file mode 100644 index 00000000000..756f35d02be --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/parsing/color-valid-system-color.html.ini @@ -0,0 +1,57 @@ +[color-valid-system-color.html] + [e.style['color'\] = "ActiveText" should set the property value] + expected: FAIL + + [e.style['color'\] = "ButtonBorder" should set the property value] + expected: FAIL + + [e.style['color'\] = "ButtonFace" should set the property value] + expected: FAIL + + [e.style['color'\] = "ButtonText" should set the property value] + expected: FAIL + + [e.style['color'\] = "Canvas" should set the property value] + expected: FAIL + + [e.style['color'\] = "CanvasText" should set the property value] + expected: FAIL + + [e.style['color'\] = "Field" should set the property value] + expected: FAIL + + [e.style['color'\] = "FieldText" should set the property value] + expected: FAIL + + [e.style['color'\] = "GrayText" should set the property value] + expected: FAIL + + [e.style['color'\] = "Highlight" should set the property value] + expected: FAIL + + [e.style['color'\] = "HighlightText" should set the property value] + expected: FAIL + + [e.style['color'\] = "LinkText" should set the property value] + expected: FAIL + + [e.style['color'\] = "Mark" should set the property value] + expected: FAIL + + [e.style['color'\] = "MarkText" should set the property value] + expected: FAIL + + [e.style['color'\] = "VisitedText" should set the property value] + expected: FAIL + + [e.style['color'\] = "SelectedItem" should set the property value] + expected: FAIL + + [e.style['color'\] = "SelectedItemText" should set the property value] + expected: FAIL + + [e.style['color'\] = "AccentColor" should set the property value] + expected: FAIL + + [e.style['color'\] = "AccentColorText" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/system-color-compute.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/system-color-compute.html.ini index 0d1fd332c91..01a323e1449 100644 --- a/tests/wpt/metadata-layout-2020/css/css-color/system-color-compute.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-color/system-color-compute.html.ini @@ -41,3 +41,41 @@ [Inherited system color keyword is observable on stroke] expected: FAIL + [System color doesn't compute to itself on color] + expected: FAIL + + [System color doesn't compute to itself on background-color] + expected: FAIL + + [System color doesn't compute to itself on box-shadow] + expected: FAIL + + [System color doesn't compute to itself on text-shadow] + expected: FAIL + + [System color doesn't compute to itself on border-left-color] + expected: FAIL + + [System color doesn't compute to itself on border-top-color] + expected: FAIL + + [System color doesn't compute to itself on border-right-color] + expected: FAIL + + [System color doesn't compute to itself on border-bottom-color] + expected: FAIL + + [System color doesn't compute to itself on column-rule-color] + expected: FAIL + + [System color doesn't compute to itself on outline-color] + expected: FAIL + + [System color doesn't compute to itself on caret-color] + expected: FAIL + + [System color doesn't compute to itself on fill] + expected: FAIL + + [System color doesn't compute to itself on stroke] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/system-color-consistency.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/system-color-consistency.html.ini new file mode 100644 index 00000000000..343156ca80d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/system-color-consistency.html.ini @@ -0,0 +1,81 @@ +[system-color-consistency.html] + [Property color value 'ButtonBorder' resolves to the same color as the border-color of a button] + expected: FAIL + + [Property color value 'ButtonFace' resolves to the same color as the background-color of a button] + expected: FAIL + + [Property color value 'ButtonText' resolves to the same color as text on a button] + expected: FAIL + + [Property color value 'ButtonBorder' resolves to the same color as the border-color of a submit button] + expected: FAIL + + [Property color value 'ButtonFace' resolves to the same color as the background-color of a submit button] + expected: FAIL + + [Property color value 'ButtonText' resolves to the same color as text on a submit button] + expected: FAIL + + [Property color value 'ButtonBorder' resolves to the same color as the border-color of a reset button] + expected: FAIL + + [Property color value 'ButtonFace' resolves to the same color as the background-color of a reset button] + expected: FAIL + + [Property color value 'ButtonText' resolves to the same color as text on a reset button] + expected: FAIL + + [Property color value 'ButtonBorder' resolves to the same color as the border-color of a color picker] + expected: FAIL + + [Property color value 'ButtonFace' resolves to the same color as the background-color of a color picker] + expected: FAIL + + [Property color value 'ButtonText' resolves to the same color as text on a color picker] + expected: FAIL + + [Property color value 'CanvasText' has the same color as the color of the html element] + expected: FAIL + + [Property color value 'Field' resolves to the same color as the background-color of a text field] + expected: FAIL + + [Property color value 'FieldText' resolves to the same color as text on a text field] + expected: FAIL + + [Property color value 'Field' resolves to the same color as the background-color of a password field] + expected: FAIL + + [Property color value 'FieldText' resolves to the same color as text on a password field] + expected: FAIL + + [Property color value 'Field' resolves to the same color as the background-color of a email field] + expected: FAIL + + [Property color value 'FieldText' resolves to the same color as text on a email field] + expected: FAIL + + [Property color value 'Field' resolves to the same color as the background-color of a number field] + expected: FAIL + + [Property color value 'FieldText' resolves to the same color as text on a number field] + expected: FAIL + + [Property color value 'Field' resolves to the same color as the background-color of a date field] + expected: FAIL + + [Property color value 'FieldText' resolves to the same color as text on a date field] + expected: FAIL + + [Property color value 'Field' resolves to the same color as the background-color of a text area] + expected: FAIL + + [Property color value 'FieldText' resolves to the same color as text on a text area] + expected: FAIL + + [Property color value 'Mark' has the same color as the background-color of a mark element] + expected: FAIL + + [Property color value 'MarkText' has the same color as the color of a mark element] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-conditional/at-supports-whitespace.html.ini b/tests/wpt/metadata-layout-2020/css/css-conditional/at-supports-whitespace.html.ini new file mode 100644 index 00000000000..f6785bccb2c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-conditional/at-supports-whitespace.html.ini @@ -0,0 +1,48 @@ +[at-supports-whitespace.html] + [@supports ((a)) {}] + expected: FAIL + + [@supports ((a) ) {}] + expected: FAIL + + [@supports ( (a)) {}] + expected: FAIL + + [@supports ( (a) ) {}] + expected: FAIL + + [@supports (not (a)) {}] + expected: FAIL + + [@supports (not (a) ) {}] + expected: FAIL + + [@supports ( not (a)) {}] + expected: FAIL + + [@supports ( not (a) ) {}] + expected: FAIL + + [@supports ((a) and (b)) {}] + expected: FAIL + + [@supports ((a) and (b) ) {}] + expected: FAIL + + [@supports ( (a) and (b)) {}] + expected: FAIL + + [@supports ( (a) and (b) ) {}] + expected: FAIL + + [@supports ((a) or (b)) {}] + expected: FAIL + + [@supports ((a) or (b) ) {}] + expected: FAIL + + [@supports ( (a) or (b)) {}] + expected: FAIL + + [@supports ( (a) or (b) ) {}] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-conditional/idlharness.html.ini b/tests/wpt/metadata-layout-2020/css/css-conditional/idlharness.html.ini new file mode 100644 index 00000000000..7215ba915d4 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-conditional/idlharness.html.ini @@ -0,0 +1,3 @@ +[idlharness.html] + [CSSConditionRule interface: attribute conditionText] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-conditional/js/CSS-supports-L5.html.ini b/tests/wpt/metadata-layout-2020/css/css-conditional/js/CSS-supports-L5.html.ini new file mode 100644 index 00000000000..ff8d9cb9c66 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-conditional/js/CSS-supports-L5.html.ini @@ -0,0 +1,6 @@ +[CSS-supports-L5.html] + [font-format() function accepts a known format] + expected: FAIL + + [font-tech() function accepts a known technology] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-001.html.ini new file mode 100644 index 00000000000..a9623e23540 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-001.html.ini @@ -0,0 +1,15 @@ +[flex-align-baseline-001.html] + [#target > div 1] + expected: FAIL + + [#target > div 2] + expected: FAIL + + [#target > div 3] + expected: FAIL + + [#target > div 5] + expected: FAIL + + [#target > div 6] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-002.html.ini new file mode 100644 index 00000000000..b603dbe7ae7 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-002.html.ini @@ -0,0 +1,18 @@ +[flex-align-baseline-002.html] + [#target > div 1] + expected: FAIL + + [#target > div 2] + expected: FAIL + + [#target > div 3] + expected: FAIL + + [#target > div 4] + expected: FAIL + + [#target > div 5] + expected: FAIL + + [#target > div 6] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-003.html.ini new file mode 100644 index 00000000000..f9a38d75537 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-003.html.ini @@ -0,0 +1,18 @@ +[flex-align-baseline-003.html] + [#target > div 1] + expected: FAIL + + [#target > div 2] + expected: FAIL + + [#target > div 3] + expected: FAIL + + [#target > div 4] + expected: FAIL + + [#target > div 5] + expected: FAIL + + [#target > div 6] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-004.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-004.html.ini new file mode 100644 index 00000000000..52e1aa13ad6 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-004.html.ini @@ -0,0 +1,15 @@ +[flex-align-baseline-004.html] + [#target > div 1] + expected: FAIL + + [#target > div 3] + expected: FAIL + + [#target > div 4] + expected: FAIL + + [#target > div 5] + expected: FAIL + + [#target > div 6] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-005.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-005.html.ini new file mode 100644 index 00000000000..53288eff698 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-005.html.ini @@ -0,0 +1,6 @@ +[flex-align-baseline-005.html] + [#target > div 1] + expected: FAIL + + [#target > div 3] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-006.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-006.html.ini new file mode 100644 index 00000000000..29c075b0c05 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-006.html.ini @@ -0,0 +1,9 @@ +[flex-align-baseline-006.html] + [#target > div 1] + expected: FAIL + + [#target > div 2] + expected: FAIL + + [#target > div 3] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-007.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-007.html.ini new file mode 100644 index 00000000000..c65c407cad6 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-007.html.ini @@ -0,0 +1,9 @@ +[flex-align-baseline-007.html] + [#target > div 1] + expected: FAIL + + [#target > div 2] + expected: FAIL + + [#target > div 3] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-fieldset-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-fieldset-001.html.ini new file mode 100644 index 00000000000..3321ee9669c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-fieldset-001.html.ini @@ -0,0 +1,6 @@ +[flex-align-baseline-fieldset-001.html] + [.target > * 1] + expected: FAIL + + [.target > * 3] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-fieldset-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-fieldset-002.html.ini new file mode 100644 index 00000000000..de16f4df993 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-fieldset-002.html.ini @@ -0,0 +1,12 @@ +[flex-align-baseline-fieldset-002.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-fieldset-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-fieldset-003.html.ini new file mode 100644 index 00000000000..da6a039a40f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-fieldset-003.html.ini @@ -0,0 +1,12 @@ +[flex-align-baseline-fieldset-003.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-001.html.ini new file mode 100644 index 00000000000..03b16e1e2e3 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-001.html.ini @@ -0,0 +1,72 @@ +[flex-align-baseline-flex-001.html] + [.target > * 1] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 13] + expected: FAIL + + [.target > * 15] + expected: FAIL + + [.target > * 17] + expected: FAIL + + [.target > * 19] + expected: FAIL + + [.target > * 21] + expected: FAIL + + [.target > * 23] + expected: FAIL + + [.target > * 25] + expected: FAIL + + [.target > * 27] + expected: FAIL + + [.target > * 29] + expected: FAIL + + [.target > * 31] + expected: FAIL + + [.target > * 33] + expected: FAIL + + [.target > * 35] + expected: FAIL + + [.target > * 37] + expected: FAIL + + [.target > * 39] + expected: FAIL + + [.target > * 41] + expected: FAIL + + [.target > * 43] + expected: FAIL + + [.target > * 45] + expected: FAIL + + [.target > * 47] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-002.html.ini new file mode 100644 index 00000000000..b04b21acf99 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-002.html.ini @@ -0,0 +1,144 @@ +[flex-align-baseline-flex-002.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 6] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 8] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 10] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 12] + expected: FAIL + + [.target > * 13] + expected: FAIL + + [.target > * 14] + expected: FAIL + + [.target > * 15] + expected: FAIL + + [.target > * 16] + expected: FAIL + + [.target > * 17] + expected: FAIL + + [.target > * 18] + expected: FAIL + + [.target > * 19] + expected: FAIL + + [.target > * 20] + expected: FAIL + + [.target > * 21] + expected: FAIL + + [.target > * 22] + expected: FAIL + + [.target > * 23] + expected: FAIL + + [.target > * 24] + expected: FAIL + + [.target > * 25] + expected: FAIL + + [.target > * 26] + expected: FAIL + + [.target > * 27] + expected: FAIL + + [.target > * 28] + expected: FAIL + + [.target > * 29] + expected: FAIL + + [.target > * 30] + expected: FAIL + + [.target > * 31] + expected: FAIL + + [.target > * 32] + expected: FAIL + + [.target > * 33] + expected: FAIL + + [.target > * 34] + expected: FAIL + + [.target > * 35] + expected: FAIL + + [.target > * 36] + expected: FAIL + + [.target > * 37] + expected: FAIL + + [.target > * 38] + expected: FAIL + + [.target > * 39] + expected: FAIL + + [.target > * 40] + expected: FAIL + + [.target > * 41] + expected: FAIL + + [.target > * 42] + expected: FAIL + + [.target > * 43] + expected: FAIL + + [.target > * 44] + expected: FAIL + + [.target > * 45] + expected: FAIL + + [.target > * 46] + expected: FAIL + + [.target > * 47] + expected: FAIL + + [.target > * 48] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-003.html.ini new file mode 100644 index 00000000000..6f8fae1e8da --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-003.html.ini @@ -0,0 +1,24 @@ +[flex-align-baseline-flex-003.html] + [.target > * 1] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 13] + expected: FAIL + + [.target > * 15] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-004.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-004.html.ini new file mode 100644 index 00000000000..03cb2d4d484 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-flex-004.html.ini @@ -0,0 +1,48 @@ +[flex-align-baseline-flex-004.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 6] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 8] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 10] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 12] + expected: FAIL + + [.target > * 13] + expected: FAIL + + [.target > * 14] + expected: FAIL + + [.target > * 15] + expected: FAIL + + [.target > * 16] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-grid-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-grid-001.html.ini new file mode 100644 index 00000000000..488da9e7b39 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-grid-001.html.ini @@ -0,0 +1,18 @@ +[flex-align-baseline-grid-001.html] + [.target > * 1] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 11] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-grid-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-grid-002.html.ini new file mode 100644 index 00000000000..903b7ecb97b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-grid-002.html.ini @@ -0,0 +1,36 @@ +[flex-align-baseline-grid-002.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 6] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 8] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 10] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 12] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-grid-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-grid-003.html.ini new file mode 100644 index 00000000000..7a2253822dc --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-grid-003.html.ini @@ -0,0 +1,36 @@ +[flex-align-baseline-grid-003.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 6] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 8] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 10] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 12] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-line-clamp-001.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-line-clamp-001.tentative.html.ini new file mode 100644 index 00000000000..f99353e81f7 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-line-clamp-001.tentative.html.ini @@ -0,0 +1,36 @@ +[flex-align-baseline-line-clamp-001.tentative.html] + [.target > * 1] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 13] + expected: FAIL + + [.target > * 15] + expected: FAIL + + [.target > * 17] + expected: FAIL + + [.target > * 19] + expected: FAIL + + [.target > * 21] + expected: FAIL + + [.target > * 23] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-line-clamp-002.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-line-clamp-002.tentative.html.ini new file mode 100644 index 00000000000..d2979b1861d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-line-clamp-002.tentative.html.ini @@ -0,0 +1,72 @@ +[flex-align-baseline-line-clamp-002.tentative.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 6] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 8] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 10] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 12] + expected: FAIL + + [.target > * 13] + expected: FAIL + + [.target > * 14] + expected: FAIL + + [.target > * 15] + expected: FAIL + + [.target > * 16] + expected: FAIL + + [.target > * 17] + expected: FAIL + + [.target > * 18] + expected: FAIL + + [.target > * 19] + expected: FAIL + + [.target > * 20] + expected: FAIL + + [.target > * 21] + expected: FAIL + + [.target > * 22] + expected: FAIL + + [.target > * 23] + expected: FAIL + + [.target > * 24] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-line-clamp-003.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-line-clamp-003.tentative.html.ini new file mode 100644 index 00000000000..4eda46738b0 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-line-clamp-003.tentative.html.ini @@ -0,0 +1,72 @@ +[flex-align-baseline-line-clamp-003.tentative.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 6] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 8] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 10] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 12] + expected: FAIL + + [.target > * 13] + expected: FAIL + + [.target > * 14] + expected: FAIL + + [.target > * 15] + expected: FAIL + + [.target > * 16] + expected: FAIL + + [.target > * 17] + expected: FAIL + + [.target > * 18] + expected: FAIL + + [.target > * 19] + expected: FAIL + + [.target > * 20] + expected: FAIL + + [.target > * 21] + expected: FAIL + + [.target > * 22] + expected: FAIL + + [.target > * 23] + expected: FAIL + + [.target > * 24] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-multicol-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-multicol-001.html.ini new file mode 100644 index 00000000000..d9a75e17237 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-multicol-001.html.ini @@ -0,0 +1,18 @@ +[flex-align-baseline-multicol-001.html] + [.target > * 1] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 11] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-multicol-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-multicol-002.html.ini new file mode 100644 index 00000000000..ac62e905728 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-multicol-002.html.ini @@ -0,0 +1,36 @@ +[flex-align-baseline-multicol-002.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 6] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 8] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 10] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 12] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-multicol-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-multicol-003.html.ini new file mode 100644 index 00000000000..3882a49ab0c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-multicol-003.html.ini @@ -0,0 +1,36 @@ +[flex-align-baseline-multicol-003.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 6] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 8] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 10] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 12] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-overflow-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-overflow-001.html.ini new file mode 100644 index 00000000000..f37f7ebb4fe --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-overflow-001.html.ini @@ -0,0 +1,18 @@ +[flex-align-baseline-overflow-001.html] + [.target > * 1] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 6] + expected: FAIL + + [.target > * 8] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 11] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-overflow-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-overflow-002.html.ini new file mode 100644 index 00000000000..d1437e9f20b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-overflow-002.html.ini @@ -0,0 +1,27 @@ +[flex-align-baseline-overflow-002.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 6] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 8] + expected: FAIL + + [.target > * 12] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-overflow-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-overflow-003.html.ini new file mode 100644 index 00000000000..4d2deae6b4d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-overflow-003.html.ini @@ -0,0 +1,27 @@ +[flex-align-baseline-overflow-003.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 6] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 10] + expected: FAIL + + [.target > * 11] + expected: FAIL + + [.target > * 12] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-table-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-table-001.html.ini new file mode 100644 index 00000000000..be36f8f3c06 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-table-001.html.ini @@ -0,0 +1,18 @@ +[flex-align-baseline-table-001.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 7] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-table-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-table-002.html.ini new file mode 100644 index 00000000000..ab65fb539c5 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-table-002.html.ini @@ -0,0 +1,12 @@ +[flex-align-baseline-table-002.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-table-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-table-003.html.ini new file mode 100644 index 00000000000..4c7db489e55 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/alignment/flex-align-baseline-table-003.html.ini @@ -0,0 +1,12 @@ +[flex-align-baseline-table-003.html] + [.target > * 1] + expected: FAIL + + [.target > * 2] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/flex-minimum-height-flex-items-031.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/flex-minimum-height-flex-items-031.html.ini new file mode 100644 index 00000000000..b12194285ba --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/flex-minimum-height-flex-items-031.html.ini @@ -0,0 +1,216 @@ +[flex-minimum-height-flex-items-031.html] + [.flex 1] + expected: FAIL + + [.flex 2] + expected: FAIL + + [.flex 3] + expected: FAIL + + [.flex 4] + expected: FAIL + + [.flex 5] + expected: FAIL + + [.flex 6] + expected: FAIL + + [.flex 7] + expected: FAIL + + [.flex 8] + expected: FAIL + + [.flex 9] + expected: FAIL + + [.flex 10] + expected: FAIL + + [.flex 11] + expected: FAIL + + [.flex 12] + expected: FAIL + + [.flex 13] + expected: FAIL + + [.flex 14] + expected: FAIL + + [.flex 15] + expected: FAIL + + [.flex 16] + expected: FAIL + + [.flex 17] + expected: FAIL + + [.flex 18] + expected: FAIL + + [.flex 19] + expected: FAIL + + [.flex 20] + expected: FAIL + + [.flex 21] + expected: FAIL + + [.flex 22] + expected: FAIL + + [.flex 23] + expected: FAIL + + [.flex 24] + expected: FAIL + + [.flex 25] + expected: FAIL + + [.flex 26] + expected: FAIL + + [.flex 27] + expected: FAIL + + [.flex 28] + expected: FAIL + + [.flex 29] + expected: FAIL + + [.flex 30] + expected: FAIL + + [.flex 31] + expected: FAIL + + [.flex 32] + expected: FAIL + + [.flex 33] + expected: FAIL + + [.flex 34] + expected: FAIL + + [.flex 35] + expected: FAIL + + [.flex 36] + expected: FAIL + + [.flex 37] + expected: FAIL + + [.flex 38] + expected: FAIL + + [.flex 39] + expected: FAIL + + [.flex 40] + expected: FAIL + + [.flex 41] + expected: FAIL + + [.flex 42] + expected: FAIL + + [.flex 43] + expected: FAIL + + [.flex 44] + expected: FAIL + + [.flex 45] + expected: FAIL + + [.flex 46] + expected: FAIL + + [.flex 47] + expected: FAIL + + [.flex 48] + expected: FAIL + + [.flex 49] + expected: FAIL + + [.flex 50] + expected: FAIL + + [.flex 51] + expected: FAIL + + [.flex 52] + expected: FAIL + + [.flex 53] + expected: FAIL + + [.flex 54] + expected: FAIL + + [.flex 55] + expected: FAIL + + [.flex 56] + expected: FAIL + + [.flex 57] + expected: FAIL + + [.flex 58] + expected: FAIL + + [.flex 59] + expected: FAIL + + [.flex 60] + expected: FAIL + + [.flex 61] + expected: FAIL + + [.flex 62] + expected: FAIL + + [.flex 63] + expected: FAIL + + [.flex 64] + expected: FAIL + + [.flex 65] + expected: FAIL + + [.flex 66] + expected: FAIL + + [.flex 67] + expected: FAIL + + [.flex 68] + expected: FAIL + + [.flex 69] + expected: FAIL + + [.flex 70] + expected: FAIL + + [.flex 71] + expected: FAIL + + [.flex 72] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-anonymous-box.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-anonymous-box.html.ini new file mode 100644 index 00000000000..b8f8d45a31f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-anonymous-box.html.ini @@ -0,0 +1,3 @@ +[hittest-anonymous-box.html] + [Hit-testing within an anonymous flex-item should return the flexbox as the hittest result.] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-before-pseudo.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-before-pseudo.html.ini index 79eb41e58fb..5b685485f3c 100644 --- a/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-before-pseudo.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-before-pseudo.html.ini @@ -1,4 +1,3 @@ [hittest-before-pseudo.html] [Hit-testing text within a pseudo-element flex-item should return the flexbox as the hittest result.] expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-004.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-004.html.ini new file mode 100644 index 00000000000..0ccdd5159ed --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-004.html.ini @@ -0,0 +1,3 @@ +[col-wrap-004.html] + [body > div 1] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-005.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-005.html.ini new file mode 100644 index 00000000000..f2230e0a4ca --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-005.html.ini @@ -0,0 +1,3 @@ +[col-wrap-005.html] + [body > div 1] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-010.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-010.html.ini new file mode 100644 index 00000000000..e6fc6496735 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-010.html.ini @@ -0,0 +1,3 @@ +[col-wrap-010.html] + [body > div 1] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-018.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-018.html.ini new file mode 100644 index 00000000000..76ef2c453e7 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-018.html.ini @@ -0,0 +1,3 @@ +[col-wrap-018.html] + [body > div 1] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-019.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-019.html.ini new file mode 100644 index 00000000000..087ba03a604 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/col-wrap-019.html.ini @@ -0,0 +1,3 @@ +[col-wrap-019.html] + [body > div 1] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/row-005.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/row-005.html.ini new file mode 100644 index 00000000000..094f63989ea --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/row-005.html.ini @@ -0,0 +1,21 @@ +[row-005.html] + [.floating-flexbox 1] + expected: FAIL + + [.floating-flexbox 2] + expected: FAIL + + [.floating-flexbox 3] + expected: FAIL + + [.floating-flexbox 4] + expected: FAIL + + [.floating-flexbox 5] + expected: FAIL + + [.floating-flexbox 6] + expected: FAIL + + [.floating-flexbox 7] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/row-008.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/row-008.html.ini new file mode 100644 index 00000000000..d52317fd30a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/row-008.html.ini @@ -0,0 +1,33 @@ +[row-008.html] + [.min-width-flexbox 1] + expected: FAIL + + [.min-width-flexbox 2] + expected: FAIL + + [.min-width-flexbox 3] + expected: FAIL + + [.min-width-flexbox 4] + expected: FAIL + + [.min-width-flexbox 5] + expected: FAIL + + [.min-width-flexbox 6] + expected: FAIL + + [.min-width-flexbox 7] + expected: FAIL + + [.min-width-flexbox 8] + expected: FAIL + + [.min-width-flexbox 9] + expected: FAIL + + [.min-width-flexbox 10] + expected: FAIL + + [.min-width-flexbox 11] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/row-wrap-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/row-wrap-001.html.ini new file mode 100644 index 00000000000..f173ec22943 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/intrinsic-size/row-wrap-001.html.ini @@ -0,0 +1,12 @@ +[row-wrap-001.html] + [.floating-flexbox 2] + expected: FAIL + + [.floating-flexbox 3] + expected: FAIL + + [.floating-flexbox 4] + expected: FAIL + + [.floating-flexbox 5] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/negative-overflow-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/negative-overflow-002.html.ini new file mode 100644 index 00000000000..e96267fb496 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/negative-overflow-002.html.ini @@ -0,0 +1,216 @@ +[negative-overflow-002.html] + [.container 1] + expected: FAIL + + [.container 2] + expected: FAIL + + [.container 3] + expected: FAIL + + [.container 4] + expected: FAIL + + [.container 5] + expected: FAIL + + [.container 6] + expected: FAIL + + [.container 7] + expected: FAIL + + [.container 8] + expected: FAIL + + [.container 9] + expected: FAIL + + [.container 10] + expected: FAIL + + [.container 11] + expected: FAIL + + [.container 12] + expected: FAIL + + [.container 13] + expected: FAIL + + [.container 14] + expected: FAIL + + [.container 15] + expected: FAIL + + [.container 16] + expected: FAIL + + [.container 17] + expected: FAIL + + [.container 18] + expected: FAIL + + [.container 19] + expected: FAIL + + [.container 20] + expected: FAIL + + [.container 21] + expected: FAIL + + [.container 22] + expected: FAIL + + [.container 23] + expected: FAIL + + [.container 24] + expected: FAIL + + [.container 25] + expected: FAIL + + [.container 26] + expected: FAIL + + [.container 27] + expected: FAIL + + [.container 28] + expected: FAIL + + [.container 29] + expected: FAIL + + [.container 30] + expected: FAIL + + [.container 31] + expected: FAIL + + [.container 32] + expected: FAIL + + [.container 33] + expected: FAIL + + [.container 34] + expected: FAIL + + [.container 35] + expected: FAIL + + [.container 36] + expected: FAIL + + [.container 37] + expected: FAIL + + [.container 38] + expected: FAIL + + [.container 39] + expected: FAIL + + [.container 40] + expected: FAIL + + [.container 41] + expected: FAIL + + [.container 42] + expected: FAIL + + [.container 43] + expected: FAIL + + [.container 44] + expected: FAIL + + [.container 45] + expected: FAIL + + [.container 46] + expected: FAIL + + [.container 47] + expected: FAIL + + [.container 48] + expected: FAIL + + [.container 49] + expected: FAIL + + [.container 50] + expected: FAIL + + [.container 51] + expected: FAIL + + [.container 52] + expected: FAIL + + [.container 53] + expected: FAIL + + [.container 54] + expected: FAIL + + [.container 55] + expected: FAIL + + [.container 56] + expected: FAIL + + [.container 57] + expected: FAIL + + [.container 58] + expected: FAIL + + [.container 59] + expected: FAIL + + [.container 60] + expected: FAIL + + [.container 61] + expected: FAIL + + [.container 62] + expected: FAIL + + [.container 63] + expected: FAIL + + [.container 64] + expected: FAIL + + [.container 65] + expected: FAIL + + [.container 66] + expected: FAIL + + [.container 67] + expected: FAIL + + [.container 68] + expected: FAIL + + [.container 69] + expected: FAIL + + [.container 70] + expected: FAIL + + [.container 71] + expected: FAIL + + [.container 72] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/svg-root-as-flex-item-006.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/svg-root-as-flex-item-006.html.ini new file mode 100644 index 00000000000..6f5b9e95ccc --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/svg-root-as-flex-item-006.html.ini @@ -0,0 +1,3 @@ +[svg-root-as-flex-item-006.html] + [svg 1] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/animations/font-stretch-interpolation.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/animations/font-stretch-interpolation.html.ini index 9e947cd12a5..7e233a93688 100644 --- a/tests/wpt/metadata-layout-2020/css/css-fonts/animations/font-stretch-interpolation.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/animations/font-stretch-interpolation.html.ini @@ -35,9 +35,6 @@ [Web Animations: property from neutral to [200%\] at (-0.25) should be [75%\]] expected: FAIL - [CSS Animations: property from [initial\] to [inherit\] at (1) should be [200%\]] - expected: FAIL - [Web Animations: property from [initial\] to [inherit\] at (0) should be [100%\]] expected: FAIL @@ -62,9 +59,6 @@ [An interpolation to inherit updates correctly on a parent style change.] expected: FAIL - [CSS Animations: property from [initial\] to [inherit\] at (1.5) should be [250%\]] - expected: FAIL - [Web Animations: property from [100%\] to [200%\] at (1.5) should be [250%\]] expected: FAIL @@ -113,12 +107,6 @@ [Web Animations: property from [100%\] to [200%\] at (0.6) should be [160%\]] expected: FAIL - [CSS Animations: property from [initial\] to [inherit\] at (-0.25) should be [75%\]] - expected: FAIL - - [CSS Animations: property from [initial\] to [inherit\] at (-2) should be [0%\]] - expected: FAIL - [Web Animations: property from [condensed\] to [expanded\] at (0.25) should be [semi-condensed\]] expected: FAIL @@ -137,9 +125,6 @@ [Web Animations: property from [semi-condensed\] to [semi-expanded\] at (1) should be [semi-expanded\]] expected: FAIL - [CSS Animations: property from [initial\] to [inherit\] at (0.3) should be [130%\]] - expected: FAIL - [Web Animations: property from [normal\] to [ultra-expanded\] at (0.5) should be [extra-expanded\]] expected: FAIL @@ -149,12 +134,80 @@ [Web Animations: property from [initial\] to [inherit\] at (0.6) should be [160%\]] expected: FAIL - [CSS Animations: property from [initial\] to [inherit\] at (0.6) should be [160%\]] - expected: FAIL - [Web Animations: property from [initial\] to [inherit\] at (-0.25) should be [75%\]] expected: FAIL [Web Animations: property from neutral to [200%\] at (0.6) should be [160%\]] expected: FAIL + [Web Animations: property from [normal\] to [ultra-expanded\] at (-0.25) should be [75%\]] + expected: FAIL + + [Web Animations: property from [normal\] to [ultra-expanded\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [normal\] to [ultra-expanded\] at (0.125) should be [112.5%\]] + expected: FAIL + + [Web Animations: property from [normal\] to [ultra-expanded\] at (0.25) should be [125%\]] + expected: FAIL + + [Web Animations: property from [normal\] to [ultra-expanded\] at (0.5) should be [150%\]] + expected: FAIL + + [Web Animations: property from [normal\] to [ultra-expanded\] at (1) should be [200%\]] + expected: FAIL + + [Web Animations: property from [ultra-condensed\] to [condensed\] at (0) should be [50%\]] + expected: FAIL + + [Web Animations: property from [ultra-condensed\] to [condensed\] at (0.5) should be [62.5%\]] + expected: FAIL + + [Web Animations: property from [ultra-condensed\] to [condensed\] at (1) should be [75%\]] + expected: FAIL + + [Web Animations: property from [extra-condensed\] to [semi-condensed\] at (0) should be [62.5%\]] + expected: FAIL + + [Web Animations: property from [extra-condensed\] to [semi-condensed\] at (0.5) should be [75%\]] + expected: FAIL + + [Web Animations: property from [extra-condensed\] to [semi-condensed\] at (1) should be [87.5%\]] + expected: FAIL + + [Web Animations: property from [condensed\] to [expanded\] at (0) should be [75%\]] + expected: FAIL + + [Web Animations: property from [condensed\] to [expanded\] at (0.25) should be [87.5%\]] + expected: FAIL + + [Web Animations: property from [condensed\] to [expanded\] at (0.5) should be [100%\]] + expected: FAIL + + [Web Animations: property from [condensed\] to [expanded\] at (0.75) should be [112.5%\]] + expected: FAIL + + [Web Animations: property from [condensed\] to [expanded\] at (1) should be [125%\]] + expected: FAIL + + [Web Animations: property from [semi-condensed\] to [semi-expanded\] at (0) should be [87.5%\]] + expected: FAIL + + [Web Animations: property from [semi-condensed\] to [semi-expanded\] at (0.5) should be [100%\]] + expected: FAIL + + [Web Animations: property from [semi-condensed\] to [semi-expanded\] at (1) should be [112.5%\]] + expected: FAIL + + [Web Animations: property from [normal\] to [extra-expanded\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [normal\] to [extra-expanded\] at (0.25) should be [112.5%\]] + expected: FAIL + + [Web Animations: property from [normal\] to [extra-expanded\] at (0.5) should be [125%\]] + expected: FAIL + + [Web Animations: property from [normal\] to [extra-expanded\] at (1) should be [150%\]] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/cjk-kerning.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/cjk-kerning.html.ini new file mode 100644 index 00000000000..64d133ea676 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/cjk-kerning.html.ini @@ -0,0 +1,9 @@ +[cjk-kerning.html] + [expected mismatch: .kernOFF .latin vs .kernON .latin] + expected: FAIL + + [expected mismatch: .kernOFF .cjk vs .kernON .cjk] + expected: FAIL + + [expected mismatch: .paltOFFkernON .cjk vs .paltONkernON .cjk] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/idlharness.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/idlharness.html.ini index 26c7d72893b..e11751fc2ec 100644 --- a/tests/wpt/metadata-layout-2020/css/css-fonts/idlharness.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/idlharness.html.ini @@ -106,3 +106,6 @@ [CSSRule interface: cssRule must inherit property "FONT_FEATURE_VALUES_RULE" with the proper type] expected: FAIL + + [CSSFontFeatureValuesMap interface: maplike] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/inheritance.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/inheritance.html.ini index 3bfe0639a54..0f6acf0e7fa 100644 --- a/tests/wpt/metadata-layout-2020/css/css-fonts/inheritance.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/inheritance.html.ini @@ -76,3 +76,9 @@ [Property font-variation-settings inherits] expected: FAIL + + [Property font-variant-emoji has initial value normal] + expected: FAIL + + [Property font-variant-emoji inherits] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-face-src-format.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-face-src-format.html.ini new file mode 100644 index 00000000000..b80ce93bea2 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-face-src-format.html.ini @@ -0,0 +1,2 @@ +[font-face-src-format.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-face-src-local.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-face-src-local.html.ini new file mode 100644 index 00000000000..3ae9067e630 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-face-src-local.html.ini @@ -0,0 +1,2 @@ +[font-face-src-local.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-face-src-tech.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-face-src-tech.html.ini new file mode 100644 index 00000000000..a900d2b5ba9 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-face-src-tech.html.ini @@ -0,0 +1,2 @@ +[font-face-src-tech.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-shorthand-variant.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-shorthand-variant.html.ini new file mode 100644 index 00000000000..1bd1ebd7f20 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-shorthand-variant.html.ini @@ -0,0 +1,3 @@ +[font-shorthand-variant.html] + [font shorthand returns only CSS2 font-variant values] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-variant-emoji-computed.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-variant-emoji-computed.html.ini new file mode 100644 index 00000000000..14ba523765c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-variant-emoji-computed.html.ini @@ -0,0 +1,12 @@ +[font-variant-emoji-computed.html] + [Property font-variant-emoji value 'normal'] + expected: FAIL + + [Property font-variant-emoji value 'text'] + expected: FAIL + + [Property font-variant-emoji value 'emoji'] + expected: FAIL + + [Property font-variant-emoji value 'unicode'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-variant-emoji-valid.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-variant-emoji-valid.html.ini new file mode 100644 index 00000000000..250f8d0cf85 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-variant-emoji-valid.html.ini @@ -0,0 +1,12 @@ +[font-variant-emoji-valid.html] + [e.style['font-variant-emoji'\] = "normal" should set the property value] + expected: FAIL + + [e.style['font-variant-emoji'\] = "text" should set the property value] + expected: FAIL + + [e.style['font-variant-emoji'\] = "emoji" should set the property value] + expected: FAIL + + [e.style['font-variant-emoji'\] = "unicode" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-variant-serialization.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-variant-serialization.html.ini new file mode 100644 index 00000000000..3fc717dbb04 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/parsing/font-variant-serialization.html.ini @@ -0,0 +1,3 @@ +[font-variant-serialization.html] + [checking serialized value of font-variant] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-descriptors.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-descriptors.html.ini index 960a5f9a7ea..34808ebe7ef 100644 --- a/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-descriptors.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-descriptors.html.ini @@ -259,3 +259,12 @@ [font-style(invalid): Extra content after upper bound: oblique 10deg 20deg 30deg] expected: FAIL + + [font-style(valid): 'oblique' followed by former default 20deg angle: oblique 20deg] + expected: FAIL + + [font-style(valid): 'oblique' followed by angle in radians: oblique 0rad] + expected: FAIL + + [font-style(valid): Simple range with former default angle for both bounds: oblique 20deg 20deg] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-font-matching.html.ini index 8dbb34a1f1f..90596af9f12 100644 --- a/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-font-matching.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-font-matching.html.ini @@ -143,9 +143,6 @@ [Matching font-style: 'normal' should prefer 'oblique 20deg 30deg' over 'oblique -50deg -20deg'] expected: FAIL - [Matching font-style: 'normal' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg'] - expected: FAIL - [Matching font-style: 'italic' should prefer 'italic' over 'oblique 20deg'] expected: FAIL @@ -316,3 +313,12 @@ [Matching font-style: 'oblique 0deg' should prefer 'italic' over 'oblique -50deg -20deg'] expected: FAIL + + [Matching font-style: 'oblique 20deg' should prefer 'oblique 10deg' over 'italic'] + expected: FAIL + + [Matching font-style: 'oblique 21deg' should prefer 'oblique 40deg 50deg' over 'oblique 20deg'] + expected: FAIL + + [Matching font-style: 'oblique -21deg' should prefer 'oblique -21deg' over 'oblique -60deg -40deg'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/object-view-box-interpolation.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/object-view-box-interpolation.html.ini new file mode 100644 index 00000000000..f2b138b2dcd --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/object-view-box-interpolation.html.ini @@ -0,0 +1,144 @@ +[object-view-box-interpolation.html] + [CSS Transitions: property from [inset(0px)\] to [inset(20px)\] at (0) should be [inset(0px)\]] + expected: FAIL + + [CSS Transitions: property from [inset(0px)\] to [inset(20px)\] at (0.5) should be [inset(10px)\]] + expected: FAIL + + [CSS Transitions: property from [inset(0px)\] to [inset(20px)\] at (1) should be [inset(20px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inset(0px)\] to [inset(20px)\] at (0) should be [inset(0px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inset(0px)\] to [inset(20px)\] at (0.5) should be [inset(10px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inset(0px)\] to [inset(20px)\] at (1) should be [inset(20px)\]] + expected: FAIL + + [CSS Animations: property from [inset(0px)\] to [inset(20px)\] at (0) should be [inset(0px)\]] + expected: FAIL + + [CSS Animations: property from [inset(0px)\] to [inset(20px)\] at (0.5) should be [inset(10px)\]] + expected: FAIL + + [CSS Animations: property from [inset(0px)\] to [inset(20px)\] at (1) should be [inset(20px)\]] + expected: FAIL + + [Web Animations: property from [inset(0px)\] to [inset(20px)\] at (0) should be [inset(0px)\]] + expected: FAIL + + [Web Animations: property from [inset(0px)\] to [inset(20px)\] at (0.5) should be [inset(10px)\]] + expected: FAIL + + [Web Animations: property from [inset(0px)\] to [inset(20px)\] at (1) should be [inset(20px)\]] + expected: FAIL + + [CSS Transitions: property from [inset(0%)\] to [inset(20%)\] at (0) should be [inset(0%)\]] + expected: FAIL + + [CSS Transitions: property from [inset(0%)\] to [inset(20%)\] at (0.5) should be [inset(10%)\]] + expected: FAIL + + [CSS Transitions: property from [inset(0%)\] to [inset(20%)\] at (1) should be [inset(20%)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inset(0%)\] to [inset(20%)\] at (0) should be [inset(0%)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inset(0%)\] to [inset(20%)\] at (0.5) should be [inset(10%)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inset(0%)\] to [inset(20%)\] at (1) should be [inset(20%)\]] + expected: FAIL + + [CSS Animations: property from [inset(0%)\] to [inset(20%)\] at (0) should be [inset(0%)\]] + expected: FAIL + + [CSS Animations: property from [inset(0%)\] to [inset(20%)\] at (0.5) should be [inset(10%)\]] + expected: FAIL + + [CSS Animations: property from [inset(0%)\] to [inset(20%)\] at (1) should be [inset(20%)\]] + expected: FAIL + + [Web Animations: property from [inset(0%)\] to [inset(20%)\] at (0) should be [inset(0%)\]] + expected: FAIL + + [Web Animations: property from [inset(0%)\] to [inset(20%)\] at (0.5) should be [inset(10%)\]] + expected: FAIL + + [Web Animations: property from [inset(0%)\] to [inset(20%)\] at (1) should be [inset(20%)\]] + expected: FAIL + + [CSS Transitions: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (0) should be [rect(0px 10px 20px 30px)\]] + expected: FAIL + + [CSS Transitions: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (0.5) should be [rect(5px 15px 25px 35px)\]] + expected: FAIL + + [CSS Transitions: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (1) should be [rect(10px 20px 30px 40px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (0) should be [rect(0px 10px 20px 30px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (0.5) should be [rect(5px 15px 25px 35px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (1) should be [rect(10px 20px 30px 40px)\]] + expected: FAIL + + [CSS Animations: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (0) should be [rect(0px 10px 20px 30px)\]] + expected: FAIL + + [CSS Animations: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (0.5) should be [rect(5px 15px 25px 35px)\]] + expected: FAIL + + [CSS Animations: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (1) should be [rect(10px 20px 30px 40px)\]] + expected: FAIL + + [Web Animations: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (0) should be [rect(0px 10px 20px 30px)\]] + expected: FAIL + + [Web Animations: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (0.5) should be [rect(5px 15px 25px 35px)\]] + expected: FAIL + + [Web Animations: property from [rect(0px 10px 20px 30px)\] to [rect(10px 20px 30px 40px)\] at (1) should be [rect(10px 20px 30px 40px)\]] + expected: FAIL + + [CSS Transitions: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (0) should be [xywh(0px 10px 20px 30px)\]] + expected: FAIL + + [CSS Transitions: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (0.5) should be [xywh(5px 15px 25px 35px)\]] + expected: FAIL + + [CSS Transitions: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (1) should be [xywh(10px 20px 30px 40px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (0) should be [xywh(0px 10px 20px 30px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (0.5) should be [xywh(5px 15px 25px 35px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (1) should be [xywh(10px 20px 30px 40px)\]] + expected: FAIL + + [CSS Animations: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (0) should be [xywh(0px 10px 20px 30px)\]] + expected: FAIL + + [CSS Animations: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (0.5) should be [xywh(5px 15px 25px 35px)\]] + expected: FAIL + + [CSS Animations: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (1) should be [xywh(10px 20px 30px 40px)\]] + expected: FAIL + + [Web Animations: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (0) should be [xywh(0px 10px 20px 30px)\]] + expected: FAIL + + [Web Animations: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (0.5) should be [xywh(5px 15px 25px 35px)\]] + expected: FAIL + + [Web Animations: property from [xywh(0px 10px 20px 30px)\] to [xywh(10px 20px 30px 40px)\] at (1) should be [xywh(10px 20px 30px 40px)\]] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/object-view-box-parsing.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/object-view-box-parsing.html.ini new file mode 100644 index 00000000000..e02ca66886d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/object-view-box-parsing.html.ini @@ -0,0 +1,18 @@ +[object-view-box-parsing.html] + [e.style['object-view-box'\] = "inset(10%)" should set the property value] + expected: FAIL + + [e.style['object-view-box'\] = "inset(10px 20px 30px 40px)" should set the property value] + expected: FAIL + + [e.style['object-view-box'\] = "rect(1px 10% 100px 50%)" should set the property value] + expected: FAIL + + [e.style['object-view-box'\] = "rect(auto auto auto auto)" should set the property value] + expected: FAIL + + [e.style['object-view-box'\] = "rect(auto 5px auto 10%)" should set the property value] + expected: FAIL + + [e.style['object-view-box'\] = "xywh(1px 10% 100px 50%)" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/object-view-box-transition-mutation.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/object-view-box-transition-mutation.html.ini new file mode 100644 index 00000000000..d01a9fe0663 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/object-view-box-transition-mutation.html.ini @@ -0,0 +1,3 @@ +[object-view-box-transition-mutation.html] + [Unrelated mutation does not affect object-view-box transition] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/parsing/gradient-interpolation-method-computed.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/parsing/gradient-interpolation-method-computed.html.ini new file mode 100644 index 00000000000..ac3cd32db81 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/parsing/gradient-interpolation-method-computed.html.ini @@ -0,0 +1,2787 @@ +[gradient-interpolation-method-computed.html] + [Property background-image value 'linear-gradient(30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lab, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lab, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lab 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lab, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lab to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lab 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lab to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklab, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklab, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklab 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklab, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklab to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklab 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklab to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in srgb, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in srgb, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in srgb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in srgb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb-linear, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in srgb-linear, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb-linear 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in srgb-linear, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb-linear to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb-linear, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in srgb-linear, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb-linear 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in srgb-linear, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in srgb-linear to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in xyz, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in xyz, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in xyz, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in xyz, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d50, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in xyz-d50, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d50 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in xyz-d50, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d50 to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d50, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in xyz-d50, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d50 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in xyz-d50, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d50 to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d65, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in xyz-d65, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d65 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in xyz-d65, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d65 to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d65, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in xyz-d65, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d65 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in xyz-d65, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in xyz-d65 to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hsl, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hsl, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hsl, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hsl, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hsl shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl shorter hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hsl shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl shorter hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hsl shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl shorter hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hsl shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl shorter hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hsl longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl longer hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hsl longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl longer hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hsl longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl longer hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hsl longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl longer hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hsl increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl increasing hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hsl increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl increasing hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hsl increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl increasing hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hsl increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl increasing hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hsl decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl decreasing hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hsl decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl decreasing hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hsl decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl decreasing hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hsl decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hsl decreasing hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hwb, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hwb, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hwb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hwb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hwb shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb shorter hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hwb shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb shorter hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hwb shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb shorter hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hwb shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb shorter hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hwb longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb longer hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hwb longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb longer hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hwb longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb longer hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hwb longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb longer hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hwb increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb increasing hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hwb increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb increasing hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hwb increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb increasing hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hwb increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb increasing hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hwb decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb decreasing hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hwb decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb decreasing hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in hwb decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb decreasing hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in hwb decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in hwb decreasing hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lch, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lch, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch shorter hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch shorter hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch shorter hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch shorter hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch longer hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch longer hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch longer hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch longer hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch increasing hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch increasing hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch increasing hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch increasing hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch decreasing hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch decreasing hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in lch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch decreasing hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in lch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in lch decreasing hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklch, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklch, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch shorter hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch shorter hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch shorter hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch shorter hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch longer hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch longer hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch longer hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch longer hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch increasing hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch increasing hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch increasing hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch increasing hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch decreasing hue 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch decreasing hue to right bottom, red, blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(30deg in oklch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch decreasing hue 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(to right bottom in oklch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'linear-gradient(in oklch decreasing hue to right bottom, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lab, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lab, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lab 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lab, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lab ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lab, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lab at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lab 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lab ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lab at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklab, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklab, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklab 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklab, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklab ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklab, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklab at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklab 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklab ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklab at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in srgb, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in srgb, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in srgb, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in srgb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in srgb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in srgb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb-linear, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in srgb-linear, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb-linear 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in srgb-linear, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb-linear ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in srgb-linear, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb-linear at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb-linear, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in srgb-linear, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb-linear 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in srgb-linear, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb-linear ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in srgb-linear, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in srgb-linear at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in xyz, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in xyz, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in xyz, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in xyz, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in xyz, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in xyz, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d50, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in xyz-d50, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d50 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in xyz-d50, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d50 ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in xyz-d50, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d50 at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d50, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in xyz-d50, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d50 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in xyz-d50, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d50 ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in xyz-d50, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d50 at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d65, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in xyz-d65, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d65 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in xyz-d65, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d65 ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in xyz-d65, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d65 at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d65, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in xyz-d65, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d65 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in xyz-d65, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d65 ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in xyz-d65, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in xyz-d65 at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hsl, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hsl, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hsl, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hsl, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hsl, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hsl, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hsl shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl shorter hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hsl shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl shorter hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hsl shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl shorter hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hsl shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl shorter hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hsl shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl shorter hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hsl shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl shorter hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hsl longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl longer hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hsl longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl longer hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hsl longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl longer hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hsl longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl longer hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hsl longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl longer hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hsl longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl longer hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hsl increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl increasing hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hsl increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl increasing hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hsl increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl increasing hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hsl increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl increasing hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hsl increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl increasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hsl increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl increasing hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hsl decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl decreasing hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hsl decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl decreasing hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hsl decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl decreasing hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hsl decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl decreasing hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hsl decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl decreasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hsl decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hsl decreasing hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hwb, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hwb, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hwb, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hwb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hwb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hwb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hwb shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb shorter hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hwb shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb shorter hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hwb shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb shorter hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hwb shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb shorter hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hwb shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb shorter hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hwb shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb shorter hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hwb longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb longer hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hwb longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb longer hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hwb longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb longer hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hwb longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb longer hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hwb longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb longer hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hwb longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb longer hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hwb increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb increasing hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hwb increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb increasing hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hwb increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb increasing hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hwb increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb increasing hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hwb increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb increasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hwb increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb increasing hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hwb decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb decreasing hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hwb decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb decreasing hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hwb decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb decreasing hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in hwb decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb decreasing hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in hwb decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb decreasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in hwb decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in hwb decreasing hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lch, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lch, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lch, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch shorter hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch shorter hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch shorter hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch shorter hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch shorter hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch shorter hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch longer hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch longer hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch longer hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch longer hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch longer hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch longer hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch increasing hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch increasing hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch increasing hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch increasing hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch increasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch increasing hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch decreasing hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch decreasing hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch decreasing hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in lch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch decreasing hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in lch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch decreasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in lch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in lch decreasing hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklch, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklch, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklch, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch shorter hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch shorter hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch shorter hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch shorter hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch shorter hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch shorter hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch longer hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch longer hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch longer hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch longer hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch longer hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch longer hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch increasing hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch increasing hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch increasing hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch increasing hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch increasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch increasing hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch decreasing hue 50px, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch decreasing hue ellipse 50% 40em, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch decreasing hue at right center, red, blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(50px in oklch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch decreasing hue 50px, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(ellipse 50% 40em in oklch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch decreasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(at right center in oklch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'radial-gradient(in oklch decreasing hue at right center, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lab, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lab, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lab from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lab, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lab at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lab from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lab at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklab, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklab, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklab from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklab, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklab at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklab from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklab, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklab at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in srgb, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in srgb, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in srgb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in srgb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb-linear, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in srgb-linear, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb-linear from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in srgb-linear, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb-linear at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb-linear, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in srgb-linear, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb-linear from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in srgb-linear, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in srgb-linear at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in xyz, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in xyz, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in xyz, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in xyz, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d50, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in xyz-d50, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d50 from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in xyz-d50, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d50 at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d50, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in xyz-d50, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d50 from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in xyz-d50, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d50 at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d65, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in xyz-d65, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d65 from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in xyz-d65, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d65 at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d65, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in xyz-d65, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d65 from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in xyz-d65, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in xyz-d65 at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hsl, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hsl, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hsl, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hsl, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hsl shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl shorter hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hsl shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl shorter hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hsl shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl shorter hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hsl shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl shorter hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hsl longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl longer hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hsl longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl longer hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hsl longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl longer hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hsl longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl longer hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hsl increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl increasing hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hsl increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl increasing hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hsl increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl increasing hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hsl increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl increasing hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hsl decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl decreasing hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hsl decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl decreasing hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hsl decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl decreasing hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hsl decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hsl decreasing hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hwb, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hwb, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hwb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hwb, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hwb shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb shorter hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hwb shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb shorter hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hwb shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb shorter hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hwb shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb shorter hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hwb longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb longer hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hwb longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb longer hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hwb longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb longer hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hwb longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb longer hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hwb increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb increasing hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hwb increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb increasing hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hwb increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb increasing hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hwb increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb increasing hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hwb decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb decreasing hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hwb decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb decreasing hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in hwb decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb decreasing hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in hwb decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in hwb decreasing hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lch, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lch, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch shorter hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch shorter hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch shorter hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch shorter hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch longer hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch longer hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch longer hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch longer hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch increasing hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch increasing hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch increasing hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch increasing hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch decreasing hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch decreasing hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in lch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch decreasing hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in lch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in lch decreasing hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklch, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklch, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklch, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch shorter hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklch shorter hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch shorter hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch shorter hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklch shorter hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch shorter hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch longer hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklch longer hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch longer hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch longer hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklch longer hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch longer hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch increasing hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklch increasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch increasing hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch increasing hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklch increasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch increasing hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch decreasing hue from 30deg, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklch decreasing hue, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch decreasing hue at left 10px top 50em, red, blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(from 30deg in oklch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch decreasing hue from 30deg, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(at left 10px top 50em in oklch decreasing hue, color(srgb 1 0 0), blue)'] + expected: FAIL + + [Property background-image value 'conic-gradient(in oklch decreasing hue at left 10px top 50em, color(srgb 1 0 0), blue)'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/parsing/gradient-interpolation-method-valid.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/parsing/gradient-interpolation-method-valid.html.ini new file mode 100644 index 00000000000..b44a302ce26 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/parsing/gradient-interpolation-method-valid.html.ini @@ -0,0 +1,2781 @@ +[gradient-interpolation-method-valid.html] + [e.style['background-image'\] = "linear-gradient(30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lab 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lab to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lab 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lab to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklab 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklab to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklab 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklab to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in srgb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in srgb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in srgb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in srgb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb-linear, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in srgb-linear, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb-linear 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in srgb-linear, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb-linear to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb-linear, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in srgb-linear, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb-linear 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in srgb-linear, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in srgb-linear to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in xyz, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in xyz, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in xyz, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in xyz, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d50, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in xyz-d50, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d50 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in xyz-d50, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d50 to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d50, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in xyz-d50, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d50 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in xyz-d50, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d50 to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d65, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in xyz-d65, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d65 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in xyz-d65, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d65 to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d65, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in xyz-d65, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d65 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in xyz-d65, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in xyz-d65 to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hsl, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hsl, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hsl, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hsl, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hsl shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl shorter hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hsl shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl shorter hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hsl shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl shorter hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hsl shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl shorter hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hsl longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl longer hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hsl longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl longer hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hsl longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl longer hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hsl longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl longer hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hsl increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl increasing hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hsl increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl increasing hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hsl increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl increasing hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hsl increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl increasing hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hsl decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl decreasing hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hsl decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl decreasing hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hsl decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl decreasing hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hsl decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hsl decreasing hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hwb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hwb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hwb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hwb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hwb shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb shorter hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hwb shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb shorter hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hwb shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb shorter hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hwb shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb shorter hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hwb longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb longer hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hwb longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb longer hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hwb longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb longer hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hwb longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb longer hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hwb increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb increasing hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hwb increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb increasing hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hwb increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb increasing hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hwb increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb increasing hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hwb decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb decreasing hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hwb decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb decreasing hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in hwb decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb decreasing hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in hwb decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in hwb decreasing hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch shorter hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch shorter hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch shorter hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch shorter hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch longer hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch longer hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch longer hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch longer hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch increasing hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch increasing hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch increasing hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch increasing hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch decreasing hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch decreasing hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in lch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch decreasing hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in lch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in lch decreasing hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch shorter hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch shorter hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch shorter hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch shorter hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch longer hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch longer hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch longer hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch longer hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch increasing hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch increasing hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch increasing hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch increasing hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch decreasing hue 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch decreasing hue to right bottom, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(30deg in oklch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch decreasing hue 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(to right bottom in oklch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "linear-gradient(in oklch decreasing hue to right bottom, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lab 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lab ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lab at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lab 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lab ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lab at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklab 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklab ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklab at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklab 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklab ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklab at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in srgb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in srgb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in srgb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in srgb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in srgb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in srgb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb-linear, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in srgb-linear, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb-linear 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in srgb-linear, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb-linear ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in srgb-linear, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb-linear at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb-linear, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in srgb-linear, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb-linear 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in srgb-linear, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb-linear ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in srgb-linear, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in srgb-linear at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in xyz, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in xyz, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in xyz, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in xyz, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in xyz, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in xyz, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d50, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in xyz-d50, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d50 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in xyz-d50, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d50 ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in xyz-d50, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d50 at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d50, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in xyz-d50, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d50 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in xyz-d50, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d50 ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in xyz-d50, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d50 at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d65, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in xyz-d65, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d65 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in xyz-d65, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d65 ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in xyz-d65, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d65 at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d65, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in xyz-d65, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d65 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in xyz-d65, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d65 ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in xyz-d65, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in xyz-d65 at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hsl, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hsl, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hsl, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hsl, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hsl, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hsl, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hsl shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl shorter hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hsl shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl shorter hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hsl shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl shorter hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hsl shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl shorter hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hsl shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl shorter hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hsl shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl shorter hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hsl longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl longer hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hsl longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl longer hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hsl longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl longer hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hsl longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl longer hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hsl longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl longer hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hsl longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl longer hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hsl increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl increasing hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hsl increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl increasing hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hsl increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl increasing hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hsl increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl increasing hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hsl increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl increasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hsl increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl increasing hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hsl decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl decreasing hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hsl decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl decreasing hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hsl decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl decreasing hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hsl decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl decreasing hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hsl decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl decreasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hsl decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hsl decreasing hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hwb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hwb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hwb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hwb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hwb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hwb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hwb shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb shorter hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hwb shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb shorter hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hwb shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb shorter hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hwb shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb shorter hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hwb shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb shorter hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hwb shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb shorter hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hwb longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb longer hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hwb longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb longer hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hwb longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb longer hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hwb longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb longer hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hwb longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb longer hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hwb longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb longer hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hwb increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb increasing hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hwb increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb increasing hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hwb increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb increasing hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hwb increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb increasing hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hwb increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb increasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hwb increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb increasing hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hwb decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb decreasing hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hwb decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb decreasing hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hwb decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb decreasing hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in hwb decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb decreasing hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in hwb decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb decreasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in hwb decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in hwb decreasing hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch shorter hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch shorter hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch shorter hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch shorter hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch shorter hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch shorter hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch longer hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch longer hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch longer hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch longer hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch longer hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch longer hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch increasing hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch increasing hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch increasing hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch increasing hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch increasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch increasing hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch decreasing hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch decreasing hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch decreasing hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in lch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch decreasing hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in lch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch decreasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in lch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in lch decreasing hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch shorter hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch shorter hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch shorter hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch shorter hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch shorter hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch shorter hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch longer hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch longer hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch longer hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch longer hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch longer hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch longer hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch increasing hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch increasing hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch increasing hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch increasing hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch increasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch increasing hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch decreasing hue 50px, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch decreasing hue ellipse 50% 40em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch decreasing hue at right center, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(50px in oklch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch decreasing hue 50px, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(ellipse 50% 40em in oklch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch decreasing hue ellipse 50% 40em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(at right center in oklch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "radial-gradient(in oklch decreasing hue at right center, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lab from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lab at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lab from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lab at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklab from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklab, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklab at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklab from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklab, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklab at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in srgb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in srgb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in srgb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in srgb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb-linear, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in srgb-linear, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb-linear from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in srgb-linear, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb-linear at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb-linear, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in srgb-linear, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb-linear from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in srgb-linear, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in srgb-linear at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in xyz, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in xyz, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in xyz, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in xyz, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d50, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in xyz-d50, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d50 from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in xyz-d50, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d50 at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d50, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in xyz-d50, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d50 from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in xyz-d50, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d50 at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d65, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in xyz-d65, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d65 from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in xyz-d65, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d65 at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d65, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in xyz-d65, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d65 from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in xyz-d65, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in xyz-d65 at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hsl, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hsl, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hsl, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hsl, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hsl shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl shorter hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hsl shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl shorter hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hsl shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl shorter hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hsl shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl shorter hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hsl longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl longer hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hsl longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl longer hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hsl longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl longer hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hsl longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl longer hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hsl increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl increasing hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hsl increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl increasing hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hsl increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl increasing hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hsl increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl increasing hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hsl decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl decreasing hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hsl decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl decreasing hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hsl decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl decreasing hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hsl decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hsl decreasing hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hwb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hwb, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hwb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hwb, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hwb shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb shorter hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hwb shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb shorter hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hwb shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb shorter hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hwb shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb shorter hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hwb longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb longer hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hwb longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb longer hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hwb longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb longer hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hwb longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb longer hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hwb increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb increasing hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hwb increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb increasing hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hwb increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb increasing hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hwb increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb increasing hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hwb decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb decreasing hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hwb decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb decreasing hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in hwb decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb decreasing hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in hwb decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in hwb decreasing hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch shorter hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch shorter hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch shorter hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch shorter hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch longer hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch longer hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch longer hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch longer hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch increasing hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch increasing hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch increasing hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch increasing hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch decreasing hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch decreasing hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in lch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch decreasing hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in lch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in lch decreasing hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklch, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklch, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch shorter hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklch shorter hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch shorter hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch shorter hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklch shorter hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch shorter hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch longer hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklch longer hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch longer hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch longer hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklch longer hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch longer hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch increasing hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklch increasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch increasing hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch increasing hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklch increasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch increasing hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch decreasing hue from 30deg, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklch decreasing hue, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch decreasing hue at left 10px top 50em, red, blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(from 30deg in oklch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch decreasing hue from 30deg, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(at left 10px top 50em in oklch decreasing hue, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "conic-gradient(in oklch decreasing hue at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text-decor/animations/text-underline-offset-interpolation.html.ini b/tests/wpt/metadata-layout-2020/css/css-text-decor/animations/text-underline-offset-interpolation.html.ini new file mode 100644 index 00000000000..4ac36c5f389 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text-decor/animations/text-underline-offset-interpolation.html.ini @@ -0,0 +1,48 @@ +[text-underline-offset-interpolation.html] + [CSS Transitions: property from [15px\] to [0px\] at (0) should be [15px\]] + expected: FAIL + + [CSS Transitions: property from [15px\] to [0px\] at (0.3) should be [10.5px\]] + expected: FAIL + + [CSS Transitions: property from [15px\] to [0px\] at (0.6) should be [6px\]] + expected: FAIL + + [CSS Transitions: property from [15px\] to [0px\] at (1) should be [0px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [15px\] to [0px\] at (0) should be [15px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [15px\] to [0px\] at (0.3) should be [10.5px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [15px\] to [0px\] at (0.6) should be [6px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [15px\] to [0px\] at (1) should be [0px\]] + expected: FAIL + + [CSS Animations: property from [15px\] to [0px\] at (0) should be [15px\]] + expected: FAIL + + [CSS Animations: property from [15px\] to [0px\] at (0.3) should be [10.5px\]] + expected: FAIL + + [CSS Animations: property from [15px\] to [0px\] at (0.6) should be [6px\]] + expected: FAIL + + [CSS Animations: property from [15px\] to [0px\] at (1) should be [0px\]] + expected: FAIL + + [Web Animations: property from [15px\] to [0px\] at (0) should be [15px\]] + expected: FAIL + + [Web Animations: property from [15px\] to [0px\] at (0.3) should be [10.5px\]] + expected: FAIL + + [Web Animations: property from [15px\] to [0px\] at (0.6) should be [6px\]] + expected: FAIL + + [Web Animations: property from [15px\] to [0px\] at (1) should be [0px\]] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/parsing/hyphenate-limit-chars-computed.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/parsing/hyphenate-limit-chars-computed.html.ini new file mode 100644 index 00000000000..c1cddc99f61 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/parsing/hyphenate-limit-chars-computed.html.ini @@ -0,0 +1,30 @@ +[hyphenate-limit-chars-computed.html] + [Property hyphenate-character value 'auto'] + expected: FAIL + + [Property hyphenate-limit-chars value 'auto auto'] + expected: FAIL + + [Property hyphenate-limit-chars value 'auto auto auto'] + expected: FAIL + + [Property hyphenate-limit-chars value '5'] + expected: FAIL + + [Property hyphenate-limit-chars value '5 2'] + expected: FAIL + + [Property hyphenate-limit-chars value '5 2 3'] + expected: FAIL + + [Property hyphenate-limit-chars value '5 2 calc(3.1)'] + expected: FAIL + + [Property hyphenate-limit-chars value 'auto 2'] + expected: FAIL + + [Property hyphenate-limit-chars value 'auto 2 auto'] + expected: FAIL + + [Property hyphenate-limit-chars value 'auto auto 2'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/parsing/hyphenate-limit-chars-valid.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/parsing/hyphenate-limit-chars-valid.html.ini new file mode 100644 index 00000000000..91a7ce28696 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/parsing/hyphenate-limit-chars-valid.html.ini @@ -0,0 +1,27 @@ +[hyphenate-limit-chars-valid.html] + [e.style['hyphenate-limit-chars'\] = "auto" should set the property value] + expected: FAIL + + [e.style['hyphenate-limit-chars'\] = "auto auto" should set the property value] + expected: FAIL + + [e.style['hyphenate-limit-chars'\] = "auto auto auto" should set the property value] + expected: FAIL + + [e.style['hyphenate-limit-chars'\] = "5" should set the property value] + expected: FAIL + + [e.style['hyphenate-limit-chars'\] = "5 2" should set the property value] + expected: FAIL + + [e.style['hyphenate-limit-chars'\] = "5 2 3" should set the property value] + expected: FAIL + + [e.style['hyphenate-limit-chars'\] = "auto 2" should set the property value] + expected: FAIL + + [e.style['hyphenate-limit-chars'\] = "auto 2 auto" should set the property value] + expected: FAIL + + [e.style['hyphenate-limit-chars'\] = "auto auto 2" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/text-align/text-align-last-interpolation.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/text-align/text-align-last-interpolation.html.ini new file mode 100644 index 00000000000..d8cf965615a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/text-align/text-align-last-interpolation.html.ini @@ -0,0 +1,336 @@ +[text-align-last-interpolation.html] + [CSS Transitions: property from [auto\] to [start\] at (-0.3) should be [start\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [start\] at (0) should be [start\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [start\] at (0.3) should be [start\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [start\] at (0.5) should be [start\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [start\] at (0.6) should be [start\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [start\] at (1) should be [start\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [start\] at (1.5) should be [start\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [start\] at (-0.3) should be [start\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [start\] at (0) should be [start\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [start\] at (0.3) should be [start\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [start\] at (0.5) should be [start\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [start\] at (0.6) should be [start\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [start\] at (1) should be [start\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [start\] at (1.5) should be [start\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [start\] at (-0.3) should be [auto\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [start\] at (0) should be [auto\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [start\] at (0.3) should be [auto\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [start\] at (0.5) should be [start\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [start\] at (0.6) should be [start\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [start\] at (1) should be [start\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [start\] at (1.5) should be [start\]] + expected: FAIL + + [Web Animations: property from [auto\] to [start\] at (-0.3) should be [auto\]] + expected: FAIL + + [Web Animations: property from [auto\] to [start\] at (0) should be [auto\]] + expected: FAIL + + [Web Animations: property from [auto\] to [start\] at (0.3) should be [auto\]] + expected: FAIL + + [Web Animations: property from [auto\] to [start\] at (0.5) should be [start\]] + expected: FAIL + + [Web Animations: property from [auto\] to [start\] at (0.6) should be [start\]] + expected: FAIL + + [Web Animations: property from [auto\] to [start\] at (1) should be [start\]] + expected: FAIL + + [Web Animations: property from [auto\] to [start\] at (1.5) should be [start\]] + expected: FAIL + + [CSS Transitions: property from [justify\] to [center\] at (-0.3) should be [center\]] + expected: FAIL + + [CSS Transitions: property from [justify\] to [center\] at (0) should be [center\]] + expected: FAIL + + [CSS Transitions: property from [justify\] to [center\] at (0.3) should be [center\]] + expected: FAIL + + [CSS Transitions: property from [justify\] to [center\] at (0.5) should be [center\]] + expected: FAIL + + [CSS Transitions: property from [justify\] to [center\] at (0.6) should be [center\]] + expected: FAIL + + [CSS Transitions: property from [justify\] to [center\] at (1) should be [center\]] + expected: FAIL + + [CSS Transitions: property from [justify\] to [center\] at (1.5) should be [center\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [justify\] to [center\] at (-0.3) should be [center\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [justify\] to [center\] at (0) should be [center\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [justify\] to [center\] at (0.3) should be [center\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [justify\] to [center\] at (0.5) should be [center\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [justify\] to [center\] at (0.6) should be [center\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [justify\] to [center\] at (1) should be [center\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [justify\] to [center\] at (1.5) should be [center\]] + expected: FAIL + + [CSS Animations: property from [justify\] to [center\] at (-0.3) should be [justify\]] + expected: FAIL + + [CSS Animations: property from [justify\] to [center\] at (0) should be [justify\]] + expected: FAIL + + [CSS Animations: property from [justify\] to [center\] at (0.3) should be [justify\]] + expected: FAIL + + [CSS Animations: property from [justify\] to [center\] at (0.5) should be [center\]] + expected: FAIL + + [CSS Animations: property from [justify\] to [center\] at (0.6) should be [center\]] + expected: FAIL + + [CSS Animations: property from [justify\] to [center\] at (1) should be [center\]] + expected: FAIL + + [CSS Animations: property from [justify\] to [center\] at (1.5) should be [center\]] + expected: FAIL + + [Web Animations: property from [justify\] to [center\] at (-0.3) should be [justify\]] + expected: FAIL + + [Web Animations: property from [justify\] to [center\] at (0) should be [justify\]] + expected: FAIL + + [Web Animations: property from [justify\] to [center\] at (0.3) should be [justify\]] + expected: FAIL + + [Web Animations: property from [justify\] to [center\] at (0.5) should be [center\]] + expected: FAIL + + [Web Animations: property from [justify\] to [center\] at (0.6) should be [center\]] + expected: FAIL + + [Web Animations: property from [justify\] to [center\] at (1) should be [center\]] + expected: FAIL + + [Web Animations: property from [justify\] to [center\] at (1.5) should be [center\]] + expected: FAIL + + [CSS Transitions: property from [left\] to [right\] at (-0.3) should be [right\]] + expected: FAIL + + [CSS Transitions: property from [left\] to [right\] at (0) should be [right\]] + expected: FAIL + + [CSS Transitions: property from [left\] to [right\] at (0.3) should be [right\]] + expected: FAIL + + [CSS Transitions: property from [left\] to [right\] at (0.5) should be [right\]] + expected: FAIL + + [CSS Transitions: property from [left\] to [right\] at (0.6) should be [right\]] + expected: FAIL + + [CSS Transitions: property from [left\] to [right\] at (1) should be [right\]] + expected: FAIL + + [CSS Transitions: property from [left\] to [right\] at (1.5) should be [right\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [left\] to [right\] at (-0.3) should be [right\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [left\] to [right\] at (0) should be [right\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [left\] to [right\] at (0.3) should be [right\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [left\] to [right\] at (0.5) should be [right\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [left\] to [right\] at (0.6) should be [right\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [left\] to [right\] at (1) should be [right\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [left\] to [right\] at (1.5) should be [right\]] + expected: FAIL + + [CSS Animations: property from [left\] to [right\] at (-0.3) should be [left\]] + expected: FAIL + + [CSS Animations: property from [left\] to [right\] at (0) should be [left\]] + expected: FAIL + + [CSS Animations: property from [left\] to [right\] at (0.3) should be [left\]] + expected: FAIL + + [CSS Animations: property from [left\] to [right\] at (0.5) should be [right\]] + expected: FAIL + + [CSS Animations: property from [left\] to [right\] at (0.6) should be [right\]] + expected: FAIL + + [CSS Animations: property from [left\] to [right\] at (1) should be [right\]] + expected: FAIL + + [CSS Animations: property from [left\] to [right\] at (1.5) should be [right\]] + expected: FAIL + + [Web Animations: property from [left\] to [right\] at (-0.3) should be [left\]] + expected: FAIL + + [Web Animations: property from [left\] to [right\] at (0) should be [left\]] + expected: FAIL + + [Web Animations: property from [left\] to [right\] at (0.3) should be [left\]] + expected: FAIL + + [Web Animations: property from [left\] to [right\] at (0.5) should be [right\]] + expected: FAIL + + [Web Animations: property from [left\] to [right\] at (0.6) should be [right\]] + expected: FAIL + + [Web Animations: property from [left\] to [right\] at (1) should be [right\]] + expected: FAIL + + [Web Animations: property from [left\] to [right\] at (1.5) should be [right\]] + expected: FAIL + + [CSS Transitions: property from [end\] to [match-parent\] at (-0.3) should be [match-parent\]] + expected: FAIL + + [CSS Transitions: property from [end\] to [match-parent\] at (0) should be [match-parent\]] + expected: FAIL + + [CSS Transitions: property from [end\] to [match-parent\] at (0.3) should be [match-parent\]] + expected: FAIL + + [CSS Transitions: property from [end\] to [match-parent\] at (0.5) should be [match-parent\]] + expected: FAIL + + [CSS Transitions: property from [end\] to [match-parent\] at (0.6) should be [match-parent\]] + expected: FAIL + + [CSS Transitions: property from [end\] to [match-parent\] at (1) should be [match-parent\]] + expected: FAIL + + [CSS Transitions: property from [end\] to [match-parent\] at (1.5) should be [match-parent\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [end\] to [match-parent\] at (-0.3) should be [match-parent\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [end\] to [match-parent\] at (0) should be [match-parent\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [end\] to [match-parent\] at (0.3) should be [match-parent\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [end\] to [match-parent\] at (0.5) should be [match-parent\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [end\] to [match-parent\] at (0.6) should be [match-parent\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [end\] to [match-parent\] at (1) should be [match-parent\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [end\] to [match-parent\] at (1.5) should be [match-parent\]] + expected: FAIL + + [CSS Animations: property from [end\] to [match-parent\] at (-0.3) should be [end\]] + expected: FAIL + + [CSS Animations: property from [end\] to [match-parent\] at (0) should be [end\]] + expected: FAIL + + [CSS Animations: property from [end\] to [match-parent\] at (0.3) should be [end\]] + expected: FAIL + + [CSS Animations: property from [end\] to [match-parent\] at (0.5) should be [match-parent\]] + expected: FAIL + + [CSS Animations: property from [end\] to [match-parent\] at (0.6) should be [match-parent\]] + expected: FAIL + + [CSS Animations: property from [end\] to [match-parent\] at (1) should be [match-parent\]] + expected: FAIL + + [CSS Animations: property from [end\] to [match-parent\] at (1.5) should be [match-parent\]] + expected: FAIL + + [Web Animations: property from [end\] to [match-parent\] at (-0.3) should be [end\]] + expected: FAIL + + [Web Animations: property from [end\] to [match-parent\] at (0) should be [end\]] + expected: FAIL + + [Web Animations: property from [end\] to [match-parent\] at (0.3) should be [end\]] + expected: FAIL + + [Web Animations: property from [end\] to [match-parent\] at (0.5) should be [match-parent\]] + expected: FAIL + + [Web Animations: property from [end\] to [match-parent\] at (0.6) should be [match-parent\]] + expected: FAIL + + [Web Animations: property from [end\] to [match-parent\] at (1) should be [match-parent\]] + expected: FAIL + + [Web Animations: property from [end\] to [match-parent\] at (1.5) should be [match-parent\]] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/text-justify/text-justify-interpolation.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/text-justify/text-justify-interpolation.html.ini new file mode 100644 index 00000000000..416d011d27a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/text-justify/text-justify-interpolation.html.ini @@ -0,0 +1,375 @@ +[text-justify-interpolation.html] + [CSS Transitions: property from [auto\] to [inter-word\] at (-0.3) should be [inter-word\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [inter-word\] at (0) should be [inter-word\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [inter-word\] at (0.3) should be [inter-word\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [inter-word\] at (-0.3) should be [inter-word\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [inter-word\] at (0) should be [inter-word\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [inter-word\] at (0.3) should be [inter-word\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-word\] at (-0.3) should be [auto\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-word\] at (0) should be [auto\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-word\] at (0.3) should be [auto\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-word\] at (0.5) should be [inter-word\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-word\] at (0.6) should be [inter-word\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-word\] at (1) should be [inter-word\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-word\] at (1.5) should be [inter-word\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [inter-character\] at (-0.3) should be [inter-character\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [inter-character\] at (0) should be [inter-character\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [inter-character\] at (0.3) should be [inter-character\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [inter-character\] at (0.5) should be [inter-character\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [inter-character\] at (0.6) should be [inter-character\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [inter-character\] at (1) should be [inter-character\]] + expected: FAIL + + [CSS Transitions: property from [auto\] to [inter-character\] at (1.5) should be [inter-character\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [inter-character\] at (-0.3) should be [inter-character\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [inter-character\] at (0) should be [inter-character\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [inter-character\] at (0.3) should be [inter-character\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [inter-character\] at (0.5) should be [inter-character\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [inter-character\] at (0.6) should be [inter-character\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [inter-character\] at (1) should be [inter-character\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [auto\] to [inter-character\] at (1.5) should be [inter-character\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [inter-character\] at (-0.3) should be [auto\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [inter-character\] at (0) should be [auto\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [inter-character\] at (0.3) should be [auto\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [inter-character\] at (0.5) should be [inter-character\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [inter-character\] at (0.6) should be [inter-character\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [inter-character\] at (1) should be [inter-character\]] + expected: FAIL + + [CSS Animations: property from [auto\] to [inter-character\] at (1.5) should be [inter-character\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-character\] at (-0.3) should be [auto\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-character\] at (0) should be [auto\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-character\] at (0.3) should be [auto\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-character\] at (0.5) should be [inter-character\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-character\] at (0.6) should be [inter-character\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-character\] at (1) should be [inter-character\]] + expected: FAIL + + [Web Animations: property from [auto\] to [inter-character\] at (1.5) should be [inter-character\]] + expected: FAIL + + [CSS Transitions: property from [inter-character\] to [distribute\] at (-0.3) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-character\] to [distribute\] at (0) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-character\] to [distribute\] at (0.3) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-character\] to [distribute\] at (0.5) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-character\] to [distribute\] at (0.6) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-character\] to [distribute\] at (1) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-character\] to [distribute\] at (1.5) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-character\] to [distribute\] at (-0.3) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-character\] to [distribute\] at (0) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-character\] to [distribute\] at (0.3) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-character\] to [distribute\] at (0.5) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-character\] to [distribute\] at (0.6) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-character\] to [distribute\] at (1) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-character\] to [distribute\] at (1.5) should be [distribute\]] + expected: FAIL + + [CSS Animations: property from [inter-character\] to [distribute\] at (-0.3) should be [inter-character\]] + expected: FAIL + + [CSS Animations: property from [inter-character\] to [distribute\] at (0) should be [inter-character\]] + expected: FAIL + + [CSS Animations: property from [inter-character\] to [distribute\] at (0.3) should be [inter-character\]] + expected: FAIL + + [CSS Animations: property from [inter-character\] to [distribute\] at (0.5) should be [distribute\]] + expected: FAIL + + [CSS Animations: property from [inter-character\] to [distribute\] at (0.6) should be [distribute\]] + expected: FAIL + + [CSS Animations: property from [inter-character\] to [distribute\] at (1) should be [distribute\]] + expected: FAIL + + [CSS Animations: property from [inter-character\] to [distribute\] at (1.5) should be [distribute\]] + expected: FAIL + + [Web Animations: property from [inter-character\] to [distribute\] at (-0.3) should be [inter-character\]] + expected: FAIL + + [Web Animations: property from [inter-character\] to [distribute\] at (0) should be [inter-character\]] + expected: FAIL + + [Web Animations: property from [inter-character\] to [distribute\] at (0.3) should be [inter-character\]] + expected: FAIL + + [Web Animations: property from [inter-character\] to [distribute\] at (0.5) should be [distribute\]] + expected: FAIL + + [Web Animations: property from [inter-character\] to [distribute\] at (0.6) should be [distribute\]] + expected: FAIL + + [Web Animations: property from [inter-character\] to [distribute\] at (1) should be [distribute\]] + expected: FAIL + + [Web Animations: property from [inter-character\] to [distribute\] at (1.5) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-word\] to [distribute\] at (-0.3) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-word\] to [distribute\] at (0) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-word\] to [distribute\] at (0.3) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-word\] to [distribute\] at (0.5) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-word\] to [distribute\] at (0.6) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-word\] to [distribute\] at (1) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [inter-word\] to [distribute\] at (1.5) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-word\] to [distribute\] at (-0.3) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-word\] to [distribute\] at (0) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-word\] to [distribute\] at (0.3) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-word\] to [distribute\] at (0.5) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-word\] to [distribute\] at (0.6) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-word\] to [distribute\] at (1) should be [distribute\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inter-word\] to [distribute\] at (1.5) should be [distribute\]] + expected: FAIL + + [CSS Animations: property from [inter-word\] to [distribute\] at (-0.3) should be [inter-word\]] + expected: FAIL + + [CSS Animations: property from [inter-word\] to [distribute\] at (0) should be [inter-word\]] + expected: FAIL + + [CSS Animations: property from [inter-word\] to [distribute\] at (0.3) should be [inter-word\]] + expected: FAIL + + [CSS Animations: property from [inter-word\] to [distribute\] at (0.5) should be [distribute\]] + expected: FAIL + + [CSS Animations: property from [inter-word\] to [distribute\] at (0.6) should be [distribute\]] + expected: FAIL + + [CSS Animations: property from [inter-word\] to [distribute\] at (1) should be [distribute\]] + expected: FAIL + + [CSS Animations: property from [inter-word\] to [distribute\] at (1.5) should be [distribute\]] + expected: FAIL + + [Web Animations: property from [inter-word\] to [distribute\] at (-0.3) should be [inter-word\]] + expected: FAIL + + [Web Animations: property from [inter-word\] to [distribute\] at (0) should be [inter-word\]] + expected: FAIL + + [Web Animations: property from [inter-word\] to [distribute\] at (0.3) should be [inter-word\]] + expected: FAIL + + [Web Animations: property from [inter-word\] to [distribute\] at (0.5) should be [distribute\]] + expected: FAIL + + [Web Animations: property from [inter-word\] to [distribute\] at (0.6) should be [distribute\]] + expected: FAIL + + [Web Animations: property from [inter-word\] to [distribute\] at (1) should be [distribute\]] + expected: FAIL + + [Web Animations: property from [inter-word\] to [distribute\] at (1.5) should be [distribute\]] + expected: FAIL + + [CSS Transitions: property from [distribute\] to [none\] at (-0.3) should be [none\]] + expected: FAIL + + [CSS Transitions: property from [distribute\] to [none\] at (0) should be [none\]] + expected: FAIL + + [CSS Transitions: property from [distribute\] to [none\] at (0.3) should be [none\]] + expected: FAIL + + [CSS Transitions: property from [distribute\] to [none\] at (0.5) should be [none\]] + expected: FAIL + + [CSS Transitions: property from [distribute\] to [none\] at (0.6) should be [none\]] + expected: FAIL + + [CSS Transitions: property from [distribute\] to [none\] at (1) should be [none\]] + expected: FAIL + + [CSS Transitions: property from [distribute\] to [none\] at (1.5) should be [none\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [distribute\] to [none\] at (-0.3) should be [none\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [distribute\] to [none\] at (0) should be [none\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [distribute\] to [none\] at (0.3) should be [none\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [distribute\] to [none\] at (0.5) should be [none\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [distribute\] to [none\] at (0.6) should be [none\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [distribute\] to [none\] at (1) should be [none\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [distribute\] to [none\] at (1.5) should be [none\]] + expected: FAIL + + [CSS Animations: property from [distribute\] to [none\] at (-0.3) should be [distribute\]] + expected: FAIL + + [CSS Animations: property from [distribute\] to [none\] at (0) should be [distribute\]] + expected: FAIL + + [CSS Animations: property from [distribute\] to [none\] at (0.3) should be [distribute\]] + expected: FAIL + + [CSS Animations: property from [distribute\] to [none\] at (0.5) should be [none\]] + expected: FAIL + + [CSS Animations: property from [distribute\] to [none\] at (0.6) should be [none\]] + expected: FAIL + + [CSS Animations: property from [distribute\] to [none\] at (1) should be [none\]] + expected: FAIL + + [CSS Animations: property from [distribute\] to [none\] at (1.5) should be [none\]] + expected: FAIL + + [Web Animations: property from [distribute\] to [none\] at (-0.3) should be [distribute\]] + expected: FAIL + + [Web Animations: property from [distribute\] to [none\] at (0) should be [distribute\]] + expected: FAIL + + [Web Animations: property from [distribute\] to [none\] at (0.3) should be [distribute\]] + expected: FAIL + + [Web Animations: property from [distribute\] to [none\] at (0.5) should be [none\]] + expected: FAIL + + [Web Animations: property from [distribute\] to [none\] at (0.6) should be [none\]] + expected: FAIL + + [Web Animations: property from [distribute\] to [none\] at (1) should be [none\]] + expected: FAIL + + [Web Animations: property from [distribute\] to [none\] at (1.5) should be [none\]] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/animation/translate-interpolation.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/animation/translate-interpolation.html.ini index d426f578a7f..c1709472f61 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transforms/animation/translate-interpolation.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/animation/translate-interpolation.html.ini @@ -316,3 +316,6 @@ [Web Animations: property from [480px 400px 320px\] to [240% 160%\] at (0) should be [calc(0% + 480px) calc(0% + 400px) 320px\]] expected: FAIL + + [Web Animations: property from [none\] to [8px 80% 800px\] at (0) should be [0px 0%\]] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/inline-with-filter-and-hidden-backface.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/inline-with-filter-and-hidden-backface.html.ini new file mode 100644 index 00000000000..ae4a71ae9b3 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/inline-with-filter-and-hidden-backface.html.ini @@ -0,0 +1,3 @@ +[inline-with-filter-and-hidden-backface.html] + [Hit test] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/parsing/transform-valid.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/parsing/transform-valid.html.ini index d200e35b82b..6ee0275f23d 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transforms/parsing/transform-valid.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/parsing/transform-valid.html.ini @@ -1,3 +1,6 @@ [transform-valid.html] [e.style['transform'\] = "perspective(none)" should set the property value] expected: FAIL + + [e.style['transform'\] = "translate(1px, 0%)" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/parsing/translate-parsing-valid.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/parsing/translate-parsing-valid.html.ini index 506fce734d8..c4f286d143d 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transforms/parsing/translate-parsing-valid.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/parsing/translate-parsing-valid.html.ini @@ -1,49 +1,3 @@ [translate-parsing-valid.html] - [e.style['translate'\] = "100% 200% 300px" should set the property value] - expected: FAIL - [e.style['translate'\] = "100px 0%" should set the property value] expected: FAIL - - [e.style['translate'\] = "100px 200px 0px" should set the property value] - expected: FAIL - - [e.style['translate'\] = "none" should set the property value] - expected: FAIL - - [e.style['translate'\] = "100px 0px 0px" should set the property value] - expected: FAIL - - [e.style['translate'\] = "0" should set the property value] - expected: FAIL - - [e.style['translate'\] = "0px" should set the property value] - expected: FAIL - - [e.style['translate'\] = "100px 0.1px" should set the property value] - expected: FAIL - - [e.style['translate'\] = "100%" should set the property value] - expected: FAIL - - [e.style['translate'\] = "100px 200px 300px" should set the property value] - expected: FAIL - - [e.style['translate'\] = "100% 200px" should set the property value] - expected: FAIL - - [e.style['translate'\] = "100px 200%" should set the property value] - expected: FAIL - - [e.style['translate'\] = "1px 2px 0" should set the property value] - expected: FAIL - - [e.style['translate'\] = "100px 0px" should set the property value] - expected: FAIL - - [e.style['translate'\] = "calc(10% + 10px) calc(20% + 20px) calc(30em + 30px)" should set the property value] - expected: FAIL - - [e.style['translate'\] = "100px calc(10px - 10%)" should set the property value] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-2d-getComputedStyle-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-2d-getComputedStyle-001.html.ini index a614bb5ec8d..6d5dd225b5d 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-2d-getComputedStyle-001.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-2d-getComputedStyle-001.html.ini @@ -11,3 +11,5 @@ [Matrix for scaling] expected: FAIL + [Matrix for general transform] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-hit-testing.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-hit-testing.html.ini new file mode 100644 index 00000000000..7d836afc25c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-hit-testing.html.ini @@ -0,0 +1,15 @@ +[transform-hit-testing.html] + [hit testing of rectangle with 'translate' and 'rotate'] + expected: FAIL + + [hit testing of rectangle with 'transform'] + expected: FAIL + + [hit testing of rectangle with 'translate' and 'rotate' and 'scale' and 'transform'] + expected: FAIL + + [hit testing of square with 'rotate'] + expected: FAIL + + [hit testing of square with 'scale'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/KeyframeEffect-getKeyframes-width-and-height-transition.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/KeyframeEffect-getKeyframes-width-and-height-transition.tentative.html.ini new file mode 100644 index 00000000000..bfb6ef8d321 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-transitions/KeyframeEffect-getKeyframes-width-and-height-transition.tentative.html.ini @@ -0,0 +1,6 @@ +[KeyframeEffect-getKeyframes-width-and-height-transition.tentative.html] + [getKeyframes() output for a width transition] + expected: FAIL + + [getKeyframes() output for a height transition] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/parsing/transition-computed.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/parsing/transition-computed.html.ini index fa8cff82bfa..7ba4f25deff 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transitions/parsing/transition-computed.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transitions/parsing/transition-computed.html.ini @@ -20,3 +20,5 @@ [Property transition value 'top'] expected: FAIL + [Default transition value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/parsing/transition-property-invalid.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/parsing/transition-property-invalid.html.ini new file mode 100644 index 00000000000..b07e0c9b893 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-transitions/parsing/transition-property-invalid.html.ini @@ -0,0 +1,6 @@ +[transition-property-invalid.html] + [e.style['transition-property'\] = "revert-layer, top" should not set the property value] + expected: FAIL + + [e.style['transition-property'\] = "top, revert-layer" should not set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-002.html.ini index ce3251ad5da..d34dc5456ba 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-002.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-002.html.ini @@ -1,27 +1,3 @@ [properties-value-002.html] [vertical-align vertical(keyword) / values] expected: FAIL - - [margin-bottom percentage(%) / values] - expected: FAIL - - [margin-left percentage(%) / values] - expected: FAIL - - [margin-right percentage(%) / values] - expected: FAIL - - [margin-top percentage(%) / values] - expected: FAIL - - [padding-bottom percentage(%) / values] - expected: FAIL - - [padding-left percentage(%) / values] - expected: FAIL - - [padding-right percentage(%) / values] - expected: FAIL - - [padding-top percentage(%) / values] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-003.html.ini index 29110318560..008e464677a 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-003.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-003.html.ini @@ -472,3 +472,21 @@ [position position(relative to absolute) / events] expected: FAIL + + [object-view-box object-view-box(inset) / values] + expected: FAIL + + [object-view-box object-view-box(inset) / events] + expected: FAIL + + [object-view-box object-view-box(rect) / values] + expected: FAIL + + [object-view-box object-view-box(rect) / events] + expected: FAIL + + [object-view-box object-view-box(xywh) / values] + expected: FAIL + + [object-view-box object-view-box(xywh) / events] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-001.html.ini index e87f8c08864..f4caeba01db 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-001.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-001.html.ini @@ -55,3 +55,726 @@ [background-position length(px) / events] expected: FAIL + + [background-color color(rgba) / events] + expected: FAIL + + [border-top-width length(pt) / events] + expected: FAIL + + [border-top-width length(pc) / events] + expected: FAIL + + [border-top-width length(px) / events] + expected: FAIL + + [border-top-width length(em) / events] + expected: FAIL + + [border-top-width length(ex) / events] + expected: FAIL + + [border-top-width length(mm) / events] + expected: FAIL + + [border-top-width length(cm) / events] + expected: FAIL + + [border-top-width length(in) / events] + expected: FAIL + + [border-right-width length(pt) / events] + expected: FAIL + + [border-right-width length(pc) / events] + expected: FAIL + + [border-right-width length(px) / events] + expected: FAIL + + [border-right-width length(em) / events] + expected: FAIL + + [border-right-width length(ex) / events] + expected: FAIL + + [border-right-width length(mm) / events] + expected: FAIL + + [border-right-width length(cm) / events] + expected: FAIL + + [border-right-width length(in) / events] + expected: FAIL + + [border-bottom-width length(pt) / events] + expected: FAIL + + [border-bottom-width length(pc) / events] + expected: FAIL + + [border-bottom-width length(px) / events] + expected: FAIL + + [border-bottom-width length(em) / events] + expected: FAIL + + [border-bottom-width length(ex) / events] + expected: FAIL + + [border-bottom-width length(mm) / events] + expected: FAIL + + [border-bottom-width length(cm) / events] + expected: FAIL + + [border-bottom-width length(in) / events] + expected: FAIL + + [border-left-width length(pt) / events] + expected: FAIL + + [border-left-width length(pc) / events] + expected: FAIL + + [border-left-width length(px) / events] + expected: FAIL + + [border-left-width length(em) / events] + expected: FAIL + + [border-left-width length(ex) / events] + expected: FAIL + + [border-left-width length(mm) / events] + expected: FAIL + + [border-left-width length(cm) / events] + expected: FAIL + + [border-left-width length(in) / events] + expected: FAIL + + [border-top-color color(rgba) / events] + expected: FAIL + + [border-right-color color(rgba) / events] + expected: FAIL + + [border-bottom-color color(rgba) / events] + expected: FAIL + + [border-left-color color(rgba) / events] + expected: FAIL + + [padding-bottom length(pt) / events] + expected: FAIL + + [padding-bottom length(pc) / events] + expected: FAIL + + [padding-bottom length(px) / events] + expected: FAIL + + [padding-bottom length(em) / events] + expected: FAIL + + [padding-bottom length(ex) / events] + expected: FAIL + + [padding-bottom length(mm) / events] + expected: FAIL + + [padding-bottom length(cm) / events] + expected: FAIL + + [padding-bottom length(in) / events] + expected: FAIL + + [padding-left length(pt) / events] + expected: FAIL + + [padding-left length(pc) / events] + expected: FAIL + + [padding-left length(px) / events] + expected: FAIL + + [padding-left length(em) / events] + expected: FAIL + + [padding-left length(ex) / events] + expected: FAIL + + [padding-left length(mm) / events] + expected: FAIL + + [padding-left length(cm) / events] + expected: FAIL + + [padding-left length(in) / events] + expected: FAIL + + [padding-right length(pt) / events] + expected: FAIL + + [padding-right length(pc) / events] + expected: FAIL + + [padding-right length(px) / events] + expected: FAIL + + [padding-right length(em) / events] + expected: FAIL + + [padding-right length(ex) / events] + expected: FAIL + + [padding-right length(mm) / events] + expected: FAIL + + [padding-right length(cm) / events] + expected: FAIL + + [padding-right length(in) / events] + expected: FAIL + + [padding-top length(pt) / events] + expected: FAIL + + [padding-top length(pc) / events] + expected: FAIL + + [padding-top length(px) / events] + expected: FAIL + + [padding-top length(em) / events] + expected: FAIL + + [padding-top length(ex) / events] + expected: FAIL + + [padding-top length(mm) / events] + expected: FAIL + + [padding-top length(cm) / events] + expected: FAIL + + [padding-top length(in) / events] + expected: FAIL + + [margin-bottom length(pt) / events] + expected: FAIL + + [margin-bottom length(pc) / events] + expected: FAIL + + [margin-bottom length(px) / events] + expected: FAIL + + [margin-bottom length(em) / events] + expected: FAIL + + [margin-bottom length(ex) / events] + expected: FAIL + + [margin-bottom length(mm) / events] + expected: FAIL + + [margin-bottom length(cm) / events] + expected: FAIL + + [margin-bottom length(in) / events] + expected: FAIL + + [margin-left length(pt) / events] + expected: FAIL + + [margin-left length(pc) / events] + expected: FAIL + + [margin-left length(px) / events] + expected: FAIL + + [margin-left length(em) / events] + expected: FAIL + + [margin-left length(ex) / events] + expected: FAIL + + [margin-left length(mm) / events] + expected: FAIL + + [margin-left length(cm) / events] + expected: FAIL + + [margin-left length(in) / events] + expected: FAIL + + [margin-right length(pt) / events] + expected: FAIL + + [margin-right length(pc) / events] + expected: FAIL + + [margin-right length(px) / events] + expected: FAIL + + [margin-right length(em) / events] + expected: FAIL + + [margin-right length(ex) / events] + expected: FAIL + + [margin-right length(mm) / events] + expected: FAIL + + [margin-right length(cm) / events] + expected: FAIL + + [margin-right length(in) / events] + expected: FAIL + + [margin-top length(pt) / events] + expected: FAIL + + [margin-top length(pc) / events] + expected: FAIL + + [margin-top length(px) / events] + expected: FAIL + + [margin-top length(em) / events] + expected: FAIL + + [margin-top length(ex) / events] + expected: FAIL + + [margin-top length(mm) / events] + expected: FAIL + + [margin-top length(cm) / events] + expected: FAIL + + [margin-top length(in) / events] + expected: FAIL + + [height length(pt) / events] + expected: FAIL + + [height length(pc) / events] + expected: FAIL + + [height length(px) / events] + expected: FAIL + + [height length(em) / events] + expected: FAIL + + [height length(ex) / events] + expected: FAIL + + [height length(mm) / events] + expected: FAIL + + [height length(cm) / events] + expected: FAIL + + [height length(in) / events] + expected: FAIL + + [height percentage(%) / events] + expected: FAIL + + [width length(pt) / events] + expected: FAIL + + [width length(pc) / events] + expected: FAIL + + [width length(px) / events] + expected: FAIL + + [width length(em) / events] + expected: FAIL + + [width length(ex) / events] + expected: FAIL + + [width length(mm) / events] + expected: FAIL + + [width length(cm) / events] + expected: FAIL + + [width length(in) / events] + expected: FAIL + + [width percentage(%) / events] + expected: FAIL + + [min-height length(pt) / events] + expected: FAIL + + [min-height length(pc) / events] + expected: FAIL + + [min-height length(px) / events] + expected: FAIL + + [min-height length(em) / events] + expected: FAIL + + [min-height length(ex) / events] + expected: FAIL + + [min-height length(mm) / events] + expected: FAIL + + [min-height length(cm) / events] + expected: FAIL + + [min-height length(in) / events] + expected: FAIL + + [min-height percentage(%) / events] + expected: FAIL + + [min-width length(pt) / events] + expected: FAIL + + [min-width length(pc) / events] + expected: FAIL + + [min-width length(px) / events] + expected: FAIL + + [min-width length(em) / events] + expected: FAIL + + [min-width length(ex) / events] + expected: FAIL + + [min-width length(mm) / events] + expected: FAIL + + [min-width length(cm) / events] + expected: FAIL + + [min-width length(in) / events] + expected: FAIL + + [min-width percentage(%) / events] + expected: FAIL + + [max-height length(pt) / events] + expected: FAIL + + [max-height length(pc) / events] + expected: FAIL + + [max-height length(px) / events] + expected: FAIL + + [max-height length(em) / events] + expected: FAIL + + [max-height length(ex) / events] + expected: FAIL + + [max-height length(mm) / events] + expected: FAIL + + [max-height length(cm) / events] + expected: FAIL + + [max-height length(in) / events] + expected: FAIL + + [max-height percentage(%) / events] + expected: FAIL + + [max-width length(pt) / events] + expected: FAIL + + [max-width length(pc) / events] + expected: FAIL + + [max-width length(px) / events] + expected: FAIL + + [max-width length(em) / events] + expected: FAIL + + [max-width length(ex) / events] + expected: FAIL + + [max-width length(mm) / events] + expected: FAIL + + [max-width length(cm) / events] + expected: FAIL + + [max-width length(in) / events] + expected: FAIL + + [max-width percentage(%) / events] + expected: FAIL + + [top length(pt) / events] + expected: FAIL + + [top length(pc) / events] + expected: FAIL + + [top length(px) / events] + expected: FAIL + + [top length(em) / events] + expected: FAIL + + [top length(ex) / events] + expected: FAIL + + [top length(mm) / events] + expected: FAIL + + [top length(cm) / events] + expected: FAIL + + [top length(in) / events] + expected: FAIL + + [top percentage(%) / events] + expected: FAIL + + [right length(pt) / events] + expected: FAIL + + [right length(pc) / events] + expected: FAIL + + [right length(px) / events] + expected: FAIL + + [right length(em) / events] + expected: FAIL + + [right length(ex) / events] + expected: FAIL + + [right length(mm) / events] + expected: FAIL + + [right length(cm) / events] + expected: FAIL + + [right length(in) / events] + expected: FAIL + + [right percentage(%) / events] + expected: FAIL + + [bottom length(pt) / events] + expected: FAIL + + [bottom length(pc) / events] + expected: FAIL + + [bottom length(px) / events] + expected: FAIL + + [bottom length(em) / events] + expected: FAIL + + [bottom length(ex) / events] + expected: FAIL + + [bottom length(mm) / events] + expected: FAIL + + [bottom length(cm) / events] + expected: FAIL + + [bottom length(in) / events] + expected: FAIL + + [bottom percentage(%) / events] + expected: FAIL + + [left length(pt) / events] + expected: FAIL + + [left length(pc) / events] + expected: FAIL + + [left length(px) / events] + expected: FAIL + + [left length(em) / events] + expected: FAIL + + [left length(ex) / events] + expected: FAIL + + [left length(mm) / events] + expected: FAIL + + [left length(cm) / events] + expected: FAIL + + [left length(in) / events] + expected: FAIL + + [left percentage(%) / events] + expected: FAIL + + [color color(rgba) / events] + expected: FAIL + + [font-size length(pt) / events] + expected: FAIL + + [font-size length(pc) / events] + expected: FAIL + + [font-size length(px) / events] + expected: FAIL + + [font-size length(em) / events] + expected: FAIL + + [font-size length(ex) / events] + expected: FAIL + + [font-size length(mm) / events] + expected: FAIL + + [font-size length(cm) / events] + expected: FAIL + + [font-size length(in) / events] + expected: FAIL + + [font-size percentage(%) / events] + expected: FAIL + + [font-weight font-weight(keyword) / events] + expected: FAIL + + [font-weight font-weight(numeric) / events] + expected: FAIL + + [line-height number(integer) / events] + expected: FAIL + + [line-height number(decimal) / events] + expected: FAIL + + [line-height length(pt) / events] + expected: FAIL + + [line-height length(pc) / events] + expected: FAIL + + [line-height length(px) / events] + expected: FAIL + + [line-height length(em) / events] + expected: FAIL + + [line-height length(ex) / events] + expected: FAIL + + [line-height length(mm) / events] + expected: FAIL + + [line-height length(cm) / events] + expected: FAIL + + [line-height length(in) / events] + expected: FAIL + + [line-height percentage(%) / events] + expected: FAIL + + [letter-spacing length(pt) / events] + expected: FAIL + + [letter-spacing length(pc) / events] + expected: FAIL + + [letter-spacing length(px) / events] + expected: FAIL + + [letter-spacing length(em) / events] + expected: FAIL + + [letter-spacing length(ex) / events] + expected: FAIL + + [letter-spacing length(mm) / events] + expected: FAIL + + [letter-spacing length(cm) / events] + expected: FAIL + + [letter-spacing length(in) / events] + expected: FAIL + + [word-spacing length(pt) / events] + expected: FAIL + + [word-spacing length(pc) / events] + expected: FAIL + + [word-spacing length(px) / events] + expected: FAIL + + [word-spacing length(em) / events] + expected: FAIL + + [word-spacing length(ex) / events] + expected: FAIL + + [word-spacing length(mm) / events] + expected: FAIL + + [word-spacing length(cm) / events] + expected: FAIL + + [word-spacing length(in) / events] + expected: FAIL + + [word-spacing percentage(%) / events] + expected: FAIL + + [text-indent length(pt) / events] + expected: FAIL + + [text-indent length(pc) / events] + expected: FAIL + + [text-indent length(px) / events] + expected: FAIL + + [text-indent length(em) / events] + expected: FAIL + + [text-indent length(ex) / events] + expected: FAIL + + [text-indent length(mm) / events] + expected: FAIL + + [text-indent length(cm) / events] + expected: FAIL + + [text-indent length(in) / events] + expected: FAIL + + [text-indent percentage(%) / events] + expected: FAIL + + [text-shadow shadow(shadow) / events] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini index 242ba44bbca..e919ec48eb3 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini @@ -52,3 +52,303 @@ [background-position length(px) / events] expected: FAIL + + [padding-bottom length(ex) / values] + expected: FAIL + + [padding-bottom length(mm) / values] + expected: FAIL + + [padding-bottom length(cm) / values] + expected: FAIL + + [padding-bottom length(in) / values] + expected: FAIL + + [padding-left length(pt) / values] + expected: FAIL + + [padding-left length(pc) / values] + expected: FAIL + + [padding-left length(px) / values] + expected: FAIL + + [padding-left length(em) / values] + expected: FAIL + + [padding-left length(ex) / values] + expected: FAIL + + [padding-left length(mm) / values] + expected: FAIL + + [padding-left length(cm) / values] + expected: FAIL + + [padding-left length(in) / values] + expected: FAIL + + [padding-right length(pt) / values] + expected: FAIL + + [padding-right length(pc) / values] + expected: FAIL + + [padding-right length(px) / values] + expected: FAIL + + [padding-right length(em) / values] + expected: FAIL + + [padding-right length(ex) / values] + expected: FAIL + + [padding-right length(mm) / values] + expected: FAIL + + [padding-right length(cm) / values] + expected: FAIL + + [padding-right length(in) / values] + expected: FAIL + + [padding-top length(pt) / values] + expected: FAIL + + [padding-top length(pc) / values] + expected: FAIL + + [padding-top length(px) / values] + expected: FAIL + + [padding-top length(em) / values] + expected: FAIL + + [padding-top length(ex) / values] + expected: FAIL + + [padding-top length(mm) / values] + expected: FAIL + + [padding-top length(cm) / values] + expected: FAIL + + [padding-top length(in) / values] + expected: FAIL + + [margin-bottom length(pt) / values] + expected: FAIL + + [margin-bottom length(pc) / values] + expected: FAIL + + [margin-bottom length(px) / values] + expected: FAIL + + [margin-bottom length(em) / values] + expected: FAIL + + [margin-bottom length(ex) / values] + expected: FAIL + + [margin-bottom length(mm) / values] + expected: FAIL + + [margin-bottom length(cm) / values] + expected: FAIL + + [margin-bottom length(in) / values] + expected: FAIL + + [margin-left length(pt) / values] + expected: FAIL + + [margin-left length(pc) / values] + expected: FAIL + + [margin-left length(px) / values] + expected: FAIL + + [margin-left length(em) / values] + expected: FAIL + + [margin-left length(ex) / values] + expected: FAIL + + [margin-left length(mm) / values] + expected: FAIL + + [margin-left length(cm) / values] + expected: FAIL + + [margin-left length(in) / values] + expected: FAIL + + [margin-right length(pt) / values] + expected: FAIL + + [margin-right length(pc) / values] + expected: FAIL + + [margin-right length(px) / values] + expected: FAIL + + [margin-right length(em) / values] + expected: FAIL + + [margin-right length(ex) / values] + expected: FAIL + + [margin-right length(mm) / values] + expected: FAIL + + [color color(rgba) / values] + expected: FAIL + + [font-size length(pt) / values] + expected: FAIL + + [font-size length(pc) / values] + expected: FAIL + + [font-size length(px) / values] + expected: FAIL + + [font-size length(em) / values] + expected: FAIL + + [font-size length(ex) / values] + expected: FAIL + + [font-size length(mm) / values] + expected: FAIL + + [font-size length(cm) / values] + expected: FAIL + + [font-size length(in) / values] + expected: FAIL + + [font-size percentage(%) / values] + expected: FAIL + + [font-weight font-weight(keyword) / values] + expected: FAIL + + [font-weight font-weight(numeric) / values] + expected: FAIL + + [line-height number(integer) / values] + expected: FAIL + + [line-height number(decimal) / values] + expected: FAIL + + [line-height length(pt) / values] + expected: FAIL + + [line-height length(pc) / values] + expected: FAIL + + [line-height length(px) / values] + expected: FAIL + + [line-height length(em) / values] + expected: FAIL + + [line-height length(ex) / values] + expected: FAIL + + [line-height length(mm) / values] + expected: FAIL + + [line-height length(cm) / values] + expected: FAIL + + [line-height length(in) / values] + expected: FAIL + + [line-height percentage(%) / values] + expected: FAIL + + [letter-spacing length(pt) / values] + expected: FAIL + + [letter-spacing length(pc) / values] + expected: FAIL + + [letter-spacing length(px) / values] + expected: FAIL + + [letter-spacing length(em) / values] + expected: FAIL + + [letter-spacing length(ex) / values] + expected: FAIL + + [letter-spacing length(mm) / values] + expected: FAIL + + [letter-spacing length(cm) / values] + expected: FAIL + + [letter-spacing length(in) / values] + expected: FAIL + + [word-spacing length(pt) / values] + expected: FAIL + + [word-spacing length(pc) / values] + expected: FAIL + + [word-spacing length(px) / values] + expected: FAIL + + [word-spacing length(em) / values] + expected: FAIL + + [word-spacing length(ex) / values] + expected: FAIL + + [word-spacing length(mm) / values] + expected: FAIL + + [word-spacing length(cm) / values] + expected: FAIL + + [word-spacing length(in) / values] + expected: FAIL + + [word-spacing percentage(%) / values] + expected: FAIL + + [text-indent length(pt) / values] + expected: FAIL + + [text-indent length(pc) / values] + expected: FAIL + + [text-indent length(px) / values] + expected: FAIL + + [text-indent length(em) / values] + expected: FAIL + + [text-indent length(ex) / values] + expected: FAIL + + [text-indent length(mm) / values] + expected: FAIL + + [text-indent length(cm) / values] + expected: FAIL + + [text-indent length(in) / values] + expected: FAIL + + [text-indent percentage(%) / values] + expected: FAIL + + [text-shadow shadow(shadow) / values] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-ui/historical/moz-user-modify-01.html.ini b/tests/wpt/metadata-layout-2020/css/css-ui/historical/moz-user-modify-01.html.ini new file mode 100644 index 00000000000..4eabf2a5cb6 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-ui/historical/moz-user-modify-01.html.ini @@ -0,0 +1,3 @@ +[moz-user-modify-01.html] + [-moz-user-modify is not supported] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-ui/historical/user-modify-01.html.ini b/tests/wpt/metadata-layout-2020/css/css-ui/historical/user-modify-01.html.ini new file mode 100644 index 00000000000..f0cc807c112 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-ui/historical/user-modify-01.html.ini @@ -0,0 +1,3 @@ +[user-modify-01.html] + [user-modify is not supported] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-ui/historical/webkit-user-modify-01.html.ini b/tests/wpt/metadata-layout-2020/css/css-ui/historical/webkit-user-modify-01.html.ini new file mode 100644 index 00000000000..7848c00a393 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-ui/historical/webkit-user-modify-01.html.ini @@ -0,0 +1,3 @@ +[webkit-user-modify-01.html] + [-webkit-user-modify is not supported] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-ui/parsing/cursor-valid.html.ini b/tests/wpt/metadata-layout-2020/css/css-ui/parsing/cursor-valid.html.ini new file mode 100644 index 00000000000..91d58955dbe --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-ui/parsing/cursor-valid.html.ini @@ -0,0 +1,6 @@ +[cursor-valid.html] + [e.style['cursor'\] = "image-set(\\"https://example.com/\\" 1x) 5 6, grab" should set the property value] + expected: FAIL + + [e.style['cursor'\] = "image-set(\\"https://example.com/\\" 1x, \\"https://example.com/highres\\" 2x) 5 6, grab" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-ui/parsing/outline-width-computed.html.ini b/tests/wpt/metadata-layout-2020/css/css-ui/parsing/outline-width-computed.html.ini index 93fdc34e6ec..83c3b7afbe3 100644 --- a/tests/wpt/metadata-layout-2020/css/css-ui/parsing/outline-width-computed.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-ui/parsing/outline-width-computed.html.ini @@ -1,17 +1,4 @@ [outline-width-computed.html] expected: ERROR - [Property outline-width value 'calc(10px + 0.5em)'] - expected: FAIL - - [Property outline-width value '10px'] - expected: FAIL - - [Property outline-width value 'calc(10px - 0.5em)'] - expected: FAIL - - [Property outline-width value '0.5em'] - expected: FAIL - [Property outline-width value '2.5px'] expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/css-ui/user-select-none-in-editable.html.ini b/tests/wpt/metadata-layout-2020/css/css-ui/user-select-none-in-editable.html.ini new file mode 100644 index 00000000000..46cf3f54d8b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-ui/user-select-none-in-editable.html.ini @@ -0,0 +1,3 @@ +[user-select-none-in-editable.html] + [Test user-select: none in editable contexts] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/acos-asin-atan-atan2-serialize.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/acos-asin-atan-atan2-serialize.html.ini index 29a5f6c30b7..73059e17aea 100644 --- a/tests/wpt/metadata-layout-2020/css/css-values/acos-asin-atan-atan2-serialize.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-values/acos-asin-atan-atan2-serialize.html.ini @@ -28,3 +28,138 @@ ['rotate(calc(atan(infinity)))' as a computed value should serialize as 'rotate(90deg)'.] expected: FAIL + + ['rotate(acos(1))' as a specified value should serialize as 'rotate(calc(0deg))'.] + expected: FAIL + + ['rotate(calc(acos(1)))' as a specified value should serialize as 'rotate(calc(0deg))'.] + expected: FAIL + + ['rotate(acos(-1))' as a specified value should serialize as 'rotate(calc(180deg))'.] + expected: FAIL + + ['rotate(calc(acos(-1)))' as a specified value should serialize as 'rotate(calc(180deg))'.] + expected: FAIL + + ['rotate(acos(-1.5))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(calc(acos(-1.5)))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(acos(1.5))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(calc(acos(1.5)))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(acos(2))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(calc(acos(2)))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(acos(0.5))' as a specified value should serialize as 'rotate(calc(60deg))'.] + expected: FAIL + + ['rotate(calc(acos(0.5)))' as a specified value should serialize as 'rotate(calc(60deg))'.] + expected: FAIL + + ['rotate(acos(1 - 0.5))' as a specified value should serialize as 'rotate(calc(60deg))'.] + expected: FAIL + + ['rotate(calc(acos(1 - 0.5)))' as a specified value should serialize as 'rotate(calc(60deg))'.] + expected: FAIL + + ['rotate(calc(acos(0)))' as a specified value should serialize as 'rotate(calc(90deg))'.] + expected: FAIL + + ['rotate(calc(asin(1)))' as a specified value should serialize as 'rotate(calc(90deg))'.] + expected: FAIL + + ['rotate(asin(-1))' as a specified value should serialize as 'rotate(calc(-90deg))'.] + expected: FAIL + + ['rotate(calc(asin(-1)))' as a specified value should serialize as 'rotate(calc(-90deg))'.] + expected: FAIL + + ['rotate(asin(-1.5))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(calc(asin(-1.5)))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(asin(1.5))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(calc(asin(1.5)))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(asin(2))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(calc(asin(2)))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.] + expected: FAIL + + ['rotate(asin(0.5))' as a specified value should serialize as 'rotate(calc(30deg))'.] + expected: FAIL + + ['rotate(calc(asin(0.5)))' as a specified value should serialize as 'rotate(calc(30deg))'.] + expected: FAIL + + ['rotate(asin(1 - 0.5))' as a specified value should serialize as 'rotate(calc(30deg))'.] + expected: FAIL + + ['rotate(calc(asin(1 - 0.5)))' as a specified value should serialize as 'rotate(calc(30deg))'.] + expected: FAIL + + ['rotate(asin(0))' as a specified value should serialize as 'rotate(calc(0deg))'.] + expected: FAIL + + ['rotate(calc(asin(0)))' as a specified value should serialize as 'rotate(calc(0deg))'.] + expected: FAIL + + ['rotate(acos(pi - pi))' as a specified value should serialize as 'rotate(calc(90deg))'.] + expected: FAIL + + ['rotate(asin(pi - pi + 1))' as a specified value should serialize as 'rotate(calc(90deg))'.] + expected: FAIL + + ['rotate(atan(1))' as a specified value should serialize as 'rotate(calc(45deg))'.] + expected: FAIL + + ['rotate(calc(atan(1)))' as a specified value should serialize as 'rotate(calc(45deg))'.] + expected: FAIL + + ['rotate(atan(0.5))' as a specified value should serialize as 'rotate(calc(26.5651deg))'.] + expected: FAIL + + ['rotate(calc(atan(0.5)))' as a specified value should serialize as 'rotate(calc(26.5651deg))'.] + expected: FAIL + + ['rotate(atan(0.577350269))' as a specified value should serialize as 'rotate(calc(30deg))'.] + expected: FAIL + + ['rotate(calc(atan(0.577350269)))' as a specified value should serialize as 'rotate(calc(30deg))'.] + expected: FAIL + + ['rotate(atan(0))' as a specified value should serialize as 'rotate(calc(0deg))'.] + expected: FAIL + + ['rotate(calc(atan(0)))' as a specified value should serialize as 'rotate(calc(0deg))'.] + expected: FAIL + + ['rotate(atan(infinity))' as a specified value should serialize as 'rotate(calc(90deg))'.] + expected: FAIL + + ['rotate(atan(tan(90deg)))' as a specified value should serialize as 'rotate(calc(90deg))'.] + expected: FAIL + + ['rotate(calc(atan(tan(90deg))))' as a specified value should serialize as 'rotate(calc(90deg))'.] + expected: FAIL + + ['rotate(atan(tan(-90deg)))' as a specified value should serialize as 'rotate(calc(-90deg))'.] + expected: FAIL + + ['rotate(calc(atan(tan(-90deg))))' as a specified value should serialize as 'rotate(calc(-90deg))'.] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/animations/calc-interpolation.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/animations/calc-interpolation.html.ini index 5d5a70ab708..72376ce87e7 100644 --- a/tests/wpt/metadata-layout-2020/css/css-values/animations/calc-interpolation.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-values/animations/calc-interpolation.html.ini @@ -229,3 +229,81 @@ [Web Animations: property from [0%\] to [100px\] at (1.25) should be [calc(0% + 125px)\]] expected: FAIL + + [CSS Transitions: property from [0px\] to [calc(infinity * 1px)\] at (-0.25) should be [NaNpx\]] + expected: FAIL + + [CSS Transitions: property from [0px\] to [calc(infinity * 1px)\] at (0.25) should be [NaNpx\]] + expected: FAIL + + [CSS Transitions: property from [0px\] to [calc(infinity * 1px)\] at (0.5) should be [NaNpx\]] + expected: FAIL + + [CSS Transitions: property from [0px\] to [calc(infinity * 1px)\] at (0.75) should be [NaNpx\]] + expected: FAIL + + [CSS Transitions: property from [0px\] to [calc(infinity * 1px)\] at (1) should be [NaNpx\]] + expected: FAIL + + [CSS Transitions: property from [0px\] to [calc(infinity * 1px)\] at (1.25) should be [NaNpx\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [calc(infinity * 1px)\] at (-0.25) should be [NaNpx\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [calc(infinity * 1px)\] at (0.25) should be [NaNpx\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [calc(infinity * 1px)\] at (0.5) should be [NaNpx\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [calc(infinity * 1px)\] at (0.75) should be [NaNpx\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [calc(infinity * 1px)\] at (1) should be [NaNpx\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [calc(infinity * 1px)\] at (1.25) should be [NaNpx\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [calc(infinity * 1px)\] at (-0.25) should be [NaNpx\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [calc(infinity * 1px)\] at (0) should be [NaNpx\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [calc(infinity * 1px)\] at (0.25) should be [NaNpx\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [calc(infinity * 1px)\] at (0.5) should be [NaNpx\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [calc(infinity * 1px)\] at (0.75) should be [NaNpx\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [calc(infinity * 1px)\] at (1) should be [NaNpx\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [calc(infinity * 1px)\] at (1.25) should be [NaNpx\]] + expected: FAIL + + [Web Animations: property from [0px\] to [calc(infinity * 1px)\] at (-0.25) should be [NaNpx\]] + expected: FAIL + + [Web Animations: property from [0px\] to [calc(infinity * 1px)\] at (0) should be [NaNpx\]] + expected: FAIL + + [Web Animations: property from [0px\] to [calc(infinity * 1px)\] at (0.25) should be [NaNpx\]] + expected: FAIL + + [Web Animations: property from [0px\] to [calc(infinity * 1px)\] at (0.5) should be [NaNpx\]] + expected: FAIL + + [Web Animations: property from [0px\] to [calc(infinity * 1px)\] at (0.75) should be [NaNpx\]] + expected: FAIL + + [Web Animations: property from [0px\] to [calc(infinity * 1px)\] at (1) should be [NaNpx\]] + expected: FAIL + + [Web Animations: property from [0px\] to [calc(infinity * 1px)\] at (1.25) should be [NaNpx\]] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/animations/line-height-lh-transition.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/animations/line-height-lh-transition.html.ini new file mode 100644 index 00000000000..05d3c78b460 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/animations/line-height-lh-transition.html.ini @@ -0,0 +1,3 @@ +[line-height-lh-transition.html] + [lh unit length should change with transitioning line-height] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/calc-angle-values.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/calc-angle-values.html.ini new file mode 100644 index 00000000000..5784dfd9a29 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/calc-angle-values.html.ini @@ -0,0 +1,81 @@ +[calc-angle-values.html] + [addition of 2 angle units: deg plus deg] + expected: FAIL + + [addition of 2 angle units: deg plus rad] + expected: FAIL + + [addition of 2 angle units: deg plus grad] + expected: FAIL + + [addition of 2 angle units: deg plus turn] + expected: FAIL + + [addition of 2 angle units: rad plus rad] + expected: FAIL + + [addition of 2 angle units: rad plus grad] + expected: FAIL + + [addition of 2 angle units: rad plus turn] + expected: FAIL + + [addition of 2 angle units: grad plus grad] + expected: FAIL + + [addition of 2 angle units: grad plus turn] + expected: FAIL + + [subtraction of angle unit: deg minus deg] + expected: FAIL + + [subtraction of angle unit: deg minus rad] + expected: FAIL + + [subtraction of angle unit: deg minus grad] + expected: FAIL + + [subtraction of angle unit: deg minus turn] + expected: FAIL + + [subtraction of angle unit: rad minus rad] + expected: FAIL + + [subtraction of angle unit: rad minus grad] + expected: FAIL + + [subtraction of angle unit: rad minus turn] + expected: FAIL + + [subtraction of angle unit: grad minus grad] + expected: FAIL + + [subtraction of angle unit: grad minus turn] + expected: FAIL + + [multiplication of angle unit: deg multiplied by int] + expected: FAIL + + [multiplication of angle unit: int multiplied by rad] + expected: FAIL + + [multiplication of angle unit: grad multiplied by int] + expected: FAIL + + [multiplication of angle unit: int multiplied by turn] + expected: FAIL + + [division of angle unit: deg divided by int] + expected: FAIL + + [division of angle unit: rad divided by int] + expected: FAIL + + [division of angle unit: grad divided by int] + expected: FAIL + + [division of angle unit: turn divided by int] + expected: FAIL + + [conversion of angle unit: grad into deg] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/calc-in-media-queries-with-mixed-units.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/calc-in-media-queries-with-mixed-units.html.ini new file mode 100644 index 00000000000..8b30f4fd190 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/calc-in-media-queries-with-mixed-units.html.ini @@ -0,0 +1,3 @@ +[calc-in-media-queries-with-mixed-units.html] + [box should be orange if the calc between vw/em in @media was correct] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/calc-infinity-nan-computed.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/calc-infinity-nan-computed.html.ini index c1d1d7888ef..3920bbbf97d 100644 --- a/tests/wpt/metadata-layout-2020/css/css-values/calc-infinity-nan-computed.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-values/calc-infinity-nan-computed.html.ini @@ -100,3 +100,18 @@ [Property rotate(calc(NaN * 1grad)) value expected same with rotate(0grad) in +/-0.0001] expected: FAIL + + [Property width value 'calc(10.135262721212548pc - 199pt / NaN)'] + expected: FAIL + + [Property width value 'max(15px, NaN * 1px)'] + expected: FAIL + + [Property width value 'max(NaN * 1px, 15px)'] + expected: FAIL + + [Property width value 'min(15px, NaN * 1px)'] + expected: FAIL + + [Property width value 'min(NaN * 1px, 15px)'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/exp-log-compute.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/exp-log-compute.html.ini index 24a9f546f40..501b94414e5 100644 --- a/tests/wpt/metadata-layout-2020/css/css-values/exp-log-compute.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-values/exp-log-compute.html.ini @@ -49,3 +49,6 @@ [calc(log(exp(log(e)))) should be used-value-equivalent to 1] expected: FAIL + + [calc(log(1) + exp(0)) should be used-value-equivalent to 1] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/lh-unit-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/lh-unit-003.html.ini new file mode 100644 index 00000000000..3f0d37518f1 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/lh-unit-003.html.ini @@ -0,0 +1,4 @@ +[lh-unit-003.html] + expected: ERROR + [Line-height and lh before @font-face loads] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/lh-unit-004.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/lh-unit-004.html.ini new file mode 100644 index 00000000000..3e40c1ae6ba --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/lh-unit-004.html.ini @@ -0,0 +1,3 @@ +[lh-unit-004.html] + [lh must be relative to computed line-height before select element fixup] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/round-function.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/round-function.html.ini index 4c11530c494..f8ec718a016 100644 --- a/tests/wpt/metadata-layout-2020/css/css-values/round-function.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-values/round-function.html.ini @@ -196,3 +196,9 @@ [calc(1 / round(down, 1, infinity)) should be used-value-equivalent to calc(infinity)] expected: FAIL + + [calc(1 / round(up, -1 * 0, infinity)) should be used-value-equivalent to calc(-infinity)] + expected: FAIL + + [calc(1 / round(up, -1, infinity)) should be used-value-equivalent to calc(-infinity)] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/round-mod-rem-computed.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/round-mod-rem-computed.html.ini index db98c4d8504..f2edcdd5883 100644 --- a/tests/wpt/metadata-layout-2020/css/css-values/round-mod-rem-computed.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-values/round-mod-rem-computed.html.ini @@ -265,3 +265,24 @@ [rem(10turn,6turn) should be used-value-equivalent to 4turn] expected: FAIL + + [calc(round(to-zero,-105, 10)) should be used-value-equivalent to -100] + expected: FAIL + + [round(10%,1px) should be used-value-equivalent to 8px] + expected: FAIL + + [round(10%,5px) should be used-value-equivalent to 10px] + expected: FAIL + + [round(2rem,5px) should be used-value-equivalent to 30px] + expected: FAIL + + [round(100px,1rem) should be used-value-equivalent to 96px] + expected: FAIL + + [round(10s,6000ms) should be used-value-equivalent to 12s] + expected: FAIL + + [round(10000ms,6s) should be used-value-equivalent to 12s] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/sin-cos-tan-serialize.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/sin-cos-tan-serialize.html.ini index a45d431ad47..552f6ffd0cc 100644 --- a/tests/wpt/metadata-layout-2020/css/css-values/sin-cos-tan-serialize.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-values/sin-cos-tan-serialize.html.ini @@ -112,3 +112,177 @@ ['scale(calc(tan(infinity)))' as a computed value should serialize as 'matrix(NaN, 0, 0, NaN, 0, 0)'.] expected: FAIL + + ['scale(calc(cos(0)))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(calc(sin(0)))' as a specified value should serialize as 'scale(calc(0))'.] + expected: FAIL + + ['scale(calc(tan(0)))' as a specified value should serialize as 'scale(calc(0))'.] + expected: FAIL + + ['scale(calc(calc(sin(0) + 0.5)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(calc(calc(sin(0) + cos(0) + tan(0))))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(calc(calc(cos(0) + 0.5)))' as a specified value should serialize as 'scale(calc(1.5))'.] + expected: FAIL + + ['scale(calc(calc(tan(0) + 0.5)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(cos(0deg))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(calc(cos(0deg)))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(sin(0deg))' as a specified value should serialize as 'scale(calc(0))'.] + expected: FAIL + + ['scale(calc(sin(0deg)))' as a specified value should serialize as 'scale(calc(0))'.] + expected: FAIL + + ['scale(tan(0deg))' as a specified value should serialize as 'scale(calc(0))'.] + expected: FAIL + + ['scale(calc(tan(0deg)))' as a specified value should serialize as 'scale(calc(0))'.] + expected: FAIL + + ['scale(sin(30deg))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(calc(sin(30deg)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(sin(0.523599))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(calc(sin(0.523599)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(sin(0.523599rad))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(calc(sin(0.523599rad)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(sin(33.333333grad))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(calc(sin(33.333333grad)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(sin(0.08333333turn))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(calc(sin(0.08333333turn)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(cos(60deg))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(calc(cos(60deg)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(cos(66.66666666grad))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(calc(cos(66.66666666grad)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(cos(1.047197551))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(calc(cos(1.047197551)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(cos(1.047197551rad))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(calc(cos(1.047197551rad)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(cos(0.16666666666turn))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(calc(cos(0.16666666666turn)))' as a specified value should serialize as 'scale(calc(0.5))'.] + expected: FAIL + + ['scale(tan(45deg))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(calc(tan(45deg)))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(tan(50grad))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(calc(tan(50grad)))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(tan(0.78539816))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(calc(tan(0.78539816)))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(tan(0.78539816rad))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(calc(tan(0.78539816rad)))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(tan(0.125turn))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(calc(tan(0.125turn)))' as a specified value should serialize as 'scale(calc(1))'.] + expected: FAIL + + ['scale(tan(90deg))' as a specified value should serialize as 'scale(calc(infinity))'.] + expected: FAIL + + ['scale(calc(tan(90deg)))' as a specified value should serialize as 'scale(calc(infinity))'.] + expected: FAIL + + ['scale(tan(-90deg))' as a specified value should serialize as 'scale(calc(-infinity))'.] + expected: FAIL + + ['scale(calc(tan(-90deg)))' as a specified value should serialize as 'scale(calc(-infinity))'.] + expected: FAIL + + ['scale(calc(sin(30deg) + cos(60deg) + tan(45deg)))' as a specified value should serialize as 'scale(calc(2))'.] + expected: FAIL + + ['scale(calc(calc(sin(30deg) + cos(60deg) + tan(45deg))))' as a specified value should serialize as 'scale(calc(2))'.] + expected: FAIL + + ['scale(calc(calc(sin(infinity))))' as a specified value should serialize as 'scale(calc(NaN))'.] + expected: FAIL + + ['scale(calc(calc(cos(infinity))))' as a specified value should serialize as 'scale(calc(NaN))'.] + expected: FAIL + + ['scale(calc(calc(tan(infinity))))' as a specified value should serialize as 'scale(calc(NaN))'.] + expected: FAIL + + ['scale(calc(sin(-infinity)))' as a specified value should serialize as 'scale(calc(NaN))'.] + expected: FAIL + + ['scale(calc(calc(sin(-infinity))))' as a specified value should serialize as 'scale(calc(NaN))'.] + expected: FAIL + + ['scale(calc(cos(-infinity)))' as a specified value should serialize as 'scale(calc(NaN))'.] + expected: FAIL + + ['scale(calc(calc(cos(-infinity))))' as a specified value should serialize as 'scale(calc(NaN))'.] + expected: FAIL + + ['scale(calc(tan(-infinity)))' as a specified value should serialize as 'scale(calc(NaN))'.] + expected: FAIL + + ['scale(calc(calc(tan(-infinity))))' as a specified value should serialize as 'scale(calc(NaN))'.] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-after-font-load.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-after-font-load.html.ini new file mode 100644 index 00000000000..89ec2bd4ef6 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-after-font-load.html.ini @@ -0,0 +1,3 @@ +[viewport-units-after-font-load.html] + [Viewport units are correctly updated after resize even if a font load has happened before] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-compute.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-compute.html.ini new file mode 100644 index 00000000000..3adee544e3e --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-compute.html.ini @@ -0,0 +1,2 @@ +[viewport-units-compute.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-invalidation.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-invalidation.html.ini new file mode 100644 index 00000000000..2bfbaae1715 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-invalidation.html.ini @@ -0,0 +1,72 @@ +[viewport-units-invalidation.html] + [100vw computes to 400px after frame resize] + expected: FAIL + + [100vi computes to 400px after frame resize] + expected: FAIL + + [100vmax computes to 400px after frame resize] + expected: FAIL + + [100svw computes to 400px after frame resize] + expected: FAIL + + [100svi computes to 400px after frame resize] + expected: FAIL + + [100svmax computes to 400px after frame resize] + expected: FAIL + + [100lvw computes to 400px after frame resize] + expected: FAIL + + [100lvi computes to 400px after frame resize] + expected: FAIL + + [100lvmax computes to 400px after frame resize] + expected: FAIL + + [100dvw computes to 400px after frame resize] + expected: FAIL + + [100dvi computes to 400px after frame resize] + expected: FAIL + + [100dvmax computes to 400px after frame resize] + expected: FAIL + + [100vh computes to 300px after frame resize] + expected: FAIL + + [100vb computes to 300px after frame resize] + expected: FAIL + + [100vmin computes to 300px after frame resize] + expected: FAIL + + [100svh computes to 300px after frame resize] + expected: FAIL + + [100svb computes to 300px after frame resize] + expected: FAIL + + [100svmin computes to 300px after frame resize] + expected: FAIL + + [100lvh computes to 300px after frame resize] + expected: FAIL + + [100lvb computes to 300px after frame resize] + expected: FAIL + + [100lvmin computes to 300px after frame resize] + expected: FAIL + + [100dvh computes to 300px after frame resize] + expected: FAIL + + [100dvb computes to 300px after frame resize] + expected: FAIL + + [100dvmin computes to 300px after frame resize] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-keyframes.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-keyframes.html.ini new file mode 100644 index 00000000000..9d0a2c91cf8 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-keyframes.html.ini @@ -0,0 +1,2 @@ +[viewport-units-keyframes.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-media-queries.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-media-queries.html.ini new file mode 100644 index 00000000000..f0cc77e6372 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-media-queries.html.ini @@ -0,0 +1,2 @@ +[viewport-units-media-queries.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-modify.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-modify.html.ini new file mode 100644 index 00000000000..1a8248cd94b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-modify.html.ini @@ -0,0 +1,3 @@ +[viewport-units-modify.html] + [Crash when going from non-viewport to viewport units] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-writing-mode.html.ini b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-writing-mode.html.ini new file mode 100644 index 00000000000..25b5a143709 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-values/viewport-units-writing-mode.html.ini @@ -0,0 +1,2 @@ +[viewport-units-writing-mode.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/css-variables/revert-in-fallback.html.ini b/tests/wpt/metadata-layout-2020/css/css-variables/revert-in-fallback.html.ini new file mode 100644 index 00000000000..f7b34f65f24 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-variables/revert-in-fallback.html.ini @@ -0,0 +1,6 @@ +[revert-in-fallback.html] + [var(--unknown, revert) in custom property] + expected: FAIL + + [var(--unknown, revert-layer) in shorthand observed via longhand] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-variables/revert-layer-in-fallback.html.ini b/tests/wpt/metadata-layout-2020/css/css-variables/revert-layer-in-fallback.html.ini new file mode 100644 index 00000000000..702cd0c0b5b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-variables/revert-layer-in-fallback.html.ini @@ -0,0 +1,12 @@ +[revert-layer-in-fallback.html] + [var(--unknown, revert-layer) in custom property] + expected: FAIL + + [var(--unknown, revert-layer) in shorthand] + expected: FAIL + + [var(--unknown, revert-layer) in shorthand observed via longhand] + expected: FAIL + + [var(--unknown, revert-layer) in longhand] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-variables/variable-presentation-attribute.html.ini b/tests/wpt/metadata-layout-2020/css/css-variables/variable-presentation-attribute.html.ini new file mode 100644 index 00000000000..b2b1d763fb3 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-variables/variable-presentation-attribute.html.ini @@ -0,0 +1,108 @@ +[variable-presentation-attribute.html] + [Testing 'stroke-width' on '#box1'.] + expected: FAIL + + [Testing 'stroke-width' on '#box2'.] + expected: FAIL + + [Testing 'stroke-width' on '#box3'.] + expected: FAIL + + [Testing 'clip' on '#test4'.] + expected: FAIL + + [Testing 'alignment-baseline'.] + expected: FAIL + + [Testing 'baseline-shift'.] + expected: FAIL + + [Testing 'clip-rule'.] + expected: FAIL + + [Testing 'color-interpolation-filters'.] + expected: FAIL + + [Testing 'display'.] + expected: FAIL + + [Testing 'dominant-baseline'.] + expected: FAIL + + [Testing 'fill'.] + expected: FAIL + + [Testing 'fill-opacity'.] + expected: FAIL + + [Testing 'fill-rule'.] + expected: FAIL + + [Testing 'flood-color'.] + expected: FAIL + + [Testing 'flood-opacity'.] + expected: FAIL + + [Testing 'font-family'.] + expected: FAIL + + [Testing 'font-size-adjust'.] + expected: FAIL + + [Testing 'glyph-orientation-horizontal'.] + expected: FAIL + + [Testing 'glyph-orientation-vertical'.] + expected: FAIL + + [Testing 'kerning'.] + expected: FAIL + + [Testing 'lighting-color'.] + expected: FAIL + + [Testing 'overflow'.] + expected: FAIL + + [Testing 'pointer-events'.] + expected: FAIL + + [Testing 'stop-color'.] + expected: FAIL + + [Testing 'stop-opacity'.] + expected: FAIL + + [Testing 'stroke'.] + expected: FAIL + + [Testing 'stroke-dasharray'.] + expected: FAIL + + [Testing 'stroke-dashoffset'.] + expected: FAIL + + [Testing 'stroke-linecap'.] + expected: FAIL + + [Testing 'stroke-linejoin'.] + expected: FAIL + + [Testing 'stroke-miterlimit'.] + expected: FAIL + + [Testing 'stroke-opacity'.] + expected: FAIL + + [Testing 'stroke-width'.] + expected: FAIL + + [Testing 'text-anchor'.] + expected: FAIL + + [Testing 'text-decoration-style'.] + expected: FAIL + + [Testing 'writing-mode'.] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html.ini new file mode 100644 index 00000000000..a2796f56cbd --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html.ini @@ -0,0 +1,3 @@ +[HTMLImageElement-x-and-y-ignore-transforms.html] + [HTMLImageElement's 'x' and 'y' property values ignore transforms] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/checkVisibility.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/checkVisibility.html.ini new file mode 100644 index 00000000000..489dd4c8c1d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/checkVisibility.html.ini @@ -0,0 +1,30 @@ +[checkVisibility.html] + [checkVisibility on visibility:hidden element.] + expected: FAIL + + [checkVisibility on content-visibility:hidden element.] + expected: FAIL + + [checkVisibility on content-visibility:auto element.] + expected: FAIL + + [checkVisibility on content-visibility:auto element which is outside the viewport.] + expected: FAIL + + [checkVisibility on display:none element.] + expected: FAIL + + [checkVisibility on opacity:0 element.] + expected: FAIL + + [checkVisibility on content-visibility:auto with visibility:hidden inside.] + expected: FAIL + + [checkVisibility on nested content-visibility:auto containers reports that the content is visible.] + expected: FAIL + + [checkVisibility on content-visibility:hidden child after forced layout update.] + expected: FAIL + + [checkVisibility on content-visibility:hidden element after forced layout update.] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/cssom-getBoxQuads-002.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/cssom-getBoxQuads-002.html.ini new file mode 100644 index 00000000000..93fd885f49c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/cssom-getBoxQuads-002.html.ini @@ -0,0 +1,3 @@ +[cssom-getBoxQuads-002.html] + [CSSOM View - getBoxQuads() returns consistent box for SVG test] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini index 4596f046e93..cf67b5d03dd 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini @@ -1,4 +1,3 @@ [elementFromPoint-dynamic-anon-box.html] [Link should be clickable after hiding a scrollbox with an anonymous table inside] expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini new file mode 100644 index 00000000000..b905fe70fcb --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-ellipsis-in-inline-box.html] + [elementFromPoint-ellipsis-in-inline-box] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-relative.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-relative.html.ini new file mode 100644 index 00000000000..7e9331b6bc2 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-relative.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-float-in-relative.html] + [elementFromPoint-float-in-relative] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-table.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-table.html.ini new file mode 100644 index 00000000000..db065588308 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-table.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-float-in-table.html] + [float-in-div] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-subpixel.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-subpixel.html.ini new file mode 100644 index 00000000000..8f6f663ba61 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-subpixel.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-subpixel.html] + [Hit test top left corner of box] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini new file mode 100644 index 00000000000..a6bca7ac372 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-visibility-hidden-resizer.html] + [elementFromPoint on resizer area of an element with visibility:hidden] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/idlharness.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/idlharness.html.ini index a03f07b836b..15e216708fd 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/idlharness.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/idlharness.html.ini @@ -472,3 +472,108 @@ [Text interface: document.createTextNode("x") must inherit property "getBoxQuads(optional BoxQuadOptions)" with the proper type] expected: FAIL + + [VisualViewport interface: existence and properties of interface object] + expected: FAIL + + [VisualViewport interface object length] + expected: FAIL + + [VisualViewport interface object name] + expected: FAIL + + [VisualViewport interface: existence and properties of interface prototype object] + expected: FAIL + + [VisualViewport interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [VisualViewport interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [VisualViewport interface: attribute offsetLeft] + expected: FAIL + + [VisualViewport interface: attribute offsetTop] + expected: FAIL + + [VisualViewport interface: attribute pageLeft] + expected: FAIL + + [VisualViewport interface: attribute pageTop] + expected: FAIL + + [VisualViewport interface: attribute width] + expected: FAIL + + [VisualViewport interface: attribute height] + expected: FAIL + + [VisualViewport interface: attribute scale] + expected: FAIL + + [VisualViewport interface: attribute onresize] + expected: FAIL + + [VisualViewport interface: attribute onscroll] + expected: FAIL + + [VisualViewport must be primary interface of self.visualViewport] + expected: FAIL + + [Stringification of self.visualViewport] + expected: FAIL + + [VisualViewport interface: self.visualViewport must inherit property "offsetLeft" with the proper type] + expected: FAIL + + [VisualViewport interface: self.visualViewport must inherit property "offsetTop" with the proper type] + expected: FAIL + + [VisualViewport interface: self.visualViewport must inherit property "pageLeft" with the proper type] + expected: FAIL + + [VisualViewport interface: self.visualViewport must inherit property "pageTop" with the proper type] + expected: FAIL + + [VisualViewport interface: self.visualViewport must inherit property "width" with the proper type] + expected: FAIL + + [VisualViewport interface: self.visualViewport must inherit property "height" with the proper type] + expected: FAIL + + [VisualViewport interface: self.visualViewport must inherit property "scale" with the proper type] + expected: FAIL + + [VisualViewport interface: self.visualViewport must inherit property "onresize" with the proper type] + expected: FAIL + + [VisualViewport interface: self.visualViewport must inherit property "onscroll" with the proper type] + expected: FAIL + + [Element interface: document.createElement("div") must inherit property "checkVisibility(optional CheckVisibilityOptions)" with the proper type] + expected: FAIL + + [Element interface: calling checkVisibility(optional CheckVisibilityOptions) on document.createElement("div") with too few arguments must throw TypeError] + expected: FAIL + + [Element interface: document.createElement("img") must inherit property "checkVisibility(optional CheckVisibilityOptions)" with the proper type] + expected: FAIL + + [Element interface: calling checkVisibility(optional CheckVisibilityOptions) on document.createElement("img") with too few arguments must throw TypeError] + expected: FAIL + + [Window interface: attribute visualViewport] + expected: FAIL + + [Window interface: window must inherit property "visualViewport" with the proper type] + expected: FAIL + + [Element interface: operation checkVisibility(optional CheckVisibilityOptions)] + expected: FAIL + + [Element interface: document.createElementNS("x", "y") must inherit property "checkVisibility(optional CheckVisibilityOptions)" with the proper type] + expected: FAIL + + [Element interface: calling checkVisibility(optional CheckVisibilityOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/offsetParent-block-in-inline.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/offsetParent-block-in-inline.html.ini new file mode 100644 index 00000000000..aa1109f1600 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/offsetParent-block-in-inline.html.ini @@ -0,0 +1,3 @@ +[offsetParent-block-in-inline.html] + [offsetParent-block-in-inline] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/offsetTop-offsetLeft-nested-offsetParents.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/offsetTop-offsetLeft-nested-offsetParents.html.ini new file mode 100644 index 00000000000..8ef76c3a6d2 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/offsetTop-offsetLeft-nested-offsetParents.html.ini @@ -0,0 +1,3 @@ +[offsetTop-offsetLeft-nested-offsetParents.html] + [Verifies that offsetTop and offsetLeft only go up one offsetParent when there are multiple nested offsetParents.] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/pt-to-px-width.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/pt-to-px-width.html.ini new file mode 100644 index 00000000000..51da590088f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/pt-to-px-width.html.ini @@ -0,0 +1,3 @@ +[pt-to-px-width.html] + [10pt converted to offset/client/scroll width] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/range-bounding-client-rect-with-display-contents.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/range-bounding-client-rect-with-display-contents.html.ini new file mode 100644 index 00000000000..33300e57d95 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/range-bounding-client-rect-with-display-contents.html.ini @@ -0,0 +1,3 @@ +[range-bounding-client-rect-with-display-contents.html] + [the space between elements using a range should be the same as using another method] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/scroll-back-to-initial-position.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/scroll-back-to-initial-position.html.ini new file mode 100644 index 00000000000..144fa4020bc --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/scroll-back-to-initial-position.html.ini @@ -0,0 +1,6 @@ +[scroll-back-to-initial-position.html] + [Element should scroll back to initial position with smooth behavior] + expected: FAIL + + [Element should scroll back to initial position with auto behavior] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/scroll-behavior-smooth-navigation.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/scroll-behavior-smooth-navigation.html.ini new file mode 100644 index 00000000000..878ef5f68f8 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/scroll-behavior-smooth-navigation.html.ini @@ -0,0 +1,2 @@ +[scroll-behavior-smooth-navigation.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/scrollIntoView-fixed.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/scrollIntoView-fixed.html.ini new file mode 100644 index 00000000000..58531782dc1 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/scrollIntoView-fixed.html.ini @@ -0,0 +1,12 @@ +[scrollIntoView-fixed.html] + [[Box A\] scrollIntoView from unscrollable position:fixed] + expected: FAIL + + [[Box B\] scrollIntoView from unscrollable position:fixed in iframe] + expected: FAIL + + [[Box C\] scrollIntoView from scrollable position:fixed] + expected: FAIL + + [[Box D\] scrollIntoView from scrollable position:fixed in iframe] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/scrollIntoView-stuck.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/scrollIntoView-stuck.tentative.html.ini new file mode 100644 index 00000000000..1b7ae1a6822 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/scrollIntoView-stuck.tentative.html.ini @@ -0,0 +1,3 @@ +[scrollIntoView-stuck.tentative.html] + [CSSOM View - scrollIntoView doesn't consider scroll-padding when target is stuck] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/scrollWidthHeight.xht.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/scrollWidthHeight.xht.ini index e906d552b32..a8d2c9e8aa8 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/scrollWidthHeight.xht.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/scrollWidthHeight.xht.ini @@ -1,16 +1,15 @@ [scrollWidthHeight.xht] - [elemSimple.scrollWidth is its clientWidth] - expected: FAIL - [elemNestedOverflow.scrollWidth is the width of its scrolled contents (ignoring padding, since we overflowed)] expected: FAIL - [elemSimple.scrollHeight is its clientHeight] - expected: FAIL - [elemNestedOverflow.scrollHeight is the height of its scrolled contents (ignoring padding, since we overflowed)] expected: FAIL [elemOverflow.scrollHeight is the width of its scrolled contents (ignoring padding, since we overflowed)] expected: FAIL + [elemOverflow.scrollHeight is the height of its scrolled contents (including padding)] + expected: FAIL + + [elemOverflow.scrollHeight is the width of its scrolled contents (including padding)] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom/CSSContainerRule.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/CSSContainerRule.tentative.html.ini new file mode 100644 index 00000000000..c78d4028364 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/CSSContainerRule.tentative.html.ini @@ -0,0 +1,6 @@ +[CSSContainerRule.tentative.html] + [@container name (min-width: 100px) {}] + expected: FAIL + + [@container (min-width: 100px) {}] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom/CSSStyleSheet-constructable-cssRules.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/CSSStyleSheet-constructable-cssRules.html.ini new file mode 100644 index 00000000000..75e83d39230 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/CSSStyleSheet-constructable-cssRules.html.ini @@ -0,0 +1,3 @@ +[CSSStyleSheet-constructable-cssRules.html] + [cssRules doesn't change on replace / replaceSync] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom/base-uri.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/base-uri.html.ini new file mode 100644 index 00000000000..3f69149fb17 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/base-uri.html.ini @@ -0,0 +1,6 @@ +[base-uri.html] + [KeyframeEffect constructor] + expected: FAIL + + [KeyframeEffect.setKeyframes] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom/caretPositionFromPoint-with-transformation.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/caretPositionFromPoint-with-transformation.html.ini new file mode 100644 index 00000000000..fc43c1d2387 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/caretPositionFromPoint-with-transformation.html.ini @@ -0,0 +1,4 @@ +[caretPositionFromPoint-with-transformation.html] + expected: ERROR + [iframe's with equal content should report the same caret offset] + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-cssfontrule.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-cssfontrule.tentative.html.ini new file mode 100644 index 00000000000..684213873ea --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-cssfontrule.tentative.html.ini @@ -0,0 +1,6 @@ +[cssstyledeclaration-cssfontrule.tentative.html] + [a CSSStyleDeclaration for a CSSFontRule contains a unicode-range attribute] + expected: FAIL + + [a CSSStyleDeclaration for a CSSFontRule contains a flex-direction attribute] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-csstext-all-shorthand.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-csstext-all-shorthand.html.ini new file mode 100644 index 00000000000..9adf45b4ef9 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-csstext-all-shorthand.html.ini @@ -0,0 +1,3 @@ +[cssstyledeclaration-csstext-all-shorthand.html] + ['all' shorthand with all longhands] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom/getComputedStyle-display-none-003.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/getComputedStyle-display-none-003.html.ini new file mode 100644 index 00000000000..3e83ad11327 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/getComputedStyle-display-none-003.html.ini @@ -0,0 +1,3 @@ +[getComputedStyle-display-none-003.html] + [getComputedStyle gets invalidated in display: none subtrees due to attribute mutations] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom/getComputedStyle-getter-v-properties.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/getComputedStyle-getter-v-properties.tentative.html.ini new file mode 100644 index 00000000000..8b9ac67b1d2 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/getComputedStyle-getter-v-properties.tentative.html.ini @@ -0,0 +1,12 @@ +[getComputedStyle-getter-v-properties.tentative.html] + [margin-top] + expected: FAIL + + [font-size] + expected: FAIL + + [max-width] + expected: FAIL + + [width] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom/property-accessors.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/property-accessors.html.ini new file mode 100644 index 00000000000..f7239796bbc --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/property-accessors.html.ini @@ -0,0 +1,27 @@ +[property-accessors.html] + [-apple-color-filter] + expected: FAIL + + [-apple-pay-button-style] + expected: FAIL + + [-epub-writing-mode] + expected: FAIL + + [-webkit-flex] + expected: FAIL + + [gap] + expected: FAIL + + [grid-gap] + expected: FAIL + + [overscroll-behavior] + expected: FAIL + + [src] + expected: FAIL + + [unicode-range] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom/serialize-all-longhands.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/serialize-all-longhands.html.ini new file mode 100644 index 00000000000..3c3b25495c2 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/serialize-all-longhands.html.ini @@ -0,0 +1,6 @@ +[serialize-all-longhands.html] + [Specified style] + expected: FAIL + + [Computed style] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom/style-sheet-interfaces-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/style-sheet-interfaces-001.html.ini index 1354503adb4..72057d982ea 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom/style-sheet-interfaces-001.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom/style-sheet-interfaces-001.html.ini @@ -11,3 +11,5 @@ [StyleSheet_property_values] expected: FAIL + [disabled attribute getter/setter] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/geometry/DOMMatrix-invert-preserves-2d.html.ini b/tests/wpt/metadata-layout-2020/css/geometry/DOMMatrix-invert-preserves-2d.html.ini new file mode 100644 index 00000000000..36eb63e7acf --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/geometry/DOMMatrix-invert-preserves-2d.html.ini @@ -0,0 +1,3 @@ +[DOMMatrix-invert-preserves-2d.html] + [scale] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/dynamic-range.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/dynamic-range.html.ini index 964d5842fe3..41e92d3faac 100644 --- a/tests/wpt/metadata-layout-2020/css/mediaqueries/dynamic-range.html.ini +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/dynamic-range.html.ini @@ -34,3 +34,39 @@ [Check that video-dynamic-range always matches 'standard'] expected: FAIL + + [Should be known: '(dynamic-range: standard)'] + expected: FAIL + + [Should be known: '(dynamic-range: high)'] + expected: FAIL + + [Should be known: '(video-dynamic-range: standard)'] + expected: FAIL + + [Should be known: '(video-dynamic-range: high)'] + expected: FAIL + + [Should be parseable: '(dynamic-range)'] + expected: FAIL + + [Should be parseable: '(dynamic-range: 0)'] + expected: FAIL + + [Should be parseable: '(dynamic-range: 10px)'] + expected: FAIL + + [Should be parseable: '(dynamic-range: invalid)'] + expected: FAIL + + [Should be parseable: '(video-dynamic-range)'] + expected: FAIL + + [Should be parseable: '(video-dynamic-range: 0)'] + expected: FAIL + + [Should be parseable: '(video-dynamic-range: 10px)'] + expected: FAIL + + [Should be parseable: '(video-dynamic-range: invalid)'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/forced-colors.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/forced-colors.html.ini new file mode 100644 index 00000000000..d694185ceeb --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/forced-colors.html.ini @@ -0,0 +1,30 @@ +[forced-colors.html] + [Should be known: '(forced-colors)'] + expected: FAIL + + [Should be known: '(forced-colors: none)'] + expected: FAIL + + [Should be known: '(forced-colors: active)'] + expected: FAIL + + [Should be parseable: '(forced-colors: 0)'] + expected: FAIL + + [Should be parseable: '(forced-colors: no-preference)'] + expected: FAIL + + [Should be parseable: '(forced-colors: 10px)'] + expected: FAIL + + [Should be parseable: '(forced-colors: active 0)'] + expected: FAIL + + [Should be parseable: '(forced-colors: none active)'] + expected: FAIL + + [Should be parseable: '(forced-colors: active/none)'] + expected: FAIL + + [Check that none evaluates to false in the boolean context] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/media-query-matches-in-iframe.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/media-query-matches-in-iframe.html.ini new file mode 100644 index 00000000000..92f8452d95a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/media-query-matches-in-iframe.html.ini @@ -0,0 +1,66 @@ +[media-query-matches-in-iframe.html] + [matchMedia('(max-width: 150px)').matches should update immediately] + expected: FAIL + + [matchMedia('(width: 100px)').matches should update immediately] + expected: FAIL + + [matchMedia('(orientation: portrait)').matches should update immediately] + expected: FAIL + + [matchMedia('(aspect-ratio: 1/1)').matches should update immediately] + expected: FAIL + + [matchMedia('(max-aspect-ratio: 4/3)').matches should update immediately] + expected: FAIL + + [matchMedia('(height: 100px)').matches should update immediately] + expected: FAIL + + [matchMedia('(max-height: 150px)').matches should update immediately] + expected: FAIL + + [matchMedia('(min-aspect-ratio: 3/4)').matches should update immediately] + expected: FAIL + + [matchMedia('(min-height: 150px)').matches should update immediately] + expected: FAIL + + [matchMedia('(aspect-ratio: 1/2)').matches should update immediately] + expected: FAIL + + [matchMedia('(min-width: 150px)').matches should update immediately] + expected: FAIL + + [matchMedia('(min-aspect-ratio: 4/3)').matches should update immediately] + expected: FAIL + + [matchMedia('(max-width: 150px)') should not receive a change event until update the rendering step of HTML5 event loop] + expected: FAIL + + [matchMedia('(width: 100px)') should not receive a change event until update the rendering step of HTML5 event loop] + expected: FAIL + + [matchMedia('(orientation: portrait)') should not receive a change event until update the rendering step of HTML5 event loop] + expected: FAIL + + [matchMedia('(aspect-ratio: 1/1)') should not receive a change event until update the rendering step of HTML5 event loop] + expected: FAIL + + [matchMedia('(max-aspect-ratio: 4/3)') should not receive a change event until update the rendering step of HTML5 event loop] + expected: FAIL + + [matchMedia('(max-width: 150px)') should receive a change event after resize event on the window but before a requestAnimationFrame callback is called] + expected: FAIL + + [matchMedia('(width: 100px)') should receive a change event after resize event on the window but before a requestAnimationFrame callback is called] + expected: FAIL + + [matchMedia('(orientation: portrait)') should receive a change event after resize event on the window but before a requestAnimationFrame callback is called] + expected: FAIL + + [matchMedia('(aspect-ratio: 1/1)') should receive a change event after resize event on the window but before a requestAnimationFrame callback is called] + expected: FAIL + + [matchMedia('(max-aspect-ratio: 4/3)') should receive a change event after resize event on the window but before a requestAnimationFrame callback is called] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/mq-invalid-media-type-layer-002.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/mq-invalid-media-type-layer-002.html.ini new file mode 100644 index 00000000000..8d81f8e388e --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/mq-invalid-media-type-layer-002.html.ini @@ -0,0 +1,3 @@ +[mq-invalid-media-type-layer-002.html] + ['layer' used as media types is a syntax error] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/mq-unknown-feature-custom-property.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/mq-unknown-feature-custom-property.html.ini new file mode 100644 index 00000000000..37f55c3bd0a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/mq-unknown-feature-custom-property.html.ini @@ -0,0 +1,3 @@ +[mq-unknown-feature-custom-property.html] + [Serialization of : with custom property feature name and ident value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/navigation-controls.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/navigation-controls.tentative.html.ini new file mode 100644 index 00000000000..19dabae1324 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/navigation-controls.tentative.html.ini @@ -0,0 +1,18 @@ +[navigation-controls.tentative.html] + [Should be known: '(navigation-controls)'] + expected: FAIL + + [Should be known: '(navigation-controls: none)'] + expected: FAIL + + [Should be known: '(navigation-controls: back-button)'] + expected: FAIL + + [Should be parseable: '(navigation-controls: none back-button)'] + expected: FAIL + + [Should be parseable: '(navigation-controls: back-button/none)'] + expected: FAIL + + [Check that none evaluates to false in the boolean context] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-color-scheme.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-color-scheme.html.ini index c8161aec99a..e9266828233 100644 --- a/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-color-scheme.html.ini +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-color-scheme.html.ini @@ -20,3 +20,32 @@ [Should be parseable in JS: '(prefers-color-scheme: light)'] expected: FAIL + [Should be known: '(prefers-color-scheme)'] + expected: FAIL + + [Should be known: '(prefers-color-scheme: light)'] + expected: FAIL + + [Should be known: '(prefers-color-scheme: dark)'] + expected: FAIL + + [Should be parseable: '(prefers-color-scheme: 0)'] + expected: FAIL + + [Should be parseable: '(prefers-color-scheme: none)'] + expected: FAIL + + [Should be parseable: '(prefers-color-scheme: 10px)'] + expected: FAIL + + [Should be parseable: '(prefers-color-scheme: dark 0)'] + expected: FAIL + + [Should be parseable: '(prefers-color-scheme: dark light)'] + expected: FAIL + + [Should be parseable: '(prefers-color-scheme: light/dark)'] + expected: FAIL + + [Should be parseable: '(prefers-color-scheme: no-preference)'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-contrast.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-contrast.html.ini index b6c9d9d098d..88c0856101e 100644 --- a/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-contrast.html.ini +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-contrast.html.ini @@ -49,3 +49,48 @@ [Should be parseable in JS: '(prefers-contrast: custom)'] expected: FAIL + + [Should be known: '(prefers-contrast)'] + expected: FAIL + + [Should be known: '(prefers-contrast: no-preference)'] + expected: FAIL + + [Should be known: '(prefers-contrast: more)'] + expected: FAIL + + [Should be known: '(prefers-contrast: less)'] + expected: FAIL + + [Should be known: '(prefers-contrast: custom)'] + expected: FAIL + + [Should be parseable: '(prefers-contrast: increase)'] + expected: FAIL + + [Should be parseable: '(prefers-contrast: none)'] + expected: FAIL + + [Should be parseable: '(prefers-contrast: forced high)'] + expected: FAIL + + [Should be parseable: '(prefers-contrast: forced low)'] + expected: FAIL + + [Should be parseable: '(prefers-contrast > increase)'] + expected: FAIL + + [Should be parseable: '(prefers-increased-contrast)'] + expected: FAIL + + [Should be parseable: '(prefers-decreased-contrast)'] + expected: FAIL + + [Should be parseable: '(prefers-contrast: high)'] + expected: FAIL + + [Should be parseable: '(prefers-contrast: low)'] + expected: FAIL + + [Should be parseable: '(prefers-contrast: forced)'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-reduced-data.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-reduced-data.html.ini new file mode 100644 index 00000000000..5d3f21e9816 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-reduced-data.html.ini @@ -0,0 +1,30 @@ +[prefers-reduced-data.html] + [Should be known: '(prefers-reduced-data)'] + expected: FAIL + + [Should be known: '(prefers-reduced-data: no-preference)'] + expected: FAIL + + [Should be known: '(prefers-reduced-data: reduce)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-data: 0)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-data: none)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-data: 10px)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-data: no-preference reduce)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-data: reduced)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-data: no-preference/reduce)'] + expected: FAIL + + [Check that no-preference evaluates to false in the boolean context] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-reduced-motion.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-reduced-motion.html.ini new file mode 100644 index 00000000000..c6aa524d0a2 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-reduced-motion.html.ini @@ -0,0 +1,30 @@ +[prefers-reduced-motion.html] + [Should be known: '(prefers-reduced-motion)'] + expected: FAIL + + [Should be known: '(prefers-reduced-motion: no-preference)'] + expected: FAIL + + [Should be known: '(prefers-reduced-motion: reduce)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-motion: 0)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-motion: none)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-motion: 10px)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-motion: no-preference reduce)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-motion: reduced)'] + expected: FAIL + + [Should be parseable: '(prefers-reduced-motion: no-preference/reduce)'] + expected: FAIL + + [Check that no-preference evaluates to false in the boolean context] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/relative-units-005.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/relative-units-005.html.ini index 66c5bd6b684..160480b72e2 100644 --- a/tests/wpt/metadata-layout-2020/css/mediaqueries/relative-units-005.html.ini +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/relative-units-005.html.ini @@ -4,3 +4,6 @@ [ch unit in media queries should match initial font] expected: FAIL + + [ic unit in media queries should match initial font] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/test_media_queries.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/test_media_queries.html.ini index 711cdd6b85d..97aeec2e7ed 100644 --- a/tests/wpt/metadata-layout-2020/css/mediaqueries/test_media_queries.html.ini +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/test_media_queries.html.ini @@ -1099,3 +1099,2193 @@ [(any-pointer) == not (any-pointer: none)] expected: FAIL + + [expression_should_be_parseable: min-width] + expected: FAIL + + [expression_should_be_unknown: min-width] + expected: FAIL + + [expression_should_be_parseable: max-width] + expected: FAIL + + [expression_should_be_unknown: max-width] + expected: FAIL + + [expression_should_be_parseable: width : -1px] + expected: FAIL + + [expression_should_be_unknown: width : -1px] + expected: FAIL + + [expression_should_be_parseable: min-width : -1px] + expected: FAIL + + [expression_should_be_unknown: min-width : -1px] + expected: FAIL + + [expression_should_be_parseable: max-width : -1px] + expected: FAIL + + [expression_should_be_unknown: max-width : -1px] + expected: FAIL + + [expression_should_be_parseable: width : -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: width : -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: width : -100000em] + expected: FAIL + + [expression_should_be_unknown: width : -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px : width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : width > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : width > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : width >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : width >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : width = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : width <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : width <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : width < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : width < 0px] + expected: FAIL + + [expression_should_be_parseable: min-width > -0] + expected: FAIL + + [expression_should_be_unknown: min-width > -0] + expected: FAIL + + [expression_should_be_parseable: max-width > -0] + expected: FAIL + + [expression_should_be_unknown: max-width > -0] + expected: FAIL + + [expression_should_be_parseable: width > -1px] + expected: FAIL + + [expression_should_be_unknown: width > -1px] + expected: FAIL + + [expression_should_be_parseable: min-width > -1px] + expected: FAIL + + [expression_should_be_unknown: min-width > -1px] + expected: FAIL + + [expression_should_be_parseable: max-width > -1px] + expected: FAIL + + [expression_should_be_unknown: max-width > -1px] + expected: FAIL + + [expression_should_be_parseable: width > -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: width > -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: width > -100000em] + expected: FAIL + + [expression_should_be_unknown: width > -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px > width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > width = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > width <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > width <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > width < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > width < 0px] + expected: FAIL + + [expression_should_be_parseable: min-width >= -0] + expected: FAIL + + [expression_should_be_unknown: min-width >= -0] + expected: FAIL + + [expression_should_be_parseable: max-width >= -0] + expected: FAIL + + [expression_should_be_unknown: max-width >= -0] + expected: FAIL + + [expression_should_be_unknown: width > = 0px] + expected: FAIL + + [expression_should_be_parseable: width >= -1px] + expected: FAIL + + [expression_should_be_unknown: width >= -1px] + expected: FAIL + + [expression_should_be_parseable: min-width >= -1px] + expected: FAIL + + [expression_should_be_unknown: min-width >= -1px] + expected: FAIL + + [expression_should_be_parseable: max-width >= -1px] + expected: FAIL + + [expression_should_be_unknown: max-width >= -1px] + expected: FAIL + + [expression_should_be_parseable: width >= -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: width >= -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: width >= -100000em] + expected: FAIL + + [expression_should_be_unknown: width >= -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px >= width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= width = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= width <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= width <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= width < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= width < 0px] + expected: FAIL + + [expression_should_be_parseable: min-width = -0] + expected: FAIL + + [expression_should_be_unknown: min-width = -0] + expected: FAIL + + [expression_should_be_parseable: max-width = -0] + expected: FAIL + + [expression_should_be_unknown: max-width = -0] + expected: FAIL + + [expression_should_be_parseable: 0px = width = 100000px] + expected: FAIL + + [expression_should_be_unknown: 0px = width = 100000px] + expected: FAIL + + [expression_should_be_parseable: width = -1px] + expected: FAIL + + [expression_should_be_unknown: width = -1px] + expected: FAIL + + [expression_should_be_parseable: min-width = -1px] + expected: FAIL + + [expression_should_be_unknown: min-width = -1px] + expected: FAIL + + [expression_should_be_parseable: max-width = -1px] + expected: FAIL + + [expression_should_be_unknown: max-width = -1px] + expected: FAIL + + [expression_should_be_parseable: width = -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: width = -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: width = -100000em] + expected: FAIL + + [expression_should_be_unknown: width = -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px = width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = width > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = width > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = width >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = width >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = width = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = width <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = width <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = width < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = width < 0px] + expected: FAIL + + [expression_should_be_parseable: min-width <= -0] + expected: FAIL + + [expression_should_be_unknown: min-width <= -0] + expected: FAIL + + [expression_should_be_parseable: max-width <= -0] + expected: FAIL + + [expression_should_be_unknown: max-width <= -0] + expected: FAIL + + [expression_should_be_unknown: width < = 0px] + expected: FAIL + + [expression_should_be_parseable: width <= -1px] + expected: FAIL + + [expression_should_be_unknown: width <= -1px] + expected: FAIL + + [expression_should_be_parseable: min-width <= -1px] + expected: FAIL + + [expression_should_be_unknown: min-width <= -1px] + expected: FAIL + + [expression_should_be_parseable: max-width <= -1px] + expected: FAIL + + [expression_should_be_unknown: max-width <= -1px] + expected: FAIL + + [expression_should_be_parseable: width <= -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: width <= -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: width <= -100000em] + expected: FAIL + + [expression_should_be_unknown: width <= -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px <= width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= width > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= width > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= width >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= width >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= width = 0px] + expected: FAIL + + [expression_should_be_parseable: min-width < -0] + expected: FAIL + + [expression_should_be_unknown: min-width < -0] + expected: FAIL + + [expression_should_be_parseable: max-width < -0] + expected: FAIL + + [expression_should_be_unknown: max-width < -0] + expected: FAIL + + [expression_should_be_parseable: width < -1px] + expected: FAIL + + [expression_should_be_unknown: width < -1px] + expected: FAIL + + [expression_should_be_parseable: min-width < -1px] + expected: FAIL + + [expression_should_be_unknown: min-width < -1px] + expected: FAIL + + [expression_should_be_parseable: max-width < -1px] + expected: FAIL + + [expression_should_be_unknown: max-width < -1px] + expected: FAIL + + [expression_should_be_parseable: width < -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: width < -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: width < -100000em] + expected: FAIL + + [expression_should_be_unknown: width < -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px < width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < width > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < width > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < width >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < width >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < width = 0px] + expected: FAIL + + [expression_should_be_parseable: min-height] + expected: FAIL + + [expression_should_be_unknown: min-height] + expected: FAIL + + [expression_should_be_parseable: max-height] + expected: FAIL + + [expression_should_be_unknown: max-height] + expected: FAIL + + [expression_should_be_parseable: height : -1px] + expected: FAIL + + [expression_should_be_unknown: height : -1px] + expected: FAIL + + [expression_should_be_parseable: min-height : -1px] + expected: FAIL + + [expression_should_be_unknown: min-height : -1px] + expected: FAIL + + [expression_should_be_parseable: max-height : -1px] + expected: FAIL + + [expression_should_be_unknown: max-height : -1px] + expected: FAIL + + [expression_should_be_parseable: height : -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: height : -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: height : -100000em] + expected: FAIL + + [expression_should_be_unknown: height : -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px : height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : height > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : height > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : height >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : height >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : height = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : height <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : height <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : height < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : height < 0px] + expected: FAIL + + [expression_should_be_parseable: min-height > -0] + expected: FAIL + + [expression_should_be_unknown: min-height > -0] + expected: FAIL + + [expression_should_be_parseable: max-height > -0] + expected: FAIL + + [expression_should_be_unknown: max-height > -0] + expected: FAIL + + [expression_should_be_parseable: height > -1px] + expected: FAIL + + [expression_should_be_unknown: height > -1px] + expected: FAIL + + [expression_should_be_parseable: min-height > -1px] + expected: FAIL + + [expression_should_be_unknown: min-height > -1px] + expected: FAIL + + [expression_should_be_parseable: max-height > -1px] + expected: FAIL + + [expression_should_be_unknown: max-height > -1px] + expected: FAIL + + [expression_should_be_parseable: height > -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: height > -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: height > -100000em] + expected: FAIL + + [expression_should_be_unknown: height > -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px > height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > height = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > height <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > height <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > height < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > height < 0px] + expected: FAIL + + [expression_should_be_parseable: min-height >= -0] + expected: FAIL + + [expression_should_be_unknown: min-height >= -0] + expected: FAIL + + [expression_should_be_parseable: max-height >= -0] + expected: FAIL + + [expression_should_be_unknown: max-height >= -0] + expected: FAIL + + [expression_should_be_parseable: height > = 0px] + expected: FAIL + + [expression_should_be_unknown: height > = 0px] + expected: FAIL + + [expression_should_be_parseable: height >= -1px] + expected: FAIL + + [expression_should_be_unknown: height >= -1px] + expected: FAIL + + [expression_should_be_parseable: min-height >= -1px] + expected: FAIL + + [expression_should_be_unknown: min-height >= -1px] + expected: FAIL + + [expression_should_be_parseable: max-height >= -1px] + expected: FAIL + + [expression_should_be_unknown: max-height >= -1px] + expected: FAIL + + [expression_should_be_parseable: height >= -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: height >= -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: height >= -100000em] + expected: FAIL + + [expression_should_be_unknown: height >= -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px >= height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= height = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= height <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= height <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= height < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= height < 0px] + expected: FAIL + + [expression_should_be_parseable: min-height = -0] + expected: FAIL + + [expression_should_be_unknown: min-height = -0] + expected: FAIL + + [expression_should_be_parseable: max-height = -0] + expected: FAIL + + [expression_should_be_unknown: max-height = -0] + expected: FAIL + + [expression_should_be_parseable: 0px = height = 100000px] + expected: FAIL + + [expression_should_be_unknown: 0px = height = 100000px] + expected: FAIL + + [expression_should_be_parseable: height = -1px] + expected: FAIL + + [expression_should_be_unknown: height = -1px] + expected: FAIL + + [expression_should_be_parseable: min-height = -1px] + expected: FAIL + + [expression_should_be_unknown: min-height = -1px] + expected: FAIL + + [expression_should_be_parseable: max-height = -1px] + expected: FAIL + + [expression_should_be_unknown: max-height = -1px] + expected: FAIL + + [expression_should_be_parseable: height = -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: height = -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: height = -100000em] + expected: FAIL + + [expression_should_be_unknown: height = -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px = height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = height > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = height > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = height >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = height >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = height = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = height <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = height <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = height < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = height < 0px] + expected: FAIL + + [expression_should_be_parseable: min-height <= -0] + expected: FAIL + + [expression_should_be_unknown: min-height <= -0] + expected: FAIL + + [expression_should_be_parseable: max-height <= -0] + expected: FAIL + + [expression_should_be_unknown: max-height <= -0] + expected: FAIL + + [expression_should_be_parseable: height < = 0px] + expected: FAIL + + [expression_should_be_unknown: height < = 0px] + expected: FAIL + + [expression_should_be_parseable: height <= -1px] + expected: FAIL + + [expression_should_be_unknown: height <= -1px] + expected: FAIL + + [expression_should_be_parseable: min-height <= -1px] + expected: FAIL + + [expression_should_be_unknown: min-height <= -1px] + expected: FAIL + + [expression_should_be_parseable: max-height <= -1px] + expected: FAIL + + [expression_should_be_unknown: max-height <= -1px] + expected: FAIL + + [expression_should_be_parseable: height <= -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: height <= -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: height <= -100000em] + expected: FAIL + + [expression_should_be_unknown: height <= -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px <= height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= height > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= height > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= height >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= height >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= height = 0px] + expected: FAIL + + [expression_should_be_parseable: min-height < -0] + expected: FAIL + + [expression_should_be_unknown: min-height < -0] + expected: FAIL + + [expression_should_be_parseable: max-height < -0] + expected: FAIL + + [expression_should_be_unknown: max-height < -0] + expected: FAIL + + [expression_should_be_parseable: height < -1px] + expected: FAIL + + [expression_should_be_unknown: height < -1px] + expected: FAIL + + [expression_should_be_parseable: min-height < -1px] + expected: FAIL + + [expression_should_be_unknown: min-height < -1px] + expected: FAIL + + [expression_should_be_parseable: max-height < -1px] + expected: FAIL + + [expression_should_be_unknown: max-height < -1px] + expected: FAIL + + [expression_should_be_parseable: height < -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: height < -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: height < -100000em] + expected: FAIL + + [expression_should_be_unknown: height < -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px < height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < height > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < height > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < height >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < height >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < height = 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-width] + expected: FAIL + + [expression_should_be_unknown: min-device-width] + expected: FAIL + + [expression_should_be_parseable: max-device-width] + expected: FAIL + + [expression_should_be_unknown: max-device-width] + expected: FAIL + + [expression_should_be_parseable: device-width : -1px] + expected: FAIL + + [expression_should_be_unknown: device-width : -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-width : -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-width : -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-width : -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-width : -1px] + expected: FAIL + + [expression_should_be_parseable: device-width : -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-width : -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-width : -100000em] + expected: FAIL + + [expression_should_be_unknown: device-width : -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px : device-width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : device-width > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-width > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : device-width >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-width >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : device-width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-width = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : device-width <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-width <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : device-width < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-width < 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-width > -0] + expected: FAIL + + [expression_should_be_unknown: min-device-width > -0] + expected: FAIL + + [expression_should_be_parseable: max-device-width > -0] + expected: FAIL + + [expression_should_be_unknown: max-device-width > -0] + expected: FAIL + + [expression_should_be_parseable: device-width > -1px] + expected: FAIL + + [expression_should_be_unknown: device-width > -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-width > -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-width > -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-width > -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-width > -1px] + expected: FAIL + + [expression_should_be_parseable: device-width > -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-width > -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-width > -100000em] + expected: FAIL + + [expression_should_be_unknown: device-width > -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px > device-width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > device-width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > device-width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > device-width = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > device-width <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > device-width <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > device-width < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > device-width < 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-width >= -0] + expected: FAIL + + [expression_should_be_unknown: min-device-width >= -0] + expected: FAIL + + [expression_should_be_parseable: max-device-width >= -0] + expected: FAIL + + [expression_should_be_unknown: max-device-width >= -0] + expected: FAIL + + [expression_should_be_parseable: device-width > = 0px] + expected: FAIL + + [expression_should_be_unknown: device-width > = 0px] + expected: FAIL + + [expression_should_be_parseable: device-width >= -1px] + expected: FAIL + + [expression_should_be_unknown: device-width >= -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-width >= -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-width >= -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-width >= -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-width >= -1px] + expected: FAIL + + [expression_should_be_parseable: device-width >= -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-width >= -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-width >= -100000em] + expected: FAIL + + [expression_should_be_unknown: device-width >= -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px >= device-width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= device-width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= device-width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= device-width = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= device-width <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= device-width <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= device-width < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= device-width < 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-width = -0] + expected: FAIL + + [expression_should_be_unknown: min-device-width = -0] + expected: FAIL + + [expression_should_be_parseable: max-device-width = -0] + expected: FAIL + + [expression_should_be_unknown: max-device-width = -0] + expected: FAIL + + [expression_should_be_parseable: 0px = device-width = 100000px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-width = 100000px] + expected: FAIL + + [expression_should_be_parseable: device-width = -1px] + expected: FAIL + + [expression_should_be_unknown: device-width = -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-width = -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-width = -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-width = -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-width = -1px] + expected: FAIL + + [expression_should_be_parseable: device-width = -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-width = -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-width = -100000em] + expected: FAIL + + [expression_should_be_unknown: device-width = -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px = device-width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = device-width > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-width > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = device-width >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-width >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = device-width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-width = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = device-width <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-width <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = device-width < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-width < 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-width <= -0] + expected: FAIL + + [expression_should_be_unknown: min-device-width <= -0] + expected: FAIL + + [expression_should_be_parseable: max-device-width <= -0] + expected: FAIL + + [expression_should_be_unknown: max-device-width <= -0] + expected: FAIL + + [expression_should_be_parseable: device-width < = 0px] + expected: FAIL + + [expression_should_be_unknown: device-width < = 0px] + expected: FAIL + + [expression_should_be_parseable: device-width <= -1px] + expected: FAIL + + [expression_should_be_unknown: device-width <= -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-width <= -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-width <= -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-width <= -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-width <= -1px] + expected: FAIL + + [expression_should_be_parseable: device-width <= -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-width <= -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-width <= -100000em] + expected: FAIL + + [expression_should_be_unknown: device-width <= -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px <= device-width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= device-width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= device-width > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= device-width > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= device-width >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= device-width >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= device-width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= device-width = 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-width < -0] + expected: FAIL + + [expression_should_be_unknown: min-device-width < -0] + expected: FAIL + + [expression_should_be_parseable: max-device-width < -0] + expected: FAIL + + [expression_should_be_unknown: max-device-width < -0] + expected: FAIL + + [expression_should_be_parseable: device-width < -1px] + expected: FAIL + + [expression_should_be_unknown: device-width < -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-width < -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-width < -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-width < -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-width < -1px] + expected: FAIL + + [expression_should_be_parseable: device-width < -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-width < -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-width < -100000em] + expected: FAIL + + [expression_should_be_unknown: device-width < -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px < device-width : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < device-width : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < device-width > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < device-width > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < device-width >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < device-width >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < device-width = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < device-width = 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-height] + expected: FAIL + + [expression_should_be_unknown: min-device-height] + expected: FAIL + + [expression_should_be_parseable: max-device-height] + expected: FAIL + + [expression_should_be_unknown: max-device-height] + expected: FAIL + + [expression_should_be_parseable: device-height : -1px] + expected: FAIL + + [expression_should_be_unknown: device-height : -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-height : -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-height : -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-height : -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-height : -1px] + expected: FAIL + + [expression_should_be_parseable: device-height : -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-height : -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-height : -100000em] + expected: FAIL + + [expression_should_be_unknown: device-height : -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px : device-height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : device-height > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-height > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : device-height >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-height >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : device-height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-height = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : device-height <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-height <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px : device-height < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px : device-height < 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-height > -0] + expected: FAIL + + [expression_should_be_unknown: min-device-height > -0] + expected: FAIL + + [expression_should_be_parseable: max-device-height > -0] + expected: FAIL + + [expression_should_be_unknown: max-device-height > -0] + expected: FAIL + + [expression_should_be_parseable: device-height > -1px] + expected: FAIL + + [expression_should_be_unknown: device-height > -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-height > -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-height > -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-height > -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-height > -1px] + expected: FAIL + + [expression_should_be_parseable: device-height > -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-height > -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-height > -100000em] + expected: FAIL + + [expression_should_be_unknown: device-height > -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px > device-height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > device-height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > device-height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > device-height = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > device-height <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > device-height <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px > device-height < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px > device-height < 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-height >= -0] + expected: FAIL + + [expression_should_be_unknown: min-device-height >= -0] + expected: FAIL + + [expression_should_be_parseable: max-device-height >= -0] + expected: FAIL + + [expression_should_be_unknown: max-device-height >= -0] + expected: FAIL + + [expression_should_be_parseable: device-height > = 0px] + expected: FAIL + + [expression_should_be_unknown: device-height > = 0px] + expected: FAIL + + [expression_should_be_parseable: device-height >= -1px] + expected: FAIL + + [expression_should_be_unknown: device-height >= -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-height >= -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-height >= -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-height >= -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-height >= -1px] + expected: FAIL + + [expression_should_be_parseable: device-height >= -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-height >= -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-height >= -100000em] + expected: FAIL + + [expression_should_be_unknown: device-height >= -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px >= device-height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= device-height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= device-height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= device-height = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= device-height <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= device-height <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px >= device-height < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px >= device-height < 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-height = -0] + expected: FAIL + + [expression_should_be_unknown: min-device-height = -0] + expected: FAIL + + [expression_should_be_parseable: max-device-height = -0] + expected: FAIL + + [expression_should_be_unknown: max-device-height = -0] + expected: FAIL + + [expression_should_be_parseable: 0px = device-height = 100000px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-height = 100000px] + expected: FAIL + + [expression_should_be_parseable: device-height = -1px] + expected: FAIL + + [expression_should_be_unknown: device-height = -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-height = -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-height = -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-height = -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-height = -1px] + expected: FAIL + + [expression_should_be_parseable: device-height = -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-height = -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-height = -100000em] + expected: FAIL + + [expression_should_be_unknown: device-height = -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px = device-height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = device-height > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-height > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = device-height >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-height >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = device-height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-height = 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = device-height <= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-height <= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px = device-height < 0px] + expected: FAIL + + [expression_should_be_unknown: 0px = device-height < 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-height <= -0] + expected: FAIL + + [expression_should_be_unknown: min-device-height <= -0] + expected: FAIL + + [expression_should_be_parseable: max-device-height <= -0] + expected: FAIL + + [expression_should_be_unknown: max-device-height <= -0] + expected: FAIL + + [expression_should_be_parseable: device-height < = 0px] + expected: FAIL + + [expression_should_be_unknown: device-height < = 0px] + expected: FAIL + + [expression_should_be_parseable: device-height <= -1px] + expected: FAIL + + [expression_should_be_unknown: device-height <= -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-height <= -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-height <= -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-height <= -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-height <= -1px] + expected: FAIL + + [expression_should_be_parseable: device-height <= -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-height <= -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-height <= -100000em] + expected: FAIL + + [expression_should_be_unknown: device-height <= -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px <= device-height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= device-height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= device-height > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= device-height > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= device-height >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= device-height >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px <= device-height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px <= device-height = 0px] + expected: FAIL + + [expression_should_be_parseable: min-device-height < -0] + expected: FAIL + + [expression_should_be_unknown: min-device-height < -0] + expected: FAIL + + [expression_should_be_parseable: max-device-height < -0] + expected: FAIL + + [expression_should_be_unknown: max-device-height < -0] + expected: FAIL + + [expression_should_be_parseable: device-height < -1px] + expected: FAIL + + [expression_should_be_unknown: device-height < -1px] + expected: FAIL + + [expression_should_be_parseable: min-device-height < -1px] + expected: FAIL + + [expression_should_be_unknown: min-device-height < -1px] + expected: FAIL + + [expression_should_be_parseable: max-device-height < -1px] + expected: FAIL + + [expression_should_be_unknown: max-device-height < -1px] + expected: FAIL + + [expression_should_be_parseable: device-height < -0.00001mm] + expected: FAIL + + [expression_should_be_unknown: device-height < -0.00001mm] + expected: FAIL + + [expression_should_be_parseable: device-height < -100000em] + expected: FAIL + + [expression_should_be_unknown: device-height < -100000em] + expected: FAIL + + [expression_should_be_parseable: 0px < device-height : 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < device-height : 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < device-height > 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < device-height > 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < device-height >= 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < device-height >= 0px] + expected: FAIL + + [expression_should_be_parseable: 0px < device-height = 0px] + expected: FAIL + + [expression_should_be_unknown: 0px < device-height = 0px] + expected: FAIL + + [should_not_apply: (0px < width < ${value}px)] + expected: FAIL + + [should_not_apply: (${value}px > width > 0px)] + expected: FAIL + + [should_not_apply: (${value - 1}px > width)] + expected: FAIL + + [should_not_apply: (${value - 1}px >= width)] + expected: FAIL + + [should_not_apply: (${value}px > width > ${value - 1}px)] + expected: FAIL + + [should_not_apply: (${value + 1}px > width > ${value}px)] + expected: FAIL + + [should_not_apply: (0px < height < ${value}px)] + expected: FAIL + + [should_not_apply: (${value}px > height > 0px)] + expected: FAIL + + [should_not_apply: (${value - 1}px > height)] + expected: FAIL + + [should_not_apply: (${value - 1}px >= height)] + expected: FAIL + + [should_not_apply: (${value}px > height > ${value - 1}px)] + expected: FAIL + + [should_not_apply: (${value + 1}px > height > ${value}px)] + expected: FAIL + + [should_not_apply: (0px < device-width < ${value}px)] + expected: FAIL + + [should_not_apply: (${value}px > device-width > 0px)] + expected: FAIL + + [should_not_apply: (${value - 1}px > device-width)] + expected: FAIL + + [should_not_apply: (${value - 1}px >= device-width)] + expected: FAIL + + [should_not_apply: (${value}px > device-width > ${value - 1}px)] + expected: FAIL + + [should_not_apply: (${value + 1}px > device-width > ${value}px)] + expected: FAIL + + [should_not_apply: (0px < device-height < ${value}px)] + expected: FAIL + + [should_not_apply: (${value}px > device-height > 0px)] + expected: FAIL + + [should_not_apply: (${value - 1}px > device-height)] + expected: FAIL + + [should_not_apply: (${value - 1}px >= device-height)] + expected: FAIL + + [should_not_apply: (${value}px > device-height > ${value - 1}px)] + expected: FAIL + + [should_not_apply: (${value + 1}px > device-height > ${value}px)] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_parseable: min-orientation] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_unknown: min-orientation] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_parseable: min-orientation: portrait] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_unknown: min-orientation: portrait] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_parseable: min-orientation: landscape] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_unknown: min-orientation: landscape] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_parseable: max-orientation] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_unknown: max-orientation] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_parseable: max-orientation: portrait] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_unknown: max-orientation: portrait] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_parseable: max-orientation: landscape] + expected: FAIL + + [ratio that reduces to 59/40: expression_should_be_unknown: max-orientation: landscape] + expected: FAIL + + [expression_should_be_parseable: min-aspect-ratio] + expected: FAIL + + [expression_should_be_unknown: min-aspect-ratio] + expected: FAIL + + [expression_should_be_parseable: max-aspect-ratio] + expected: FAIL + + [expression_should_be_unknown: max-aspect-ratio] + expected: FAIL + + [expression_should_be_parseable: min-device-aspect-ratio] + expected: FAIL + + [expression_should_be_unknown: min-device-aspect-ratio] + expected: FAIL + + [expression_should_be_parseable: max-device-aspect-ratio] + expected: FAIL + + [expression_should_be_unknown: max-device-aspect-ratio] + expected: FAIL + + [expression_should_be_parseable: max-aspect-ratio: -1/1] + expected: FAIL + + [expression_should_be_unknown: max-aspect-ratio: -1/1] + expected: FAIL + + [expression_should_be_parseable: max-aspect-ratio: 1/-1] + expected: FAIL + + [expression_should_be_unknown: max-aspect-ratio: 1/-1] + expected: FAIL + + [expression_should_be_parseable: max-aspect-ratio: -1/-1] + expected: FAIL + + [expression_should_be_unknown: max-aspect-ratio: -1/-1] + expected: FAIL + + [expression_should_be_parseable: max-aspect-ratio: invalid] + expected: FAIL + + [expression_should_be_unknown: max-aspect-ratio: invalid] + expected: FAIL + + [expression_should_be_parseable: max-aspect-ratio: 1 / invalid] + expected: FAIL + + [expression_should_be_unknown: max-aspect-ratio: 1 / invalid] + expected: FAIL + + [expression_should_be_parseable: max-aspect-ratio: 1 invalid] + expected: FAIL + + [expression_should_be_unknown: max-aspect-ratio: 1 invalid] + expected: FAIL + + [expression_should_be_parseable: device-aspect-ratio: -1/1] + expected: FAIL + + [expression_should_be_unknown: device-aspect-ratio: -1/1] + expected: FAIL + + [expression_should_be_parseable: device-aspect-ratio: 1/-1] + expected: FAIL + + [expression_should_be_unknown: device-aspect-ratio: 1/-1] + expected: FAIL + + [expression_should_be_parseable: device-aspect-ratio: -1/-1] + expected: FAIL + + [expression_should_be_unknown: device-aspect-ratio: -1/-1] + expected: FAIL + + [expression_should_be_parseable: device-aspect-ratio: invalid] + expected: FAIL + + [expression_should_be_unknown: device-aspect-ratio: invalid] + expected: FAIL + + [expression_should_be_parseable: device-aspect-ratio: 1 / invalid] + expected: FAIL + + [expression_should_be_unknown: device-aspect-ratio: 1 / invalid] + expected: FAIL + + [expression_should_be_parseable: device-aspect-ratio: 1 invalid] + expected: FAIL + + [expression_should_be_unknown: device-aspect-ratio: 1 invalid] + expected: FAIL + + [expression_should_be_parseable: max-color] + expected: FAIL + + [expression_should_be_unknown: max-color] + expected: FAIL + + [expression_should_be_parseable: min-color] + expected: FAIL + + [expression_should_be_unknown: min-color] + expected: FAIL + + [expression_should_be_parseable: max-monochrome] + expected: FAIL + + [expression_should_be_unknown: max-monochrome] + expected: FAIL + + [expression_should_be_parseable: min-monochrome] + expected: FAIL + + [expression_should_be_unknown: min-monochrome] + expected: FAIL + + [expression_should_be_parseable: color: 1.0] + expected: FAIL + + [expression_should_be_unknown: color: 1.0] + expected: FAIL + + [expression_should_be_parseable: color: -1] + expected: FAIL + + [expression_should_be_unknown: color: -1] + expected: FAIL + + [expression_should_be_parseable: color: 1/1] + expected: FAIL + + [expression_should_be_unknown: color: 1/1] + expected: FAIL + + [expression_should_be_parseable: min-monochrome: 1.0] + expected: FAIL + + [expression_should_be_unknown: min-monochrome: 1.0] + expected: FAIL + + [expression_should_be_parseable: min-monochrome: -1] + expected: FAIL + + [expression_should_be_unknown: min-monochrome: -1] + expected: FAIL + + [expression_should_be_parseable: min-monochrome: 1/1] + expected: FAIL + + [expression_should_be_unknown: min-monochrome: 1/1] + expected: FAIL + + [expression_should_be_parseable: max-color-index: 1.0] + expected: FAIL + + [expression_should_be_unknown: max-color-index: 1.0] + expected: FAIL + + [expression_should_be_parseable: max-color-index: -1] + expected: FAIL + + [expression_should_be_unknown: max-color-index: -1] + expected: FAIL + + [expression_should_be_parseable: max-color-index: 1/1] + expected: FAIL + + [expression_should_be_unknown: max-color-index: 1/1] + expected: FAIL + + [expression_should_be_parseable: resolution: 0dpi] + expected: FAIL + + [expression_should_be_unknown: resolution: 0dpi] + expected: FAIL + + [expression_should_be_parseable: resolution: -3dpi] + expected: FAIL + + [expression_should_be_unknown: resolution: -3dpi] + expected: FAIL + + [expression_should_be_parseable: resolution: 0dppx] + expected: FAIL + + [expression_should_be_unknown: resolution: 0dppx] + expected: FAIL + + [expression_should_be_parseable: resolution: 0x] + expected: FAIL + + [expression_should_be_unknown: resolution: 0x] + expected: FAIL + + [expression_should_be_parseable: min-resolution: 0dpi] + expected: FAIL + + [expression_should_be_unknown: min-resolution: 0dpi] + expected: FAIL + + [expression_should_be_parseable: min-resolution: -3dpi] + expected: FAIL + + [expression_should_be_unknown: min-resolution: -3dpi] + expected: FAIL + + [expression_should_be_parseable: min-resolution: 0dppx] + expected: FAIL + + [expression_should_be_unknown: min-resolution: 0dppx] + expected: FAIL + + [expression_should_be_parseable: min-resolution: 0x] + expected: FAIL + + [expression_should_be_unknown: min-resolution: 0x] + expected: FAIL + + [expression_should_be_parseable: max-resolution: 0dpi] + expected: FAIL + + [expression_should_be_unknown: max-resolution: 0dpi] + expected: FAIL + + [expression_should_be_parseable: max-resolution: -3dpi] + expected: FAIL + + [expression_should_be_unknown: max-resolution: -3dpi] + expected: FAIL + + [expression_should_be_parseable: max-resolution: 0dppx] + expected: FAIL + + [expression_should_be_unknown: max-resolution: 0dppx] + expected: FAIL + + [expression_should_be_parseable: max-resolution: 0x] + expected: FAIL + + [expression_should_be_unknown: max-resolution: 0x] + expected: FAIL + + [expression_should_be_parseable: min-scan:interlace] + expected: FAIL + + [expression_should_be_unknown: min-scan:interlace] + expected: FAIL + + [expression_should_be_parseable: scan: 1] + expected: FAIL + + [expression_should_be_unknown: scan: 1] + expected: FAIL + + [expression_should_be_parseable: max-scan] + expected: FAIL + + [expression_should_be_unknown: max-scan] + expected: FAIL + + [expression_should_be_parseable: max-scan: progressive] + expected: FAIL + + [expression_should_be_unknown: max-scan: progressive] + expected: FAIL + + [expression_should_be_parseable: min-grid] + expected: FAIL + + [expression_should_be_unknown: min-grid] + expected: FAIL + + [expression_should_be_parseable: min-grid:0] + expected: FAIL + + [expression_should_be_unknown: min-grid:0] + expected: FAIL + + [expression_should_be_parseable: max-grid: 1] + expected: FAIL + + [expression_should_be_unknown: max-grid: 1] + expected: FAIL + + [expression_should_be_parseable: grid: 2] + expected: FAIL + + [expression_should_be_unknown: grid: 2] + expected: FAIL + + [expression_should_be_parseable: grid: -1] + expected: FAIL + + [expression_should_be_unknown: grid: -1] + expected: FAIL + + [expression_should_be_parseable: overflow-block: some-random-invalid-thing] + expected: FAIL + + [expression_should_be_unknown: overflow-block: some-random-invalid-thing] + expected: FAIL + + [expression_should_be_parseable: overflow-inline: some-random-invalid-thing] + expected: FAIL + + [expression_should_be_unknown: overflow-inline: some-random-invalid-thing] + expected: FAIL + + [expression_should_be_parseable: update: some-random-invalid-thing] + expected: FAIL + + [expression_should_be_unknown: update: some-random-invalid-thing] + expected: FAIL + + [Sanity check for update] + expected: FAIL + + ['or' keyword: should_not_apply: (height) or (height)] + expected: FAIL + + [nesting: should_not_apply: ((height))] + expected: FAIL + + ['not' keyword: should_not_apply: not (width)] + expected: FAIL + + ['not' keyword: should_not_apply: not ((width) or (height))] + expected: FAIL + + ['not' keyword: should_not_apply: not ((width) and (not (height)))] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/has-argument-with-explicit-scope.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/has-argument-with-explicit-scope.html.ini new file mode 100644 index 00000000000..d194a085f7f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/has-argument-with-explicit-scope.html.ini @@ -0,0 +1,2 @@ +[has-argument-with-explicit-scope.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/selectors/has-error-recovery.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/has-error-recovery.html.ini new file mode 100644 index 00000000000..10b087188e3 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/has-error-recovery.html.ini @@ -0,0 +1,3 @@ +[has-error-recovery.html] + [CSS Selectors: :has() error recovery] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/has-specificity.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/has-specificity.html.ini index 3f5ac3c6008..890b698b1b3 100644 --- a/tests/wpt/metadata-layout-2020/css/selectors/has-specificity.html.ini +++ b/tests/wpt/metadata-layout-2020/css/selectors/has-specificity.html.ini @@ -16,3 +16,9 @@ [:has(span, li, p) wins over :has(span, lo, p)] expected: FAIL + + [latter .baz wins over :has(.foo)] + expected: FAIL + + [latter :has(.foo) wins over .baz] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html.ini new file mode 100644 index 00000000000..285388ec4ff --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html.ini @@ -0,0 +1,19 @@ +[child-indexed-pseudo-classes-in-has.html] + expected: ERROR + [Initial colors: #only_child] + expected: FAIL + + [Initial colors: #first_child] + expected: FAIL + + [Initial colors: #last_child] + expected: FAIL + + [Initial colors: #nth_child_3n_1] + expected: FAIL + + [Initial colors: #nth_child_3n_2] + expected: FAIL + + [Initial colors: #nth_child_3n] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/empty-pseudo-in-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/empty-pseudo-in-has.html.ini new file mode 100644 index 00000000000..635f2e4f227 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/empty-pseudo-in-has.html.ini @@ -0,0 +1,4 @@ +[empty-pseudo-in-has.html] + expected: ERROR + [Empty #subject] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html.ini new file mode 100644 index 00000000000..9967405d400 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html.ini @@ -0,0 +1,2 @@ +[has-invalidation-after-removing-non-first-element.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html.ini new file mode 100644 index 00000000000..e5dac71de8e --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html.ini @@ -0,0 +1,2 @@ +[has-invalidation-for-wiping-an-element.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/has-with-not.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/has-with-not.html.ini new file mode 100644 index 00000000000..5be88b882c6 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/has-with-not.html.ini @@ -0,0 +1,4 @@ +[has-with-not.html] + expected: ERROR + [Initial color] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/host-pseudo-class-in-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/host-pseudo-class-in-has.html.ini new file mode 100644 index 00000000000..299f3de8b3a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/host-pseudo-class-in-has.html.ini @@ -0,0 +1,2 @@ +[host-pseudo-class-in-has.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/input-pseudo-classes-in-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/input-pseudo-classes-in-has.html.ini new file mode 100644 index 00000000000..bf3da3b2871 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/input-pseudo-classes-in-has.html.ini @@ -0,0 +1,28 @@ +[input-pseudo-classes-in-has.html] + expected: ERROR + [:checked & :indeterminate invalidation on ] + expected: FAIL + + [:indeterminate invalidation on ] + expected: NOTRUN + + [:disabled invalidation] + expected: NOTRUN + + [:read-only invalidation] + expected: NOTRUN + + [:valid invalidation] + expected: NOTRUN + + [:default invalidation with input[type=radio\]] + expected: NOTRUN + + [:required invalidation] + expected: NOTRUN + + [:out-of-range invalidation] + expected: NOTRUN + + [:placeholder-shown invalidation] + expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html.ini new file mode 100644 index 00000000000..cd64a69752c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html.ini @@ -0,0 +1,2 @@ +[is-pseudo-containing-complex-in-has.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/link-pseudo-in-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/link-pseudo-in-has.html.ini new file mode 100644 index 00000000000..ff826d6f858 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/link-pseudo-in-has.html.ini @@ -0,0 +1,3 @@ +[link-pseudo-in-has.html] + [CSS Selectors Invalidation: :link, :visited :any-link, pseudo-class in :has() argument] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/modal-pseudo-class-in-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/modal-pseudo-class-in-has.html.ini new file mode 100644 index 00000000000..26a2bc49a56 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/modal-pseudo-class-in-has.html.ini @@ -0,0 +1,9 @@ +[modal-pseudo-class-in-has.html] + [:modal pseudo-class is not active with dialog.show()] + expected: FAIL + + [:modal pseudo-class invalidation with showModal+close] + expected: FAIL + + [:modal pseudo-class invalidation with showModal+remove] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html.ini new file mode 100644 index 00000000000..c585ab8c220 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html.ini @@ -0,0 +1,2 @@ +[not-pseudo-containing-complex-in-has.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/subject-has-invalidation-with-display-none-anchor-element.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/subject-has-invalidation-with-display-none-anchor-element.html.ini new file mode 100644 index 00000000000..2287dcfb4b4 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/subject-has-invalidation-with-display-none-anchor-element.html.ini @@ -0,0 +1,3 @@ +[subject-has-invalidation-with-display-none-anchor-element.html] + [CSS Selectors Invalidation: subject :has() invalidation with display: none anchor element] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/target-pseudo-in-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/target-pseudo-in-has.html.ini new file mode 100644 index 00000000000..33ecce7e670 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/target-pseudo-in-has.html.ini @@ -0,0 +1,3 @@ +[target-pseudo-in-has.html] + [CSS Selectors Invalidation: :target pseudo-class in :has() argument] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html.ini new file mode 100644 index 00000000000..124d66b6cef --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html.ini @@ -0,0 +1,19 @@ +[typed-child-indexed-pseudo-classes-in-has.html] + expected: ERROR + [Initial colors: #only_of_type] + expected: FAIL + + [Initial colors: #first_of_type] + expected: FAIL + + [Initial colors: #last_of_type] + expected: FAIL + + [Initial colors: #nth_of_type_3n_1] + expected: FAIL + + [Initial colors: #nth_of_type_3n_2] + expected: FAIL + + [Initial colors: #nth_of_type_3n] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/media/media-loading-state.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/media/media-loading-state.html.ini new file mode 100644 index 00000000000..6a19b04ad24 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/media/media-loading-state.html.ini @@ -0,0 +1,10 @@ +[media-loading-state.html] + expected: TIMEOUT + [Test :pseudo-class syntax is supported without throwing a SyntaxError] + expected: FAIL + + [Test :stalled pseudo-class] + expected: TIMEOUT + + [Test :buffering pseudo-class] + expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/css/selectors/media/media-playback-state.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/media/media-playback-state.html.ini new file mode 100644 index 00000000000..5ece18229f8 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/media/media-playback-state.html.ini @@ -0,0 +1,12 @@ +[media-playback-state.html] + [Test :pseudo-class syntax is supported without throwing a SyntaxError] + expected: FAIL + + [Test :playing pseudo-classes] + expected: FAIL + + [Test :paused pseudo-classes] + expected: FAIL + + [Test :seeking pseudo-class] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/media/sound-state.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/media/sound-state.html.ini new file mode 100644 index 00000000000..e91a9529f4d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/media/sound-state.html.ini @@ -0,0 +1,6 @@ +[sound-state.html] + [Test :pseudo-class syntax is supported without throwing a SyntaxError] + expected: FAIL + + [Test :muted pseudo-class] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html.ini new file mode 100644 index 00000000000..6c939c14e4a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html.ini @@ -0,0 +1,9 @@ +[parse-has-disallow-nesting-has-inside-has.html] + [".a:has(.b:has(.c))" should be a valid selector] + expected: FAIL + + [".a:has(.b:has(.c), .d)" should be a valid selector] + expected: FAIL + + [".a:has(.b:is(.c:has(.d) .e))" should be a valid selector] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/selectors/parsing/parse-has.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/parsing/parse-has.html.ini index 8b290b33bf5..fbb5fb326f5 100644 --- a/tests/wpt/metadata-layout-2020/css/selectors/parsing/parse-has.html.ini +++ b/tests/wpt/metadata-layout-2020/css/selectors/parsing/parse-has.html.ini @@ -73,3 +73,6 @@ [":has(*|*)" should be a valid selector] expected: FAIL + + [".a:has()" should be a valid selector] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html.ini new file mode 100644 index 00000000000..42d3c4a7535 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html.ini @@ -0,0 +1,12 @@ +[CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html] + [connectedCallback] + expected: FAIL + + [attributeChangedCallback] + expected: FAIL + + [disconnectedCallback] + expected: FAIL + + [adoptedCallback] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/custom-elements/ElementInternals-accessibility.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/ElementInternals-accessibility.html.ini new file mode 100644 index 00000000000..8e624bced3f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/ElementInternals-accessibility.html.ini @@ -0,0 +1,2 @@ +[ElementInternals-accessibility.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html.ini new file mode 100644 index 00000000000..3d81bc9fd8e --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html.ini @@ -0,0 +1,3 @@ +[ElementInternals-target-element-is-held-strongly.html] + [Target element of ElementsInternals is held strongly and doesn't get GCed if there are no other references] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/custom-elements/reactions/Animation.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/reactions/Animation.html.ini new file mode 100644 index 00000000000..5d85e08ffce --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/reactions/Animation.html.ini @@ -0,0 +1,9 @@ +[Animation.html] + [Animation.animate must enqueue an attributeChanged reaction when it adds the observed style attribute] + expected: FAIL + + [Animation.animate must enqueue an attributeChanged reaction when it mutates the observed style attribute] + expected: FAIL + + [Animation.animate must not enqueue an attributeChanged reaction when it mutates the style attribute but the style attribute is not observed] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/custom-elements/reactions/AriaMixin-element-attributes.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/reactions/AriaMixin-element-attributes.html.ini new file mode 100644 index 00000000000..71839093669 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/reactions/AriaMixin-element-attributes.html.ini @@ -0,0 +1,48 @@ +[AriaMixin-element-attributes.html] + [ariaActiveDescendantElement in Element must enqueue an attributeChanged reaction when adding aria-activedescendant content attribute] + expected: FAIL + + [ariaActiveDescendantElement in Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaControlsElements in Element must enqueue an attributeChanged reaction when adding aria-controls content attribute] + expected: FAIL + + [ariaControlsElements in Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaDescribedByElements in Element must enqueue an attributeChanged reaction when adding aria-describedby content attribute] + expected: FAIL + + [ariaDescribedByElements in Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaDetailsElements in Element must enqueue an attributeChanged reaction when adding aria-details content attribute] + expected: FAIL + + [ariaDetailsElements in Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaErrorMessageElement in Element must enqueue an attributeChanged reaction when adding aria-errormessage content attribute] + expected: FAIL + + [ariaErrorMessageElement in Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaFlowToElements in Element must enqueue an attributeChanged reaction when adding aria-flowto content attribute] + expected: FAIL + + [ariaFlowToElements in Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaLabelledByElements in Element must enqueue an attributeChanged reaction when adding aria-labelledby content attribute] + expected: FAIL + + [ariaLabelledByElements in Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaOwnsElements in Element must enqueue an attributeChanged reaction when adding aria-owns content attribute] + expected: FAIL + + [ariaOwnsElements in Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/custom-elements/reactions/AriaMixin-string-attributes.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/reactions/AriaMixin-string-attributes.html.ini new file mode 100644 index 00000000000..388edda3974 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/reactions/AriaMixin-string-attributes.html.ini @@ -0,0 +1,228 @@ +[AriaMixin-string-attributes.html] + [ariaAtomic on Element must enqueue an attributeChanged reaction when adding aria-atomic content attribute] + expected: FAIL + + [ariaAtomic on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaAutoComplete on Element must enqueue an attributeChanged reaction when adding aria-autocomplete content attribute] + expected: FAIL + + [ariaAutoComplete on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaBusy on Element must enqueue an attributeChanged reaction when adding aria-busy content attribute] + expected: FAIL + + [ariaBusy on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaChecked on Element must enqueue an attributeChanged reaction when adding aria-checked content attribute] + expected: FAIL + + [ariaChecked on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaColCount on Element must enqueue an attributeChanged reaction when adding aria-colcount content attribute] + expected: FAIL + + [ariaColCount on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaColIndex on Element must enqueue an attributeChanged reaction when adding aria-colindex content attribute] + expected: FAIL + + [ariaColIndex on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaColSpan on Element must enqueue an attributeChanged reaction when adding aria-colspan content attribute] + expected: FAIL + + [ariaColSpan on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaCurrent on Element must enqueue an attributeChanged reaction when adding aria-current content attribute] + expected: FAIL + + [ariaCurrent on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaDisabled on Element must enqueue an attributeChanged reaction when adding aria-disabled content attribute] + expected: FAIL + + [ariaDisabled on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaExpanded on Element must enqueue an attributeChanged reaction when adding aria-expanded content attribute] + expected: FAIL + + [ariaExpanded on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaHasPopup on Element must enqueue an attributeChanged reaction when adding aria-haspopup content attribute] + expected: FAIL + + [ariaHasPopup on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaHidden on Element must enqueue an attributeChanged reaction when adding aria-hidden content attribute] + expected: FAIL + + [ariaHidden on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaInvalid on Element must enqueue an attributeChanged reaction when adding aria-invalid content attribute] + expected: FAIL + + [ariaInvalid on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaKeyShortcuts on Element must enqueue an attributeChanged reaction when adding aria-keyshortcuts content attribute] + expected: FAIL + + [ariaKeyShortcuts on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaLabel on Element must enqueue an attributeChanged reaction when adding aria-label content attribute] + expected: FAIL + + [ariaLabel on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaLevel on Element must enqueue an attributeChanged reaction when adding aria-level content attribute] + expected: FAIL + + [ariaLevel on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaLive on Element must enqueue an attributeChanged reaction when adding aria-live content attribute] + expected: FAIL + + [ariaLive on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaModal on Element must enqueue an attributeChanged reaction when adding aria-modal content attribute] + expected: FAIL + + [ariaModal on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaMultiLine on Element must enqueue an attributeChanged reaction when adding aria-multiline content attribute] + expected: FAIL + + [ariaMultiLine on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaMultiSelectable on Element must enqueue an attributeChanged reaction when adding aria-multiselectable content attribute] + expected: FAIL + + [ariaMultiSelectable on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaOrientation on Element must enqueue an attributeChanged reaction when adding aria-orientation content attribute] + expected: FAIL + + [ariaOrientation on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaPlaceholder on Element must enqueue an attributeChanged reaction when adding aria-placeholder content attribute] + expected: FAIL + + [ariaPlaceholder on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaPosInSet on Element must enqueue an attributeChanged reaction when adding aria-posinset content attribute] + expected: FAIL + + [ariaPosInSet on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaPressed on Element must enqueue an attributeChanged reaction when adding aria-pressed content attribute] + expected: FAIL + + [ariaPressed on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaReadOnly on Element must enqueue an attributeChanged reaction when adding aria-readonly content attribute] + expected: FAIL + + [ariaReadOnly on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaRelevant on Element must enqueue an attributeChanged reaction when adding aria-relevant content attribute] + expected: FAIL + + [ariaRelevant on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaRequired on Element must enqueue an attributeChanged reaction when adding aria-required content attribute] + expected: FAIL + + [ariaRequired on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaRoleDescription on Element must enqueue an attributeChanged reaction when adding aria-roledescription content attribute] + expected: FAIL + + [ariaRoleDescription on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaRowCount on Element must enqueue an attributeChanged reaction when adding aria-rowcount content attribute] + expected: FAIL + + [ariaRowCount on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaRowIndex on Element must enqueue an attributeChanged reaction when adding aria-rowindex content attribute] + expected: FAIL + + [ariaRowIndex on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaRowSpan on Element must enqueue an attributeChanged reaction when adding aria-rowspan content attribute] + expected: FAIL + + [ariaRowSpan on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaSelected on Element must enqueue an attributeChanged reaction when adding aria-selected content attribute] + expected: FAIL + + [ariaSelected on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaSetSize on Element must enqueue an attributeChanged reaction when adding aria-setsize content attribute] + expected: FAIL + + [ariaSetSize on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaSort on Element must enqueue an attributeChanged reaction when adding aria-sort content attribute] + expected: FAIL + + [ariaSort on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaValueMax on Element must enqueue an attributeChanged reaction when adding aria-valuemax content attribute] + expected: FAIL + + [ariaValueMax on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaValueMin on Element must enqueue an attributeChanged reaction when adding aria-valuemin content attribute] + expected: FAIL + + [ariaValueMin on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaValueNow on Element must enqueue an attributeChanged reaction when adding aria-valuenow content attribute] + expected: FAIL + + [ariaValueNow on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [ariaValueText on Element must enqueue an attributeChanged reaction when adding aria-valuetext content attribute] + expected: FAIL + + [ariaValueText on Element must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/custom-elements/scoped-registry/CustomElementRegistry-constructor.tentative.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/scoped-registry/CustomElementRegistry-constructor.tentative.html.ini new file mode 100644 index 00000000000..f72d15f7403 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/scoped-registry/CustomElementRegistry-constructor.tentative.html.ini @@ -0,0 +1,3 @@ +[CustomElementRegistry-constructor.tentative.html] + [Create non-global CustomElementRegistry and add definitions] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/custom-elements/scoped-registry/CustomElementRegistry-multi-register.tentative.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/scoped-registry/CustomElementRegistry-multi-register.tentative.html.ini new file mode 100644 index 00000000000..6823e0597a6 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/scoped-registry/CustomElementRegistry-multi-register.tentative.html.ini @@ -0,0 +1,6 @@ +[CustomElementRegistry-multi-register.tentative.html] + [Same constructor can be registered to different registries] + expected: FAIL + + [Non-global registries still reject duplicate registrations of the same constructor] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/custom-elements/scoped-registry/ShadowRoot-init-registry.tentative.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/scoped-registry/ShadowRoot-init-registry.tentative.html.ini new file mode 100644 index 00000000000..99a20188739 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/scoped-registry/ShadowRoot-init-registry.tentative.html.ini @@ -0,0 +1,15 @@ +[ShadowRoot-init-registry.tentative.html] + [ShadowRoot.registry is null if not explicitly specified] + expected: FAIL + + [Attach the global registry to a shadow root] + expected: FAIL + + [Attach a non-global registry to a shadow root] + expected: FAIL + + [Attach the same registry to multiple shadow roots] + expected: FAIL + + [Attaching registry to shadow root can only be done during initialization] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-xml-parser.xhtml.ini b/tests/wpt/metadata-layout-2020/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-xml-parser.xhtml.ini new file mode 100644 index 00000000000..f07bc554b65 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-xml-parser.xhtml.ini @@ -0,0 +1,2 @@ +[throw-on-dynamic-markup-insertion-counter-construct-xml-parser.xhtml] + expected: CRASH diff --git a/tests/wpt/metadata-layout-2020/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-xml-parser.xhtml.ini b/tests/wpt/metadata-layout-2020/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-xml-parser.xhtml.ini new file mode 100644 index 00000000000..beea8360fb4 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-xml-parser.xhtml.ini @@ -0,0 +1,2 @@ +[throw-on-dynamic-markup-insertion-counter-reactions-xml-parser.xhtml] + expected: CRASH diff --git a/tests/wpt/metadata-layout-2020/dom/abort/AbortSignal.any.js.ini b/tests/wpt/metadata-layout-2020/dom/abort/AbortSignal.any.js.ini index ae7bee6c251..477da6cc050 100644 --- a/tests/wpt/metadata-layout-2020/dom/abort/AbortSignal.any.js.ini +++ b/tests/wpt/metadata-layout-2020/dom/abort/AbortSignal.any.js.ini @@ -5,6 +5,15 @@ [signal returned by AbortSignal.abort() should not fire abort event] expected: FAIL + [AbortSignal.timeout() returns a non-aborted signal] + expected: FAIL + + [Signal returned by AbortSignal.timeout() times out] + expected: FAIL + + [AbortSignal timeouts fire in order] + expected: FAIL + [AbortSignal.any.worker.html] [the AbortSignal.abort() static returns an already aborted signal] @@ -12,3 +21,12 @@ [signal returned by AbortSignal.abort() should not fire abort event] expected: FAIL + + [AbortSignal.timeout() returns a non-aborted signal] + expected: FAIL + + [Signal returned by AbortSignal.timeout() times out] + expected: FAIL + + [AbortSignal timeouts fire in order] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/dom/abort/abort-signal-timeout.html.ini b/tests/wpt/metadata-layout-2020/dom/abort/abort-signal-timeout.html.ini new file mode 100644 index 00000000000..e6e26f36619 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/dom/abort/abort-signal-timeout.html.ini @@ -0,0 +1,3 @@ +[abort-signal-timeout.html] + [Signal returned by AbortSignal.timeout() is not aborted after frame detach] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/dom/events/AddEventListenerOptions-signal.any.js.ini b/tests/wpt/metadata-layout-2020/dom/events/AddEventListenerOptions-signal.any.js.ini index 14ae099376d..a21bffac131 100644 --- a/tests/wpt/metadata-layout-2020/dom/events/AddEventListenerOptions-signal.any.js.ini +++ b/tests/wpt/metadata-layout-2020/dom/events/AddEventListenerOptions-signal.any.js.ini @@ -29,6 +29,9 @@ [Passing null as the signal should throw] expected: FAIL + [Passing null as the signal should throw (listener is also null)] + expected: FAIL + [AddEventListenerOptions-signal.any.worker.html] [Passing an AbortSignal to addEventListener works with the once flag] @@ -60,3 +63,6 @@ [Passing null as the signal should throw] expected: FAIL + + [Passing null as the signal should throw (listener is also null)] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/dom/events/Body-FrameSet-Event-Handlers.html.ini b/tests/wpt/metadata-layout-2020/dom/events/Body-FrameSet-Event-Handlers.html.ini new file mode 100644 index 00000000000..26253dfd063 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/dom/events/Body-FrameSet-Event-Handlers.html.ini @@ -0,0 +1,42 @@ +[Body-FrameSet-Event-Handlers.html] + [Reflect HTMLBodyElement.onblur] + expected: FAIL + + [Forward HTMLBodyElement.onblur to Window] + expected: FAIL + + [Reflect HTMLFrameSetElement.onblur] + expected: FAIL + + [Forward HTMLFrameSetElement.onblur to Window] + expected: FAIL + + [Reflect HTMLFrameSetElement.onerror] + expected: FAIL + + [Forward HTMLFrameSetElement.onerror to Window] + expected: FAIL + + [Reflect HTMLFrameSetElement.onfocus] + expected: FAIL + + [Forward HTMLFrameSetElement.onfocus to Window] + expected: FAIL + + [Reflect HTMLFrameSetElement.onload] + expected: FAIL + + [Forward HTMLFrameSetElement.onload to Window] + expected: FAIL + + [Reflect HTMLFrameSetElement.onscroll] + expected: FAIL + + [Forward HTMLFrameSetElement.onscroll to Window] + expected: FAIL + + [Reflect HTMLFrameSetElement.onresize] + expected: FAIL + + [Forward HTMLFrameSetElement.onresize to Window] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/dom/events/mouse-event-retarget.html.ini b/tests/wpt/metadata-layout-2020/dom/events/mouse-event-retarget.html.ini new file mode 100644 index 00000000000..e351b77750b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/dom/events/mouse-event-retarget.html.ini @@ -0,0 +1,3 @@ +[mouse-event-retarget.html] + [offsetX is correctly adjusted] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/dom/events/non-cancelable-when-passive/synthetic-events-cancelable.html.ini b/tests/wpt/metadata-layout-2020/dom/events/non-cancelable-when-passive/synthetic-events-cancelable.html.ini new file mode 100644 index 00000000000..1b79490c83e --- /dev/null +++ b/tests/wpt/metadata-layout-2020/dom/events/non-cancelable-when-passive/synthetic-events-cancelable.html.ini @@ -0,0 +1,12 @@ +[synthetic-events-cancelable.html] + [Synthetic touchstart event with interface TouchEvent is not cancelable] + expected: FAIL + + [Synthetic touchmove event with interface TouchEvent is not cancelable] + expected: FAIL + + [Synthetic touchend event with interface TouchEvent is not cancelable] + expected: FAIL + + [Synthetic touchcancel event with interface TouchEvent is not cancelable] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/dom/events/passive-by-default.html.ini b/tests/wpt/metadata-layout-2020/dom/events/passive-by-default.html.ini new file mode 100644 index 00000000000..00cc677c111 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/dom/events/passive-by-default.html.ini @@ -0,0 +1,171 @@ +[passive-by-default.html] + [touchstart listener is passive by default for Window] + expected: FAIL + + [touchstart listener is passive with {passive:undefined} for Window] + expected: FAIL + + [touchstart listener is passive with {passive:true} for Window] + expected: FAIL + + [touchstart listener is passive by default for Document] + expected: FAIL + + [touchstart listener is passive with {passive:undefined} for Document] + expected: FAIL + + [touchstart listener is passive with {passive:true} for Document] + expected: FAIL + + [touchstart listener is passive by default for HTMLHtmlElement] + expected: FAIL + + [touchstart listener is passive with {passive:undefined} for HTMLHtmlElement] + expected: FAIL + + [touchstart listener is passive with {passive:true} for HTMLHtmlElement] + expected: FAIL + + [touchstart listener is passive by default for HTMLBodyElement] + expected: FAIL + + [touchstart listener is passive with {passive:undefined} for HTMLBodyElement] + expected: FAIL + + [touchstart listener is passive with {passive:true} for HTMLBodyElement] + expected: FAIL + + [touchstart listener is passive with {passive:true} for HTMLDivElement] + expected: FAIL + + [touchmove listener is passive by default for Window] + expected: FAIL + + [touchmove listener is passive with {passive:undefined} for Window] + expected: FAIL + + [touchmove listener is passive with {passive:true} for Window] + expected: FAIL + + [touchmove listener is passive by default for Document] + expected: FAIL + + [touchmove listener is passive with {passive:undefined} for Document] + expected: FAIL + + [touchmove listener is passive with {passive:true} for Document] + expected: FAIL + + [touchmove listener is passive by default for HTMLHtmlElement] + expected: FAIL + + [touchmove listener is passive with {passive:undefined} for HTMLHtmlElement] + expected: FAIL + + [touchmove listener is passive with {passive:true} for HTMLHtmlElement] + expected: FAIL + + [touchmove listener is passive by default for HTMLBodyElement] + expected: FAIL + + [touchmove listener is passive with {passive:undefined} for HTMLBodyElement] + expected: FAIL + + [touchmove listener is passive with {passive:true} for HTMLBodyElement] + expected: FAIL + + [touchmove listener is passive with {passive:true} for HTMLDivElement] + expected: FAIL + + [wheel listener is passive by default for Window] + expected: FAIL + + [wheel listener is passive with {passive:undefined} for Window] + expected: FAIL + + [wheel listener is passive with {passive:true} for Window] + expected: FAIL + + [wheel listener is passive by default for Document] + expected: FAIL + + [wheel listener is passive with {passive:undefined} for Document] + expected: FAIL + + [wheel listener is passive with {passive:true} for Document] + expected: FAIL + + [wheel listener is passive by default for HTMLHtmlElement] + expected: FAIL + + [wheel listener is passive with {passive:undefined} for HTMLHtmlElement] + expected: FAIL + + [wheel listener is passive with {passive:true} for HTMLHtmlElement] + expected: FAIL + + [wheel listener is passive by default for HTMLBodyElement] + expected: FAIL + + [wheel listener is passive with {passive:undefined} for HTMLBodyElement] + expected: FAIL + + [wheel listener is passive with {passive:true} for HTMLBodyElement] + expected: FAIL + + [wheel listener is passive with {passive:true} for HTMLDivElement] + expected: FAIL + + [mousewheel listener is passive by default for Window] + expected: FAIL + + [mousewheel listener is passive with {passive:undefined} for Window] + expected: FAIL + + [mousewheel listener is passive with {passive:true} for Window] + expected: FAIL + + [mousewheel listener is passive by default for Document] + expected: FAIL + + [mousewheel listener is passive with {passive:undefined} for Document] + expected: FAIL + + [mousewheel listener is passive with {passive:true} for Document] + expected: FAIL + + [mousewheel listener is passive by default for HTMLHtmlElement] + expected: FAIL + + [mousewheel listener is passive with {passive:undefined} for HTMLHtmlElement] + expected: FAIL + + [mousewheel listener is passive with {passive:true} for HTMLHtmlElement] + expected: FAIL + + [mousewheel listener is passive by default for HTMLBodyElement] + expected: FAIL + + [mousewheel listener is passive with {passive:undefined} for HTMLBodyElement] + expected: FAIL + + [mousewheel listener is passive with {passive:true} for HTMLBodyElement] + expected: FAIL + + [mousewheel listener is passive with {passive:true} for HTMLDivElement] + expected: FAIL + + [touchend listener is passive with {passive:true} for Window] + expected: FAIL + + [touchend listener is passive with {passive:true} for Document] + expected: FAIL + + [touchend listener is passive with {passive:true} for HTMLHtmlElement] + expected: FAIL + + [touchend listener is passive with {passive:true} for HTMLBodyElement] + expected: FAIL + + [touchend listener is passive with {passive:true} for HTMLDivElement] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/dom/idlharness-shadowrealm.window.js.ini b/tests/wpt/metadata-layout-2020/dom/idlharness-shadowrealm.window.js.ini new file mode 100644 index 00000000000..27b57a31bb5 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/dom/idlharness-shadowrealm.window.js.ini @@ -0,0 +1,2 @@ +[idlharness-shadowrealm.window.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/dom/idlharness.any.js.ini b/tests/wpt/metadata-layout-2020/dom/idlharness.any.js.ini index 578a6fb2592..e13cbc206f5 100644 --- a/tests/wpt/metadata-layout-2020/dom/idlharness.any.js.ini +++ b/tests/wpt/metadata-layout-2020/dom/idlharness.any.js.ini @@ -151,3 +151,12 @@ [AbortSignal interface: new AbortController().signal must inherit property "throwIfAborted()" with the proper type] expected: FAIL + + [AbortSignal interface: operation timeout(unsigned long long)] + expected: FAIL + + [AbortSignal interface: new AbortController().signal must inherit property "timeout(unsigned long long)" with the proper type] + expected: FAIL + + [AbortSignal interface: calling timeout(unsigned long long) on new AbortController().signal with too few arguments must throw TypeError] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/dom/idlharness.window.js.ini b/tests/wpt/metadata-layout-2020/dom/idlharness.window.js.ini index 13070c5ca34..669a4134fe3 100644 --- a/tests/wpt/metadata-layout-2020/dom/idlharness.window.js.ini +++ b/tests/wpt/metadata-layout-2020/dom/idlharness.window.js.ini @@ -1,4 +1,7 @@ [idlharness.window.html?include=Node] + [idl_test setup] + expected: FAIL + [idlharness.window.html?exclude=Node] [XPathExpression interface: document.createExpression("//*") must inherit property "evaluate(Node, optional unsigned short, optional XPathResult?)" with the proper type] @@ -732,3 +735,45 @@ [AbortSignal interface: new AbortController().signal must inherit property "throwIfAborted()" with the proper type] expected: FAIL + + [idl_test setup] + expected: FAIL + + [AbortSignal interface: operation timeout(unsigned long long)] + expected: FAIL + + [AbortSignal interface: new AbortController().signal must inherit property "timeout(unsigned long long)" with the proper type] + expected: FAIL + + [AbortSignal interface: calling timeout(unsigned long long) on new AbortController().signal with too few arguments must throw TypeError] + expected: FAIL + + [Document interface: attribute fullscreenEnabled] + expected: FAIL + + [Document interface: attribute fullscreen] + expected: FAIL + + [Document interface: operation exitFullscreen()] + expected: FAIL + + [Document interface: attribute fullscreenElement] + expected: FAIL + + [ShadowRoot interface: attribute fullscreenElement] + expected: FAIL + + [Element interface: operation requestFullscreen(optional FullscreenOptions)] + expected: FAIL + + [Element interface: attribute onfullscreenchange] + expected: FAIL + + [Element interface: attribute onfullscreenerror] + expected: FAIL + + [Element interface: element must inherit property "onfullscreenchange" with the proper type] + expected: FAIL + + [Element interface: element must inherit property "onfullscreenerror" with the proper type] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/dom/nodes/Document-createEvent-touchevent.window.js.ini b/tests/wpt/metadata-layout-2020/dom/nodes/Document-createEvent-touchevent.window.js.ini new file mode 100644 index 00000000000..41524332889 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/dom/nodes/Document-createEvent-touchevent.window.js.ini @@ -0,0 +1,9 @@ +[Document-createEvent-touchevent.window.html] + [document.createEvent('TouchEvent') should throw if 'expose legacy touch event APIs' is false] + expected: FAIL + + [document.createEvent('touchevent') should throw if 'expose legacy touch event APIs' is false] + expected: FAIL + + [document.createEvent('TOUCHEVENT') should throw if 'expose legacy touch event APIs' is false] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/dom/nodes/Document-createEvent.https.html.ini b/tests/wpt/metadata-layout-2020/dom/nodes/Document-createEvent.https.html.ini index 10ff562dd38..717d6d5da96 100644 --- a/tests/wpt/metadata-layout-2020/dom/nodes/Document-createEvent.https.html.ini +++ b/tests/wpt/metadata-layout-2020/dom/nodes/Document-createEvent.https.html.ini @@ -56,3 +56,20 @@ [DeviceMotionEvent should be an alias for DeviceMotionEvent.] expected: FAIL + [TouchEvent should be an alias for TouchEvent.] + expected: PRECONDITION_FAILED + + [createEvent('TouchEvent') should be initialized correctly.] + expected: PRECONDITION_FAILED + + [touchevent should be an alias for TouchEvent.] + expected: PRECONDITION_FAILED + + [createEvent('touchevent') should be initialized correctly.] + expected: PRECONDITION_FAILED + + [TOUCHEVENT should be an alias for TouchEvent.] + expected: PRECONDITION_FAILED + + [createEvent('TOUCHEVENT') should be initialized correctly.] + expected: PRECONDITION_FAILED diff --git a/tests/wpt/metadata-layout-2020/encoding/idlharness-shadowrealm.window.js.ini b/tests/wpt/metadata-layout-2020/encoding/idlharness-shadowrealm.window.js.ini new file mode 100644 index 00000000000..27b57a31bb5 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/encoding/idlharness-shadowrealm.window.js.ini @@ -0,0 +1,2 @@ +[idlharness-shadowrealm.window.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/encoding/unsupported-labels.window.js.ini b/tests/wpt/metadata-layout-2020/encoding/unsupported-labels.window.js.ini new file mode 100644 index 00000000000..2298d463d44 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/encoding/unsupported-labels.window.js.ini @@ -0,0 +1,2 @@ +[unsupported-labels.window.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/fetch/api/abort/general.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/abort/general.any.js.ini index 675ae684a9d..a15d01c1f53 100644 --- a/tests/wpt/metadata-layout-2020/fetch/api/abort/general.any.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/api/abort/general.any.js.ini @@ -152,6 +152,12 @@ [Clone aborts with original controller] expected: FAIL + [Aborting rejects with abort reason] + expected: FAIL + + [Signal on request object should also have abort reason] + expected: FAIL + [general.any.worker.html] [Aborting rejects with AbortError] @@ -300,3 +306,9 @@ [Clone aborts with original controller] expected: FAIL + + [Aborting rejects with abort reason] + expected: FAIL + + [Signal on request object should also have abort reason] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/api/abort/request.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/abort/request.any.js.ini new file mode 100644 index 00000000000..a39255f79d7 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/api/abort/request.any.js.ini @@ -0,0 +1,116 @@ +[request.any.html] + [Calling arrayBuffer() on an aborted request] + expected: FAIL + + [Aborting a request after calling arrayBuffer()] + expected: FAIL + + [Calling arrayBuffer() on an aborted consumed empty request] + expected: FAIL + + [Calling arrayBuffer() on an aborted consumed nonempty request] + expected: FAIL + + [Calling blob() on an aborted request] + expected: FAIL + + [Aborting a request after calling blob()] + expected: FAIL + + [Calling blob() on an aborted consumed empty request] + expected: FAIL + + [Calling blob() on an aborted consumed nonempty request] + expected: FAIL + + [Calling formData() on an aborted request] + expected: FAIL + + [Aborting a request after calling formData()] + expected: FAIL + + [Calling formData() on an aborted consumed nonempty request] + expected: FAIL + + [Calling json() on an aborted request] + expected: FAIL + + [Aborting a request after calling json()] + expected: FAIL + + [Calling json() on an aborted consumed nonempty request] + expected: FAIL + + [Calling text() on an aborted request] + expected: FAIL + + [Aborting a request after calling text()] + expected: FAIL + + [Calling text() on an aborted consumed empty request] + expected: FAIL + + [Calling text() on an aborted consumed nonempty request] + expected: FAIL + + +[request.any.serviceworker.html] + expected: ERROR + +[request.any.sharedworker.html] + expected: ERROR + +[request.any.worker.html] + [Calling arrayBuffer() on an aborted request] + expected: FAIL + + [Aborting a request after calling arrayBuffer()] + expected: FAIL + + [Calling arrayBuffer() on an aborted consumed empty request] + expected: FAIL + + [Calling arrayBuffer() on an aborted consumed nonempty request] + expected: FAIL + + [Calling blob() on an aborted request] + expected: FAIL + + [Aborting a request after calling blob()] + expected: FAIL + + [Calling blob() on an aborted consumed empty request] + expected: FAIL + + [Calling blob() on an aborted consumed nonempty request] + expected: FAIL + + [Calling formData() on an aborted request] + expected: FAIL + + [Aborting a request after calling formData()] + expected: FAIL + + [Calling formData() on an aborted consumed nonempty request] + expected: FAIL + + [Calling json() on an aborted request] + expected: FAIL + + [Aborting a request after calling json()] + expected: FAIL + + [Calling json() on an aborted consumed nonempty request] + expected: FAIL + + [Calling text() on an aborted request] + expected: FAIL + + [Aborting a request after calling text()] + expected: FAIL + + [Calling text() on an aborted consumed empty request] + expected: FAIL + + [Calling text() on an aborted consumed nonempty request] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/api/abort/serviceworker-intercepted.https.html.ini b/tests/wpt/metadata-layout-2020/fetch/api/abort/serviceworker-intercepted.https.html.ini new file mode 100644 index 00000000000..d07e3ece15b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/api/abort/serviceworker-intercepted.https.html.ini @@ -0,0 +1,33 @@ +[serviceworker-intercepted.https.html] + [Already aborted request does not land in service worker] + expected: FAIL + + [response.arrayBuffer() rejects if already aborted] + expected: FAIL + + [response.blob() rejects if already aborted] + expected: FAIL + + [response.formData() rejects if already aborted] + expected: FAIL + + [response.json() rejects if already aborted] + expected: FAIL + + [response.text() rejects if already aborted] + expected: FAIL + + [Stream errors once aborted.] + expected: FAIL + + [fetch() rejects with abort reason] + expected: FAIL + + [fetch() response body has abort reason] + expected: FAIL + + [Service Worker can observe the fetch abort and associated abort reason] + expected: FAIL + + [Abort reason serialization happens on abort] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/api/basic/request-forbidden-headers.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/basic/request-forbidden-headers.any.js.ini index a9ff4607c7a..973396c60cd 100644 --- a/tests/wpt/metadata-layout-2020/fetch/api/basic/request-forbidden-headers.any.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/api/basic/request-forbidden-headers.any.js.ini @@ -1,9 +1,261 @@ [request-forbidden-headers.any.worker.html] + [header x-http-method-override is forbidden to use value TRACE] + expected: FAIL + + [header x-http-method is forbidden to use value TRACE] + expected: FAIL + + [header x-method-override is forbidden to use value TRACE] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACE] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value TRACE] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value TRACE] + expected: FAIL + + [header x-http-method-override is forbidden to use value TRACK] + expected: FAIL + + [header x-http-method is forbidden to use value TRACK] + expected: FAIL + + [header x-method-override is forbidden to use value TRACK] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACK] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value TRACK] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value TRACK] + expected: FAIL + + [header x-http-method-override is forbidden to use value CONNECT] + expected: FAIL + + [header x-http-method is forbidden to use value CONNECT] + expected: FAIL + + [header x-method-override is forbidden to use value CONNECT] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value CONNECT] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value CONNECT] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value CONNECT] + expected: FAIL + + [header x-http-method-override is forbidden to use value trace] + expected: FAIL + + [header x-http-method is forbidden to use value trace] + expected: FAIL + + [header x-method-override is forbidden to use value trace] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value trace] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value trace] + expected: FAIL + + [header x-http-method-override is forbidden to use value track] + expected: FAIL + + [header x-http-method is forbidden to use value track] + expected: FAIL + + [header x-method-override is forbidden to use value track] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value track] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value track] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value track] + expected: FAIL + + [header x-http-method-override is forbidden to use value connect] + expected: FAIL + + [header x-http-method is forbidden to use value connect] + expected: FAIL + + [header x-method-override is forbidden to use value connect] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value connect] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value connect] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value connect] + expected: FAIL + + [header x-http-method-override is forbidden to use value trace,] + expected: FAIL + + [header x-http-method is forbidden to use value trace,] + expected: FAIL + + [header x-method-override is forbidden to use value trace,] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace,] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value trace,] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value trace,] + expected: FAIL + [request-forbidden-headers.any.sharedworker.html] expected: ERROR [request-forbidden-headers.any.html] + [header x-http-method-override is forbidden to use value TRACE] + expected: FAIL + + [header x-http-method is forbidden to use value TRACE] + expected: FAIL + + [header x-method-override is forbidden to use value TRACE] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACE] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value TRACE] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value TRACE] + expected: FAIL + + [header x-http-method-override is forbidden to use value TRACK] + expected: FAIL + + [header x-http-method is forbidden to use value TRACK] + expected: FAIL + + [header x-method-override is forbidden to use value TRACK] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACK] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value TRACK] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value TRACK] + expected: FAIL + + [header x-http-method-override is forbidden to use value CONNECT] + expected: FAIL + + [header x-http-method is forbidden to use value CONNECT] + expected: FAIL + + [header x-method-override is forbidden to use value CONNECT] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value CONNECT] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value CONNECT] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value CONNECT] + expected: FAIL + + [header x-http-method-override is forbidden to use value trace] + expected: FAIL + + [header x-http-method is forbidden to use value trace] + expected: FAIL + + [header x-method-override is forbidden to use value trace] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value trace] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value trace] + expected: FAIL + + [header x-http-method-override is forbidden to use value track] + expected: FAIL + + [header x-http-method is forbidden to use value track] + expected: FAIL + + [header x-method-override is forbidden to use value track] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value track] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value track] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value track] + expected: FAIL + + [header x-http-method-override is forbidden to use value connect] + expected: FAIL + + [header x-http-method is forbidden to use value connect] + expected: FAIL + + [header x-method-override is forbidden to use value connect] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value connect] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value connect] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value connect] + expected: FAIL + + [header x-http-method-override is forbidden to use value trace,] + expected: FAIL + + [header x-http-method is forbidden to use value trace,] + expected: FAIL + + [header x-method-override is forbidden to use value trace,] + expected: FAIL + + [header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace,] + expected: FAIL + + [header X-HTTP-METHOD is forbidden to use value trace,] + expected: FAIL + + [header X-METHOD-OVERRIDE is forbidden to use value trace,] + expected: FAIL + [request-forbidden-headers.any.serviceworker.html] expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/fetch/api/basic/request-upload.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/basic/request-upload.any.js.ini index 07f3df43f43..ac317cc0456 100644 --- a/tests/wpt/metadata-layout-2020/fetch/api/basic/request-upload.any.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/api/basic/request-upload.any.js.ini @@ -1,5 +1,4 @@ [request-upload.any.html] - expected: TIMEOUT [Fetch with POST with ReadableStream] expected: FAIL @@ -15,6 +14,9 @@ [Feature detect for POST with ReadableStream, using request object] expected: NOTRUN + [Streaming upload shouldn't work on Http/1.1.] + expected: FAIL + [request-upload.any.serviceworker.html] expected: ERROR @@ -23,7 +25,6 @@ expected: ERROR [request-upload.any.worker.html] - expected: TIMEOUT [Fetch with POST with ReadableStream] expected: FAIL @@ -38,3 +39,6 @@ [Feature detect for POST with ReadableStream, using request object] expected: NOTRUN + + [Streaming upload shouldn't work on Http/1.1.] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/api/basic/request-upload.h2.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/basic/request-upload.h2.any.js.ini index 9316558e0db..c35164d1bf9 100644 --- a/tests/wpt/metadata-layout-2020/fetch/api/basic/request-upload.h2.any.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/api/basic/request-upload.h2.any.js.ini @@ -12,6 +12,33 @@ [Fetch with POST with ReadableStream] expected: NOTRUN + [Fetch with POST with ReadableStream on 421 response should return the response and not retry.] + expected: NOTRUN + + [Feature detect for POST with ReadableStream] + expected: NOTRUN + + [Feature detect for POST with ReadableStream, using request object] + expected: NOTRUN + + [Synchronous feature detect] + expected: FAIL + + [Synchronous feature detect fails if feature unsupported] + expected: NOTRUN + + [Streaming upload with body containing a String] + expected: NOTRUN + + [Streaming upload with body containing null] + expected: NOTRUN + + [Streaming upload with body containing a number] + expected: NOTRUN + + [Streaming upload should fail on a 401 response] + expected: NOTRUN + [request-upload.h2.any.html] expected: TIMEOUT @@ -20,3 +47,30 @@ [Fetch with POST with ReadableStream] expected: NOTRUN + + [Fetch with POST with ReadableStream on 421 response should return the response and not retry.] + expected: NOTRUN + + [Feature detect for POST with ReadableStream] + expected: NOTRUN + + [Feature detect for POST with ReadableStream, using request object] + expected: NOTRUN + + [Synchronous feature detect] + expected: FAIL + + [Synchronous feature detect fails if feature unsupported] + expected: NOTRUN + + [Streaming upload with body containing a String] + expected: NOTRUN + + [Streaming upload with body containing null] + expected: NOTRUN + + [Streaming upload with body containing a number] + expected: NOTRUN + + [Streaming upload should fail on a 401 response] + expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/fetch/api/basic/response-null-body.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/basic/response-null-body.any.js.ini new file mode 100644 index 00000000000..4ae9625f4c6 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/api/basic/response-null-body.any.js.ini @@ -0,0 +1,69 @@ +[response-null-body.any.html] + [Response.body is null for responses with status=204 (method=GET)] + expected: FAIL + + [Response.body is null for responses with status=204 (method=POST)] + expected: FAIL + + [Response.body is null for responses with status=204 (method=OPTIONS)] + expected: FAIL + + [Response.body is null for responses with status=205 (method=GET)] + expected: FAIL + + [Response.body is null for responses with status=205 (method=POST)] + expected: FAIL + + [Response.body is null for responses with status=205 (method=OPTIONS)] + expected: FAIL + + [Response.body is null for responses with status=304 (method=GET)] + expected: FAIL + + [Response.body is null for responses with status=304 (method=POST)] + expected: FAIL + + [Response.body is null for responses with status=304 (method=OPTIONS)] + expected: FAIL + + [Response.body is null for responses with method=HEAD] + expected: FAIL + + +[response-null-body.any.worker.html] + [Response.body is null for responses with status=204 (method=GET)] + expected: FAIL + + [Response.body is null for responses with status=204 (method=POST)] + expected: FAIL + + [Response.body is null for responses with status=204 (method=OPTIONS)] + expected: FAIL + + [Response.body is null for responses with status=205 (method=GET)] + expected: FAIL + + [Response.body is null for responses with status=205 (method=POST)] + expected: FAIL + + [Response.body is null for responses with status=205 (method=OPTIONS)] + expected: FAIL + + [Response.body is null for responses with status=304 (method=GET)] + expected: FAIL + + [Response.body is null for responses with status=304 (method=POST)] + expected: FAIL + + [Response.body is null for responses with status=304 (method=OPTIONS)] + expected: FAIL + + [Response.body is null for responses with method=HEAD] + expected: FAIL + + +[response-null-body.any.serviceworker.html] + expected: ERROR + +[response-null-body.any.sharedworker.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/fetch/api/basic/scheme-blob.sub.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/basic/scheme-blob.sub.any.js.ini new file mode 100644 index 00000000000..1f763976c20 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/api/basic/scheme-blob.sub.any.js.ini @@ -0,0 +1,5 @@ +[scheme-blob.sub.any.worker.html] + expected: CRASH + +[scheme-blob.sub.any.html] + expected: CRASH diff --git a/tests/wpt/metadata-layout-2020/fetch/api/idlharness.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/idlharness.any.js.ini new file mode 100644 index 00000000000..57faeec7450 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/api/idlharness.any.js.ini @@ -0,0 +1,153 @@ +[idlharness.any.worker.html] + [Request interface: attribute keepalive] + expected: FAIL + + [Request interface: attribute isReloadNavigation] + expected: FAIL + + [Request interface: attribute isHistoryNavigation] + expected: FAIL + + [Request interface: attribute signal] + expected: FAIL + + [Request interface: attribute duplex] + expected: FAIL + + [Request interface: operation arrayBuffer()] + expected: FAIL + + [Request interface: operation blob()] + expected: FAIL + + [Request interface: operation formData()] + expected: FAIL + + [Request interface: operation json()] + expected: FAIL + + [Request interface: operation text()] + expected: FAIL + + [Request interface: new Request('about:blank') must inherit property "keepalive" with the proper type] + expected: FAIL + + [Request interface: new Request('about:blank') must inherit property "isReloadNavigation" with the proper type] + expected: FAIL + + [Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type] + expected: FAIL + + [Request interface: new Request('about:blank') must inherit property "signal" with the proper type] + expected: FAIL + + [Request interface: new Request('about:blank') must inherit property "duplex" with the proper type] + expected: FAIL + + [Response interface: operation json(any, optional ResponseInit)] + expected: FAIL + + [Response interface: operation arrayBuffer()] + expected: FAIL + + [Response interface: operation blob()] + expected: FAIL + + [Response interface: operation formData()] + expected: FAIL + + [Response interface: operation json()] + expected: FAIL + + [Response interface: operation text()] + expected: FAIL + + [Response interface: calling json(any, optional ResponseInit) on new Response() with too few arguments must throw TypeError] + expected: FAIL + + [WorkerGlobalScope interface: operation fetch(RequestInfo, optional RequestInit)] + expected: FAIL + + [WorkerGlobalScope interface: calling fetch(RequestInfo, optional RequestInit) on self with too few arguments must throw TypeError] + expected: FAIL + + +[idlharness.any.sharedworker.html] + expected: ERROR + +[idlharness.any.html] + [Request interface: attribute keepalive] + expected: FAIL + + [Request interface: attribute isReloadNavigation] + expected: FAIL + + [Request interface: attribute isHistoryNavigation] + expected: FAIL + + [Request interface: attribute signal] + expected: FAIL + + [Request interface: attribute duplex] + expected: FAIL + + [Request interface: operation arrayBuffer()] + expected: FAIL + + [Request interface: operation blob()] + expected: FAIL + + [Request interface: operation formData()] + expected: FAIL + + [Request interface: operation json()] + expected: FAIL + + [Request interface: operation text()] + expected: FAIL + + [Request interface: new Request('about:blank') must inherit property "keepalive" with the proper type] + expected: FAIL + + [Request interface: new Request('about:blank') must inherit property "isReloadNavigation" with the proper type] + expected: FAIL + + [Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type] + expected: FAIL + + [Request interface: new Request('about:blank') must inherit property "signal" with the proper type] + expected: FAIL + + [Request interface: new Request('about:blank') must inherit property "duplex" with the proper type] + expected: FAIL + + [Response interface: operation json(any, optional ResponseInit)] + expected: FAIL + + [Response interface: operation arrayBuffer()] + expected: FAIL + + [Response interface: operation blob()] + expected: FAIL + + [Response interface: operation formData()] + expected: FAIL + + [Response interface: operation json()] + expected: FAIL + + [Response interface: operation text()] + expected: FAIL + + [Response interface: calling json(any, optional ResponseInit) on new Response() with too few arguments must throw TypeError] + expected: FAIL + + [Window interface: operation fetch(RequestInfo, optional RequestInit)] + expected: FAIL + + [Window interface: calling fetch(RequestInfo, optional RequestInit) on window with too few arguments must throw TypeError] + expected: FAIL + + +[idlharness.any.serviceworker.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/fetch/api/request/request-headers.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/request/request-headers.any.js.ini index 65b2342a0ca..e0dc09a3cf1 100644 --- a/tests/wpt/metadata-layout-2020/fetch/api/request/request-headers.any.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/api/request/request-headers.any.js.ini @@ -1,6 +1,12 @@ [request-headers.any.html] + [Adding invalid request header "Set-Cookie: KO"] + expected: FAIL + [request-headers.any.worker.html] + [Adding invalid request header "Set-Cookie: KO"] + expected: FAIL + [request-headers.any.serviceworker.html] expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/fetch/api/request/request-init-stream.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/request/request-init-stream.any.js.ini new file mode 100644 index 00000000000..45b3690b4b5 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/api/request/request-init-stream.any.js.ini @@ -0,0 +1,63 @@ +[request-init-stream.any.sharedworker.html] + expected: ERROR + +[request-init-stream.any.worker.html] + [Constructing a Request with a Request on which body.getReader() is called] + expected: FAIL + + [Constructing a Request with a Request on which body.getReader().read() is called] + expected: FAIL + + [Constructing a Request with a Request on which read() and releaseLock() are called] + expected: FAIL + + [It is error to omit .duplex when the body is a ReadableStream.] + expected: FAIL + + [It is error to set .duplex = 'full' when the body is null.] + expected: FAIL + + [It is error to set .duplex = 'full' when the body is a string.] + expected: FAIL + + [It is error to set .duplex = 'full' when the body is a Uint8Array.] + expected: FAIL + + [It is error to set .duplex = 'full' when the body is a Blob.] + expected: FAIL + + [It is error to set .duplex = 'full' when the body is a ReadableStream.] + expected: FAIL + + +[request-init-stream.any.html] + [Constructing a Request with a Request on which body.getReader() is called] + expected: FAIL + + [Constructing a Request with a Request on which body.getReader().read() is called] + expected: FAIL + + [Constructing a Request with a Request on which read() and releaseLock() are called] + expected: FAIL + + [It is error to omit .duplex when the body is a ReadableStream.] + expected: FAIL + + [It is error to set .duplex = 'full' when the body is null.] + expected: FAIL + + [It is error to set .duplex = 'full' when the body is a string.] + expected: FAIL + + [It is error to set .duplex = 'full' when the body is a Uint8Array.] + expected: FAIL + + [It is error to set .duplex = 'full' when the body is a Blob.] + expected: FAIL + + [It is error to set .duplex = 'full' when the body is a ReadableStream.] + expected: FAIL + + +[request-init-stream.any.serviceworker.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/fetch/api/request/request-structure.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/request/request-structure.any.js.ini index 4f79516d099..b1a3ce85531 100644 --- a/tests/wpt/metadata-layout-2020/fetch/api/request/request-structure.any.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/api/request/request-structure.any.js.ini @@ -5,6 +5,9 @@ [Check isHistoryNavigation attribute] expected: FAIL + [Check duplex attribute] + expected: FAIL + [request-structure.any.sharedworker.html] expected: ERROR @@ -16,6 +19,9 @@ [Check isHistoryNavigation attribute] expected: FAIL + [Check duplex attribute] + expected: FAIL + [request-structure.any.serviceworker.html] expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/fetch/api/response/response-static-json.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/response/response-static-json.any.js.ini new file mode 100644 index 00000000000..ed4bc41366a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/api/response/response-static-json.any.js.ini @@ -0,0 +1,57 @@ +[response-static-json.any.worker.html] + [Check response returned by static json() with init undefined] + expected: FAIL + + [Check response returned by static json() with init {"status":400}] + expected: FAIL + + [Check response returned by static json() with init {"statusText":"foo"}] + expected: FAIL + + [Check response returned by static json() with init {"headers":{}}] + expected: FAIL + + [Check response returned by static json() with init {"headers":{"content-type":"foo/bar"}}] + expected: FAIL + + [Check response returned by static json() with init {"headers":{"x-foo":"bar"}}] + expected: FAIL + + [Check static json() encodes JSON objects correctly] + expected: FAIL + + [Check static json() propagates JSON serializer errors] + expected: FAIL + + +[response-static-json.any.html] + [Check response returned by static json() with init undefined] + expected: FAIL + + [Check response returned by static json() with init {"status":400}] + expected: FAIL + + [Check response returned by static json() with init {"statusText":"foo"}] + expected: FAIL + + [Check response returned by static json() with init {"headers":{}}] + expected: FAIL + + [Check response returned by static json() with init {"headers":{"content-type":"foo/bar"}}] + expected: FAIL + + [Check response returned by static json() with init {"headers":{"x-foo":"bar"}}] + expected: FAIL + + [Check static json() encodes JSON objects correctly] + expected: FAIL + + [Check static json() propagates JSON serializer errors] + expected: FAIL + + +[response-static-json.any.sharedworker.html] + expected: ERROR + +[response-static-json.any.serviceworker.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/fetch/api/response/response-stream-bad-chunk.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/response/response-stream-bad-chunk.any.js.ini new file mode 100644 index 00000000000..d74b62617ec --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/api/response/response-stream-bad-chunk.any.js.ini @@ -0,0 +1,9 @@ +[response-stream-bad-chunk.any.sharedworker.html] + expected: ERROR + +[response-stream-bad-chunk.any.html] + +[response-stream-bad-chunk.any.worker.html] + +[response-stream-bad-chunk.any.serviceworker.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/fetch/content-length/parsing.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-length/parsing.window.js.ini index 8598271b5a9..959ec1fd02b 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-length/parsing.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-length/parsing.window.js.ini @@ -77,8 +77,5 @@ [Input: "Content-Length: ". Expected: 42.] expected: FAIL - [Input: "Content-Length: 42,42". Expected: 42.] - expected: FAIL - - [Input: "Content-Length: 30". Expected: 30.] + [Input: "Content-Length: 42\\r\\nContent-Length: 42,42". Expected: 42.] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/multipart.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/multipart.window.js.ini new file mode 100644 index 00000000000..2a95df3b9fd --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/multipart.window.js.ini @@ -0,0 +1,3 @@ +[multipart.window.html] + [Ensure capital letters can be used in the boundary value.] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini index 8edde75f4d0..a0bee01802c 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini @@ -308,3 +308,9 @@ [Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK] expected: NOTRUN + + [ + + diff --git a/tests/wpt/web-platform-tests/FileAPI/BlobURL/cross-partition.tentative.https.html b/tests/wpt/web-platform-tests/FileAPI/BlobURL/cross-partition.tentative.https.html new file mode 100644 index 00000000000..b6c3cae0904 --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/BlobURL/cross-partition.tentative.https.html @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/FileAPI/blob/Blob-stream.any.js b/tests/wpt/web-platform-tests/FileAPI/blob/Blob-stream.any.js index 792b6639c35..08cca8dbe68 100644 --- a/tests/wpt/web-platform-tests/FileAPI/blob/Blob-stream.any.js +++ b/tests/wpt/web-platform-tests/FileAPI/blob/Blob-stream.any.js @@ -7,8 +7,9 @@ // if perform_gc is true. async function read_and_gc(reader, perform_gc) { const read_promise = reader.read(); - if (perform_gc) - garbageCollect(); + if (perform_gc) { + await garbageCollect(); + } return read_promise; } @@ -65,7 +66,7 @@ promise_test(async() => { let blob = new Blob([typed_arr]); const stream = blob.stream(); blob = null; - garbageCollect(); + await garbageCollect(); const chunks = await read_all_chunks(stream, /*perform_gc=*/true); assert_array_equals(chunks, input_arr); }, "Blob.stream() garbage collection of blob shouldn't break stream" + diff --git a/tests/wpt/web-platform-tests/FileAPI/support/empty-document.html b/tests/wpt/web-platform-tests/FileAPI/support/empty-document.html new file mode 100644 index 00000000000..b9cd130a07f --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/support/empty-document.html @@ -0,0 +1,3 @@ + + + diff --git a/tests/wpt/web-platform-tests/FileAPI/url/cross-global-revoke.sub.html b/tests/wpt/web-platform-tests/FileAPI/url/cross-global-revoke.sub.html index 21b8c5bb198..ce9d680709e 100644 --- a/tests/wpt/web-platform-tests/FileAPI/url/cross-global-revoke.sub.html +++ b/tests/wpt/web-platform-tests/FileAPI/url/cross-global-revoke.sub.html @@ -2,6 +2,7 @@ + \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/FileAPI/url/url-format.any.js b/tests/wpt/web-platform-tests/FileAPI/url/url-format.any.js index 33732fa61fc..69c51113e6b 100644 --- a/tests/wpt/web-platform-tests/FileAPI/url/url-format.any.js +++ b/tests/wpt/web-platform-tests/FileAPI/url/url-format.any.js @@ -2,10 +2,16 @@ const blob = new Blob(['test']); const file = new File(['test'], 'name'); -test(() => { +test(t => { const url_count = 5000; let list = []; + t.add_cleanup(() => { + for (let url of list) { + URL.revokeObjectURL(url); + } + }); + for (let i = 0; i < url_count; ++i) list.push(URL.createObjectURL(blob)); diff --git a/tests/wpt/web-platform-tests/FileAPI/url/url-with-fetch.any.js b/tests/wpt/web-platform-tests/FileAPI/url/url-with-fetch.any.js index 9bd8d383df4..7f6ebed44b8 100644 --- a/tests/wpt/web-platform-tests/FileAPI/url/url-with-fetch.any.js +++ b/tests/wpt/web-platform-tests/FileAPI/url/url-with-fetch.any.js @@ -1,5 +1,26 @@ // META: script=resources/fetch-tests.js +async function garbageCollect() { + if (typeof TestUtils !== 'undefined' && TestUtils.gc) { + await TestUtils.gc(); + } else if (self.gc) { + await self.gc(); + } else if (self.GCController) { + // Present in some WebKit development environments + await GCController.collect(); + } else { + var gcRec = function (n) { + if (n < 1) + return {}; + var temp = {i: "ab" + i + (i / 100000)}; + temp += "foo"; + gcRec(n-1); + }; + for (var i = 0; i < 1000; i++) + gcRec(10); + } +} + function fetch_should_succeed(test, request) { return fetch(request).then(response => response.text()); } @@ -37,6 +58,24 @@ promise_test(t => { }); }, 'Revoke blob URL after creating Request, will fetch'); +promise_test(async t => { + const blob_contents = 'test blob contents'; + const blob = new Blob([blob_contents]); + const url = URL.createObjectURL(blob); + let request = new Request(url); + + // Revoke the object URL. Request should take a reference to the blob as + // soon as it receives it in open(), so the request succeeds even though we + // revoke the URL before calling fetch(). + URL.revokeObjectURL(url); + + request = request.clone(); + await garbageCollect(); + + const text = await fetch_should_succeed(t, request); + assert_equals(text, blob_contents); +}, 'Revoke blob URL after creating Request, then clone Request, will fetch'); + promise_test(function(t) { const blob_contents = 'test blob contents'; const blob = new Blob([blob_contents]); diff --git a/tests/wpt/web-platform-tests/IndexedDB/README.md b/tests/wpt/web-platform-tests/IndexedDB/README.md index 18f067b18b2..545f0bec6d9 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/README.md +++ b/tests/wpt/web-platform-tests/IndexedDB/README.md @@ -1,6 +1,6 @@ This directory contains the Indexed Database API test suite. -To run the tests in this test suite within a browser, go to: . +To run the tests in this test suite within a browser, go to: . The latest Editor's Draft of Indexed Database API is: . diff --git a/tests/wpt/web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded.html b/tests/wpt/web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded.html index 20040158e9c..e37056974fa 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded.html +++ b/tests/wpt/web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded.html @@ -3,7 +3,7 @@ Test that an abort in the initial upgradeneeded sets version back to 0 - + - + - + - + - + - + - + - + - + - + - + - + - +
@@ -28,7 +28,7 @@ async function assert_file_contents_equals(file1, file2) { promise_test(async (testCase) => { const input = document.getElementById("file_input"); - await test_driver.send_keys(input, String.raw`{{fs_path(file_to_save.txt)}}`); + await test_driver.send_keys(input, String.raw`{{fs_path(resources/file_to_save.txt)}}`); assert_equals(input.files.length, 1); const file = input.files[0]; diff --git a/tests/wpt/web-platform-tests/IndexedDB/fire-error-event-exception.html b/tests/wpt/web-platform-tests/IndexedDB/fire-error-event-exception.html index 0a3f1226589..f380e4081f1 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/fire-error-event-exception.html +++ b/tests/wpt/web-platform-tests/IndexedDB/fire-error-event-exception.html @@ -4,7 +4,7 @@ - + - + - + - + - + + + + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/idb-partitioned-coverage.tentative.sub.html b/tests/wpt/web-platform-tests/IndexedDB/idb-partitioned-coverage.tentative.sub.html new file mode 100644 index 00000000000..ae0884cb527 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idb-partitioned-coverage.tentative.sub.html @@ -0,0 +1,12 @@ + + +IndexedDB: partitioned storage test + + + + + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/idb-partitioned-persistence.tentative.sub.html b/tests/wpt/web-platform-tests/IndexedDB/idb-partitioned-persistence.tentative.sub.html new file mode 100644 index 00000000000..65a0a085e22 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idb-partitioned-persistence.tentative.sub.html @@ -0,0 +1,63 @@ + + +IndexedDB: partitioned storage test + + + + + + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/idb_webworkers.htm b/tests/wpt/web-platform-tests/IndexedDB/idb_webworkers.htm index 9c29d00b30e..5a061c26502 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/idb_webworkers.htm +++ b/tests/wpt/web-platform-tests/IndexedDB/idb_webworkers.htm @@ -3,7 +3,7 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
- +
- +
- +
- + - +
- +
- +
- +
- + - + - + - + - + - + - + - +
- +
- + - + - + - + - + - +
- +
- + - + - + - +
- +
- + - + - + - +
- +
- + - + - + - + - + - + - + - + - +
- +
- +
- +
- +
- + - + - + - + - +
- +
- +
- +
- +
- + - + - + - + - + - + - + - + - + - +
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html index 058116fac51..07143895374 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html +++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html @@ -17,34 +17,40 @@ function load_iframe(src, sandbox) { }); } -function wait_for_message(iframe) { +function wait_for_message(recipient, source) { return new Promise(resolve => { - self.addEventListener('message', function listener(e) { - if (e.source === iframe.contentWindow) { + recipient.onmessage = function listener(e) { + if (e.source === source) { resolve(e.data); - self.removeEventListener('message', listener); + recipient.removeEventListener('message', listener); } - }); - }); + }; + }) } -const script = - ' diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-request-success.html b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-request-success.html index a44c5c244dc..130c427a407 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-request-success.html +++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-request-success.html @@ -4,7 +4,7 @@ - + - + diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory-open-request-error.html b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-open-request-error.html index 5d69f57153f..cfd6862afa6 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/idbfactory-open-request-error.html +++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-open-request-error.html @@ -4,7 +4,7 @@ - + - + - - + + - + - +
- + - + - + - +
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open.htm b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open.htm index bca2cfdc801..8e0b2412c91 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open.htm +++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open.htm @@ -3,7 +3,7 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
- + - + - + - + - +
- +
- +
- +
- + - + - + - + - + - + - +
- +
- +
- +
- + - +
- +
- +
- +
- +
- +
- +
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
- +
- + - + - + - + - + - + - + - + - + - + - +
- +
- + - + - + - +
- + - +
- +
- +
- +
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
- +
- + - + - + - + - + - + - + - + - + - + - + - + - +
- +
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
diff --git a/tests/wpt/web-platform-tests/IndexedDB/index_sort_order.htm b/tests/wpt/web-platform-tests/IndexedDB/index_sort_order.htm index 6249c420489..2f6d474ea67 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/index_sort_order.htm +++ b/tests/wpt/web-platform-tests/IndexedDB/index_sort_order.htm @@ -4,7 +4,7 @@ - + - - + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/interleaved-cursors-small.html b/tests/wpt/web-platform-tests/IndexedDB/interleaved-cursors-small.html index a4c47771782..2751113f5f7 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/interleaved-cursors-small.html +++ b/tests/wpt/web-platform-tests/IndexedDB/interleaved-cursors-small.html @@ -5,8 +5,8 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + diff --git a/tests/wpt/web-platform-tests/IndexedDB/resources/idb-partitioned-coverage-iframe.tentative.html b/tests/wpt/web-platform-tests/IndexedDB/resources/idb-partitioned-coverage-iframe.tentative.html new file mode 100644 index 00000000000..a7be7e2cc94 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/resources/idb-partitioned-coverage-iframe.tentative.html @@ -0,0 +1,601 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/resources/idb-partitioned-persistence-iframe.tentative.html b/tests/wpt/web-platform-tests/IndexedDB/resources/idb-partitioned-persistence-iframe.tentative.html new file mode 100644 index 00000000000..ad6869f945a --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/resources/idb-partitioned-persistence-iframe.tentative.html @@ -0,0 +1,76 @@ + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/resources/idbfactory-origin-isolation-iframe.html b/tests/wpt/web-platform-tests/IndexedDB/resources/idbfactory-origin-isolation-iframe.html index d405ea48e15..0f16bcadaad 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/resources/idbfactory-origin-isolation-iframe.html +++ b/tests/wpt/web-platform-tests/IndexedDB/resources/idbfactory-origin-isolation-iframe.html @@ -40,7 +40,7 @@ async function run() { openRequest.result.createObjectStore('s'); }; openRequest.onsuccess = () => { - var tx = openRequest.result.transaction('s'); + var tx = openRequest.result.transaction('s', 'readonly', {durability: 'relaxed'}); keep_alive(tx, 's'); window.parent.postMessage("keep_alive_started", "*"); }; diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbworker.js b/tests/wpt/web-platform-tests/IndexedDB/resources/idbworker.js similarity index 87% rename from tests/wpt/web-platform-tests/IndexedDB/idbworker.js rename to tests/wpt/web-platform-tests/IndexedDB/resources/idbworker.js index 359f6fb6911..04a421fa38b 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/idbworker.js +++ b/tests/wpt/web-platform-tests/IndexedDB/resources/idbworker.js @@ -24,7 +24,7 @@ function MessageHandler(e) open_rq.onsuccess = function(e) { db = e.target.result db.onerror = function() { self.postMessage("db.error") } - db.transaction("store").objectStore("store").get(1).onsuccess = function(e) { + db.transaction("store", "readonly", {durability: 'relaxed'}).objectStore("store").get(1).onsuccess = function(e) { self.postMessage(e.target.result) db.close() } diff --git a/tests/wpt/web-platform-tests/IndexedDB/interleaved-cursors-common.js b/tests/wpt/web-platform-tests/IndexedDB/resources/interleaved-cursors-common.js similarity index 99% rename from tests/wpt/web-platform-tests/IndexedDB/interleaved-cursors-common.js rename to tests/wpt/web-platform-tests/IndexedDB/resources/interleaved-cursors-common.js index a76ec528c99..09ed078c1fc 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/interleaved-cursors-common.js +++ b/tests/wpt/web-platform-tests/IndexedDB/resources/interleaved-cursors-common.js @@ -53,7 +53,7 @@ function objectValue(cursorIndex, itemIndex) { // objects that will be read by a cursor. function writeCursorObjects(database, cursorIndex) { return new Promise((resolve, reject) => { - const transaction = database.transaction('cache', 'readwrite'); + const transaction = database.transaction('cache', 'readwrite', {durability: 'relaxed'}); transaction.onabort = () => { reject(transaction.error); }; const store = transaction.objectStore('cache'); @@ -175,7 +175,7 @@ function cursorTest(cursorCount) { }).then(() => { return openDatabase(testCase); }).then(database => { - const transaction = database.transaction('cache', 'readonly'); + const transaction = database.transaction('cache', 'readonly', {durability: 'relaxed'}); transaction.onabort = () => { reject(transaction.error); }; const store = transaction.objectStore('cache'); diff --git a/tests/wpt/web-platform-tests/IndexedDB/nested-cloning-common.js b/tests/wpt/web-platform-tests/IndexedDB/resources/nested-cloning-common.js similarity index 100% rename from tests/wpt/web-platform-tests/IndexedDB/nested-cloning-common.js rename to tests/wpt/web-platform-tests/IndexedDB/resources/nested-cloning-common.js diff --git a/tests/wpt/web-platform-tests/IndexedDB/key-generators/reading-autoincrement-common.js b/tests/wpt/web-platform-tests/IndexedDB/resources/reading-autoincrement-common.js similarity index 100% rename from tests/wpt/web-platform-tests/IndexedDB/key-generators/reading-autoincrement-common.js rename to tests/wpt/web-platform-tests/IndexedDB/resources/reading-autoincrement-common.js diff --git a/tests/wpt/web-platform-tests/IndexedDB/support-promises.js b/tests/wpt/web-platform-tests/IndexedDB/resources/support-promises.js similarity index 100% rename from tests/wpt/web-platform-tests/IndexedDB/support-promises.js rename to tests/wpt/web-platform-tests/IndexedDB/resources/support-promises.js diff --git a/tests/wpt/web-platform-tests/IndexedDB/support.js b/tests/wpt/web-platform-tests/IndexedDB/resources/support.js similarity index 100% rename from tests/wpt/web-platform-tests/IndexedDB/support.js rename to tests/wpt/web-platform-tests/IndexedDB/resources/support.js diff --git a/tests/wpt/web-platform-tests/IndexedDB/serialize-sharedarraybuffer-throws.https.html b/tests/wpt/web-platform-tests/IndexedDB/serialize-sharedarraybuffer-throws.https.html index 6900759f441..613ddfe99d8 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/serialize-sharedarraybuffer-throws.https.html +++ b/tests/wpt/web-platform-tests/IndexedDB/serialize-sharedarraybuffer-throws.https.html @@ -2,7 +2,7 @@ IndexedDB: Attempting to serialize a SharedArrayBuffer should throw - + - + - + - + - + - + - + - + - + - +
diff --git a/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime-empty.html b/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime-empty.html index 7d4b0d7f7c7..86bd41ae62c 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime-empty.html +++ b/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime-empty.html @@ -2,7 +2,7 @@ IndexedDB: Commit ordering of empty transactions - + - +
diff --git a/tests/wpt/web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any.js b/tests/wpt/web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any.js index 7e17403eb0c..9197389a244 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any.js +++ b/tests/wpt/web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any.js @@ -1,4 +1,4 @@ -// META: script=support-promises.js +// META: script=resources/support-promises.js // META: timeout=long /** diff --git a/tests/wpt/web-platform-tests/IndexedDB/transaction-requestqueue.htm b/tests/wpt/web-platform-tests/IndexedDB/transaction-requestqueue.htm index 9f28e81ea8a..cef8699df42 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/transaction-requestqueue.htm +++ b/tests/wpt/web-platform-tests/IndexedDB/transaction-requestqueue.htm @@ -4,7 +4,7 @@ - + - + - + - + - + - + - + - + - + diff --git a/tests/wpt/web-platform-tests/accessibility/crashtests/bdo-table-cell.html b/tests/wpt/web-platform-tests/accessibility/crashtests/bdo-table-cell.html new file mode 100644 index 00000000000..ae12541f8d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/accessibility/crashtests/bdo-table-cell.html @@ -0,0 +1,21 @@ + + + + + x + + + + + + diff --git a/tests/wpt/web-platform-tests/accessibility/crashtests/delayed-ignored-change.html b/tests/wpt/web-platform-tests/accessibility/crashtests/delayed-ignored-change.html new file mode 100644 index 00000000000..226af19b5fe --- /dev/null +++ b/tests/wpt/web-platform-tests/accessibility/crashtests/delayed-ignored-change.html @@ -0,0 +1,19 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/accessibility/crashtests/displaylocked-serialize.html b/tests/wpt/web-platform-tests/accessibility/crashtests/displaylocked-serialize.html new file mode 100644 index 00000000000..76784291b44 --- /dev/null +++ b/tests/wpt/web-platform-tests/accessibility/crashtests/displaylocked-serialize.html @@ -0,0 +1,14 @@ + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/accessibility/crashtests/iframe-owns-child.html b/tests/wpt/web-platform-tests/accessibility/crashtests/iframe-owns-child.html new file mode 100644 index 00000000000..a318e6aba98 --- /dev/null +++ b/tests/wpt/web-platform-tests/accessibility/crashtests/iframe-owns-child.html @@ -0,0 +1,2 @@ +
+ diff --git a/tests/wpt/web-platform-tests/accessibility/crashtests/iframe-srcdoc.html b/tests/wpt/web-platform-tests/accessibility/crashtests/iframe-srcdoc.html new file mode 100644 index 00000000000..74460048e09 --- /dev/null +++ b/tests/wpt/web-platform-tests/accessibility/crashtests/iframe-srcdoc.html @@ -0,0 +1 @@ +xx diff --git a/tests/wpt/web-platform-tests/accessibility/crashtests/img-map-pseudo.html b/tests/wpt/web-platform-tests/accessibility/crashtests/img-map-pseudo.html new file mode 100644 index 00000000000..443934e431b --- /dev/null +++ b/tests/wpt/web-platform-tests/accessibility/crashtests/img-map-pseudo.html @@ -0,0 +1,11 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/accessibility/crashtests/object-with-unrendered-text-fallback.html b/tests/wpt/web-platform-tests/accessibility/crashtests/object-with-unrendered-text-fallback.html new file mode 100644 index 00000000000..0128213bfc6 --- /dev/null +++ b/tests/wpt/web-platform-tests/accessibility/crashtests/object-with-unrendered-text-fallback.html @@ -0,0 +1,11 @@ + + + + + + +
)))XX?
+
+ diff --git a/tests/wpt/web-platform-tests/accessibility/crashtests/svg-mouse-listener.html b/tests/wpt/web-platform-tests/accessibility/crashtests/svg-mouse-listener.html new file mode 100644 index 00000000000..e52909f0f68 --- /dev/null +++ b/tests/wpt/web-platform-tests/accessibility/crashtests/svg-mouse-listener.html @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor.https.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor.https.html index 0ccb899ec23..a8c65e4d3fa 100644 --- a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor.https.html +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor.https.html @@ -14,10 +14,43 @@ const kReadings = { readings: [ - [3.1415] + // Readings are selected so that illuminance significance check causes + // the following to happen: + // 1. First two values test situation when two values would be rounded + // to same value. As the second value would be rounded to same value + // as first it won't trigger reading event. + // 2. New value is set to 24. And test checks it is correctly rounded to + // 0. + // 3. New reading is attempted to set to 35. + // 4. Value is read from sensor and compared new reading. But as new + // reading was not significantly different compared to initial, for + // privacy reasons, service returns the initial value. + // 5. New value is set to 49. And test checks it is correctly rounded to + // 50. New value is allowed as it is significantly different compared + // to old value (24). + // 6. New reading is attempted to set to 35. + // 7. Value is read from sensor and compared new reading. But as new + // reading was not significantly different compared to initial, for + // privacy reasons, service returns the initial value. + // 8. New value is set to 23. And test checks it is correctly rounded to + // 0. New value is allowed as it is significantly different compared + // to old value (49). + // + // Note: Readings and expectedReadings wraps around correctly as next + // value would be 150 (output from 127). + [127], + [165], + [24], + [35], + [49], + [35], + [23] ], expectedReadings: [ - [3.1415] + [150], // output from 127 + [0], // output from 24 + [50], // output from 49 + [0] // output from 23 ] }; @@ -27,41 +60,4 @@ runGenericSensorTests( verifyAlsSensorReading, ['ambient-light-sensor']); -sensor_test(async (t, sensorProvider) => { - const sensor1 = new AmbientLightSensor(); - const sensor2 = new AmbientLightSensor(); - - return new Promise((resolve, reject) => { - sensor1.addEventListener('reading', () => { - sensor2.addEventListener('activate', () => { - try { - assert_true(sensor1.activated); - assert_true(sensor1.hasReading); - assert_not_equals(sensor1.illuminance, null); - assert_not_equals(sensor1.timestamp, null); - - assert_true(sensor2.activated); - assert_not_equals(sensor2.illuminance, null); - assert_not_equals(sensor2.timestamp, null); - } catch (e) { - reject(e); - } - }, { once: true }); - sensor2.addEventListener('reading', () => { - try { - assert_true(sensor2.activated); - assert_true(sensor2.hasReading); - assert_equals(sensor1.illuminance, sensor2.illuminance); - assert_equals(sensor1.timestamp, sensor2.timestamp); - resolve(); - } catch (e) { - reject(e); - } - }, { once: true }); - sensor2.start(); - }, { once: true }); - sensor1.start(); - }); -}, "Readings delivered by shared platform sensor are immediately accessible to all sensors."); - diff --git a/tests/wpt/web-platform-tests/ambient-light/META.yml b/tests/wpt/web-platform-tests/ambient-light/META.yml index c3f69ba181e..e173970b5d7 100644 --- a/tests/wpt/web-platform-tests/ambient-light/META.yml +++ b/tests/wpt/web-platform-tests/ambient-light/META.yml @@ -1,6 +1,5 @@ spec: https://w3c.github.io/ambient-light/ suggested_reviewers: - - zqzhang - riju - rakuco - Honry diff --git a/tests/wpt/web-platform-tests/app-history/META.yml b/tests/wpt/web-platform-tests/app-history/META.yml deleted file mode 100644 index ec4e3701cc7..00000000000 --- a/tests/wpt/web-platform-tests/app-history/META.yml +++ /dev/null @@ -1,4 +0,0 @@ -spec: https://wicg.github.io/app-history/ -suggested_reviewers: - - domenic - - natechapin diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/after-detach.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/after-detach.html deleted file mode 100644 index 07591f96ae5..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/after-detach.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/current-basic.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/current-basic.html deleted file mode 100644 index 102fbbb270d..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/current-basic.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-javascript-url-navigation.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-javascript-url-navigation.html deleted file mode 100644 index 2ed1d81fe94..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-javascript-url-navigation.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-array-equality.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-array-equality.html deleted file mode 100644 index e6eb99863d0..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-array-equality.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-in-new-javascript-url-iframe.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-in-new-javascript-url-iframe.html deleted file mode 100644 index de7d68173cc..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-in-new-javascript-url-iframe.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-in-new-srcdoc-iframe.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-in-new-srcdoc-iframe.html deleted file mode 100644 index 7ef6b4d511f..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-in-new-srcdoc-iframe.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-when-inactive.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-when-inactive.html deleted file mode 100644 index a7073778fb5..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-when-inactive.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entry-after-detach.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/entry-after-detach.html deleted file mode 100644 index 9d99918c5b2..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entry-after-detach.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/index-not-in-entries.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/index-not-in-entries.html deleted file mode 100644 index 394dfa97636..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/index-not-in-entries.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-back-cross-document.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-back-cross-document.html deleted file mode 100644 index a581c0100cc..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-back-cross-document.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-back-same-document.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-back-same-document.html deleted file mode 100644 index e3eeb15b2e4..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-back-same-document.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-location-reload.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-location-reload.html deleted file mode 100644 index 8770f1624f8..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-location-reload.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-location-replace-cross-origin.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-location-replace-cross-origin.html deleted file mode 100644 index dabe55e8bf7..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-location-replace-cross-origin.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-location-replace.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-location-replace.html deleted file mode 100644 index 4c5060da415..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/key-navigate-location-replace.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/opaque-origin-data-url.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/opaque-origin-data-url.html deleted file mode 100644 index a1e765dd1bb..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/opaque-origin-data-url.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/key-navigate-back-cross-document-helper.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/key-navigate-back-cross-document-helper.html deleted file mode 100644 index f61f9a82982..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/key-navigate-back-cross-document-helper.html +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/opaque-origin-page.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/opaque-origin-page.html deleted file mode 100644 index 5e8a71981c5..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/opaque-origin-page.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/post-entries-length-to-top.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/post-entries-length-to-top.html deleted file mode 100644 index 348a8984fe1..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/post-entries-length-to-top.html +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/post-key-to-top.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/post-key-to-top.html deleted file mode 100644 index 023141f76a3..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/post-key-to-top.html +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/sameDocument-after-fragment-navigate.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/sameDocument-after-fragment-navigate.html deleted file mode 100644 index 732b10964ef..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/sameDocument-after-fragment-navigate.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/sameDocument-after-navigate-restore.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/sameDocument-after-navigate-restore.html deleted file mode 100644 index 0c8abb4eb0b..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/sameDocument-after-navigate-restore.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/state-after-navigate-restore.html b/tests/wpt/web-platform-tests/app-history/app-history-entry/state-after-navigate-restore.html deleted file mode 100644 index aad065034f0..00000000000 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/state-after-navigate-restore.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-anchor-href.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-anchor-href.html deleted file mode 100644 index 2a93abf9937..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-anchor-href.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-back-forward-cross-doc.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-back-forward-cross-doc.html deleted file mode 100644 index 7782d11b0c3..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-back-forward-cross-doc.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-back-forward-same-doc.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-back-forward-same-doc.html deleted file mode 100644 index 85a93a21bd0..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-back-forward-same-doc.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-cross-doc.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-cross-doc.html deleted file mode 100644 index d6a657a1b11..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-cross-doc.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-preventDefault.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-preventDefault.html deleted file mode 100644 index 82f10006832..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-preventDefault.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-replace-cross-doc.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-replace-cross-doc.html deleted file mode 100644 index 3d8ceb746b8..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-replace-cross-doc.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-replace-same-doc.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-replace-same-doc.html deleted file mode 100644 index 2967f21d973..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-replace-same-doc.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-replace-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-replace-transitionWhile.html deleted file mode 100644 index 86079e777cb..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-replace-transitionWhile.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-same-doc.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-same-doc.html deleted file mode 100644 index d112e259280..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-same-doc.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-transitionWhile.html deleted file mode 100644 index d6a39d204ed..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-navigate-transitionWhile.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-reload-cross-doc.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-reload-cross-doc.html deleted file mode 100644 index ae142fb5d3b..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-reload-cross-doc.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-reload-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-reload-transitionWhile.html deleted file mode 100644 index d1f022f5842..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-reload-transitionWhile.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-updateCurrent.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-updateCurrent.html deleted file mode 100644 index 9e3a3ec387a..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-app-history-updateCurrent.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-dispose-ordering.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-dispose-ordering.html deleted file mode 100644 index f9d23f7dd5d..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-dispose-ordering.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-history-back-same-doc.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-history-back-same-doc.html deleted file mode 100644 index 7cfecb15b8e..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-history-back-same-doc.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-history-pushState.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-history-pushState.html deleted file mode 100644 index e5468eafc39..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-history-pushState.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-history-replaceState.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-history-replaceState.html deleted file mode 100644 index 5a99561ebd2..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-history-replaceState.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-location-api.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-location-api.html deleted file mode 100644 index 8cf52ca6d28..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-location-api.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-navigate-from-initial-about-blank-same-doc-popup.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-navigate-from-initial-about-blank-same-doc-popup.html deleted file mode 100644 index 8473e0b272d..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-navigate-from-initial-about-blank-same-doc-popup.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-navigate-from-initial-about-blank-same-doc.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-navigate-from-initial-about-blank-same-doc.html deleted file mode 100644 index e595868954a..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-navigate-from-initial-about-blank-same-doc.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-navigate-from-initial-about-blank.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-navigate-from-initial-about-blank.html deleted file mode 100644 index 415fb0c6e1c..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-navigate-from-initial-about-blank.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-properties.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-properties.html deleted file mode 100644 index a5417fa312c..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/currentchange-properties.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/currentchange-event/event-constructor.html b/tests/wpt/web-platform-tests/app-history/currentchange-event/event-constructor.html deleted file mode 100644 index 6c489363567..00000000000 --- a/tests/wpt/web-platform-tests/app-history/currentchange-event/event-constructor.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/event-constructor.html b/tests/wpt/web-platform-tests/app-history/navigate-event/event-constructor.html deleted file mode 100644 index 7a8803fab41..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/event-constructor.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-appHistory-back-cross-document.html b/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-appHistory-back-cross-document.html deleted file mode 100644 index 2be9cb9b889..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-appHistory-back-cross-document.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-appHistory-back-same-document.html b/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-appHistory-back-same-document.html deleted file mode 100644 index acc71ad3fe2..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-appHistory-back-same-document.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-appHistory-navigate.html b/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-appHistory-navigate.html deleted file mode 100644 index b48e816cdff..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-appHistory-navigate.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-history-back-cross-document.html b/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-history-back-cross-document.html deleted file mode 100644 index c6c8322a35a..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-history-back-cross-document.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-cross-document.html b/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-cross-document.html deleted file mode 100644 index ba1edceead5..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-cross-document.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-location-api-reentrant.html b/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-location-api-reentrant.html deleted file mode 100644 index 435690fcbc7..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-location-api-reentrant.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-location-api.html b/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-location-api.html deleted file mode 100644 index 92b76ad5ff0..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-location-api.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-transitionWhile-reentrant.html b/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-transitionWhile-reentrant.html deleted file mode 100644 index f5b4f84e8b6..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-transitionWhile-reentrant.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-transitionWhile.html deleted file mode 100644 index 8f99d8a8a02..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigateerror-ordering-transitionWhile.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/resources/navigatesuccess-cross-document-helper.html b/tests/wpt/web-platform-tests/app-history/navigate-event/resources/navigatesuccess-cross-document-helper.html deleted file mode 100644 index c073184b9b3..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/resources/navigatesuccess-cross-document-helper.html +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-preventDefault.html b/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-preventDefault.html deleted file mode 100644 index f9a1cd7015d..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-preventDefault.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-transitionWhile.html deleted file mode 100644 index 82d0c07eb74..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-transitionWhile.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-window-stop-after-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-window-stop-after-transitionWhile.html deleted file mode 100644 index 108ef39ffee..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-window-stop-after-transitionWhile.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-window-stop-in-onnavigate.html b/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-window-stop-in-onnavigate.html deleted file mode 100644 index 00be9925ea9..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-window-stop-in-onnavigate.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-and-navigate.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-and-navigate.html deleted file mode 100644 index 66a43b25ec2..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-and-navigate.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-appHistory-back.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-appHistory-back.html deleted file mode 100644 index c05e7d3bc63..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-appHistory-back.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-cross-document-same-origin.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-cross-document-same-origin.html deleted file mode 100644 index 249641d0ca0..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-cross-document-same-origin.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-cross-origin.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-cross-origin.html deleted file mode 100644 index d828c5cd0ee..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-cross-origin.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-detach.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-detach.html deleted file mode 100644 index 3b1f88f9599..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-detach.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-history-pushState.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-history-pushState.html deleted file mode 100644 index 81da433de04..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-history-pushState.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-history-replaceState.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-history-replaceState.html deleted file mode 100644 index 41c4949537e..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-history-replaceState.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-multiple-times-reject.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-multiple-times-reject.html deleted file mode 100644 index 6f40cf63d21..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-multiple-times-reject.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-multiple-times.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-multiple-times.html deleted file mode 100644 index a409db86a51..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-multiple-times.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-on-synthetic-event.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-on-synthetic-event.html deleted file mode 100644 index a3bb80fe66c..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-on-synthetic-event.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-reject.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-reject.html deleted file mode 100644 index 33e0214d46c..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-reject.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-resolve.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-resolve.html deleted file mode 100644 index 32a47ec2854..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-resolve.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-same-document-history-back.html b/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-same-document-history-back.html deleted file mode 100644 index 587a6bd3791..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/transitionWhile-same-document-history-back.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/back-forward-multiple-frames.html b/tests/wpt/web-platform-tests/app-history/navigate/back-forward-multiple-frames.html deleted file mode 100644 index 80a8fb65a05..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/back-forward-multiple-frames.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-back.html b/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-back.html deleted file mode 100644 index 7a4a37db421..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-back.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-forward.html b/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-forward.html deleted file mode 100644 index b6508ed3406..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-forward.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-goto-back-multiple.html b/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-goto-back-multiple.html deleted file mode 100644 index c39da7914f1..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-goto-back-multiple.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-goto-forward-multiple.html b/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-goto-forward-multiple.html deleted file mode 100644 index 08c00582d8f..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/disambigaute-goto-forward-multiple.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/forward-to-pruned-entry.html b/tests/wpt/web-platform-tests/app-history/navigate/forward-to-pruned-entry.html deleted file mode 100644 index 0e33360c867..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/forward-to-pruned-entry.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/goTo-after-adding-iframe.html b/tests/wpt/web-platform-tests/app-history/navigate/goTo-after-adding-iframe.html deleted file mode 100644 index 9921bcf447f..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/goTo-after-adding-iframe.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/goTo-after-data-url.html b/tests/wpt/web-platform-tests/app-history/navigate/goTo-after-data-url.html deleted file mode 100644 index ba2b56d1912..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/goTo-after-data-url.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/goTo-cross-document.html b/tests/wpt/web-platform-tests/app-history/navigate/goTo-cross-document.html deleted file mode 100644 index 0a7bbbe1bf9..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/goTo-cross-document.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/goTo-detach-between-navigate-and-navigatesuccess.html b/tests/wpt/web-platform-tests/app-history/navigate/goTo-detach-between-navigate-and-navigatesuccess.html deleted file mode 100644 index 2849ee1e9a2..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/goTo-detach-between-navigate-and-navigatesuccess.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/goTo-multiple-steps.html b/tests/wpt/web-platform-tests/app-history/navigate/goTo-multiple-steps.html deleted file mode 100644 index 562a775d229..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/goTo-multiple-steps.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/goTo-same-document.html b/tests/wpt/web-platform-tests/app-history/navigate/goTo-same-document.html deleted file mode 100644 index a9af0c2ae22..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/goTo-same-document.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/goTo-with-cross-origin-in-history.html b/tests/wpt/web-platform-tests/app-history/navigate/goTo-with-cross-origin-in-history.html deleted file mode 100644 index 3da29550b3e..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/goTo-with-cross-origin-in-history.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-base-url.html b/tests/wpt/web-platform-tests/app-history/navigate/navigate-base-url.html deleted file mode 100644 index b11a71a9312..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-base-url.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-info-and-state.html b/tests/wpt/web-platform-tests/app-history/navigate/navigate-info-and-state.html deleted file mode 100644 index 8890c9b9ca4..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-info-and-state.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-relative-url.html b/tests/wpt/web-platform-tests/app-history/navigate/navigate-relative-url.html deleted file mode 100644 index b426da59508..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-relative-url.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-replace-cross-document.html b/tests/wpt/web-platform-tests/app-history/navigate/navigate-replace-cross-document.html deleted file mode 100644 index 0b20dc85086..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-replace-cross-document.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-replace-same-document.html b/tests/wpt/web-platform-tests/app-history/navigate/navigate-replace-same-document.html deleted file mode 100644 index dea17f43ff6..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-replace-same-document.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-same-document-event-order.html b/tests/wpt/web-platform-tests/app-history/navigate/navigate-same-document-event-order.html deleted file mode 100644 index 4be537fb7ae..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-same-document-event-order.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-same-document.html b/tests/wpt/web-platform-tests/app-history/navigate/navigate-same-document.html deleted file mode 100644 index bad420272c4..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-same-document.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -
- diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-state-repeated-await.html b/tests/wpt/web-platform-tests/app-history/navigate/navigate-state-repeated-await.html deleted file mode 100644 index d81dd054f83..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-state-repeated-await.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-state-repeated.html b/tests/wpt/web-platform-tests/app-history/navigate/navigate-state-repeated.html deleted file mode 100644 index ed655d2086d..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-state-repeated.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-transitionWhile-history-state.html b/tests/wpt/web-platform-tests/app-history/navigate/navigate-transitionWhile-history-state.html deleted file mode 100644 index 56d9ea11791..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-transitionWhile-history-state.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-transitionWhile-reject-event-order.html b/tests/wpt/web-platform-tests/app-history/navigate/navigate-transitionWhile-reject-event-order.html deleted file mode 100644 index 96e742766cc..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-transitionWhile-reject-event-order.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/reload-base-url.html b/tests/wpt/web-platform-tests/app-history/navigate/reload-base-url.html deleted file mode 100644 index 35b29b9d2fb..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/reload-base-url.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/reload-info.html b/tests/wpt/web-platform-tests/app-history/navigate/reload-info.html deleted file mode 100644 index 314c05f534b..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/reload-info.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/reload-no-args.html b/tests/wpt/web-platform-tests/app-history/navigate/reload-no-args.html deleted file mode 100644 index 0451b39e9a5..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/reload-no-args.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/reload-state-and-info.html b/tests/wpt/web-platform-tests/app-history/navigate/reload-state-and-info.html deleted file mode 100644 index 897f10b39fa..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/reload-state-and-info.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/reload-state-undefined.html b/tests/wpt/web-platform-tests/app-history/navigate/reload-state-undefined.html deleted file mode 100644 index 165a330cfcf..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/reload-state-undefined.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-already-detached.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-already-detached.html deleted file mode 100644 index dd665e15f66..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-already-detached.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-beforeunload.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-beforeunload.html deleted file mode 100644 index 424d353803e..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-beforeunload.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-forward-initial-about-blank.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-forward-initial-about-blank.html deleted file mode 100644 index 902090e3a38..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-forward-initial-about-blank.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-forward-out-of-bounds.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-forward-out-of-bounds.html deleted file mode 100644 index bef0d7e7179..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-forward-out-of-bounds.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-transitionWhile-rejected.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-transitionWhile-rejected.html deleted file mode 100644 index b617f0bbad1..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-transitionWhile-rejected.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-transitionWhile.html deleted file mode 100644 index a6680f6ba6f..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-transitionWhile.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-already-detached.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-already-detached.html deleted file mode 100644 index c3b7de84935..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-already-detached.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-beforeunload.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-beforeunload.html deleted file mode 100644 index c97b796e275..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-beforeunload.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-transitionWhile-rejected.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-transitionWhile-rejected.html deleted file mode 100644 index 76cbfe44fcc..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-transitionWhile-rejected.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-transitionWhile.html deleted file mode 100644 index 86bf5470953..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward-transitionWhile.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward.html deleted file mode 100644 index 15d454c1461..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/forward.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-already-detached.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-already-detached.html deleted file mode 100644 index 9752cbb3aeb..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-already-detached.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-beforeunload.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-beforeunload.html deleted file mode 100644 index 2a63ab16113..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-beforeunload.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-cross-document-preventDefault.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-cross-document-preventDefault.html deleted file mode 100644 index 9c2301728de..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-cross-document-preventDefault.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-current.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-current.html deleted file mode 100644 index 0601dbefa6b..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-current.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-detach-cross-document.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-detach-cross-document.html deleted file mode 100644 index 95b2ec8f40d..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-detach-cross-document.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-detach-same-document.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-detach-same-document.html deleted file mode 100644 index 441f9371d03..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-detach-same-document.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-invalid-key.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-invalid-key.html deleted file mode 100644 index ee4d66f9aed..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-invalid-key.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-repeated.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-repeated.html deleted file mode 100644 index 80d43d64777..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-repeated.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-transitionWhile-rejected.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-transitionWhile-rejected.html deleted file mode 100644 index 9e306043470..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-transitionWhile-rejected.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-transitionWhile.html deleted file mode 100644 index 4b98a27b3da..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo-transitionWhile.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo.html deleted file mode 100644 index 81a3ef2df70..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/goTo.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-beforeunload.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-beforeunload.html deleted file mode 100644 index 2c9af273af7..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-beforeunload.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-detach.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-detach.html deleted file mode 100644 index 84b1d2c0de6..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-detach.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-initial-about-blank-cross-document.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-initial-about-blank-cross-document.html deleted file mode 100644 index d70890aedf2..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-initial-about-blank-cross-document.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-initial-about-blank.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-initial-about-blank.html deleted file mode 100644 index 6c976039f61..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-initial-about-blank.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-interrupted-within-onnavigate.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-interrupted-within-onnavigate.html deleted file mode 100644 index cfd3e13cef3..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-interrupted-within-onnavigate.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-interrupted.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-interrupted.html deleted file mode 100644 index 0d419c0fd14..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-interrupted.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-preventDefault.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-preventDefault.html deleted file mode 100644 index e27bde78610..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-preventDefault.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-beforeunload-unserializablestate.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-beforeunload-unserializablestate.html deleted file mode 100644 index b7005709aa6..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-beforeunload-unserializablestate.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-detached-unserializablestate.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-detached-unserializablestate.html deleted file mode 100644 index 69fe4527852..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-detached-unserializablestate.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-beforeunload.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-beforeunload.html deleted file mode 100644 index 5346ecd02f9..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-beforeunload.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-unload.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-unload.html deleted file mode 100644 index 8cf6c017915..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-unload.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-unload-unserializablestate.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-unload-unserializablestate.html deleted file mode 100644 index ac797605231..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-unload-unserializablestate.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-transitionWhile-interrupted.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-transitionWhile-interrupted.html deleted file mode 100644 index 0e274d5591e..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-transitionWhile-interrupted.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-transitionWhile-rejected.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-transitionWhile-rejected.html deleted file mode 100644 index 36d95698f54..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-transitionWhile-rejected.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-transitionWhile.html deleted file mode 100644 index 7809be1dec3..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-transitionWhile.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-unload.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-unload.html deleted file mode 100644 index 641de2c16be..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-unload.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-unserializable-state.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-unserializable-state.html deleted file mode 100644 index e6060ce891c..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-unserializable-state.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate.html deleted file mode 100644 index eab1e8a0a12..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-beforeunload.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-beforeunload.html deleted file mode 100644 index 7a3d9e3a0ed..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-beforeunload.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-detach.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-detach.html deleted file mode 100644 index f5b999134bc..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-detach.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-initial-about-blank.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-initial-about-blank.html deleted file mode 100644 index e1b9f14285b..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-initial-about-blank.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-preventDefault.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-preventDefault.html deleted file mode 100644 index 3eeb72f27c9..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-preventDefault.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-rejection-order-beforeunload-unserializablestate.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-rejection-order-beforeunload-unserializablestate.html deleted file mode 100644 index 89c60472de7..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-rejection-order-beforeunload-unserializablestate.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-rejection-order-detached-unserializablestate.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-rejection-order-detached-unserializablestate.html deleted file mode 100644 index 12e5ac2d6df..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-rejection-order-detached-unserializablestate.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-rejection-order-unload-unserializablestate.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-rejection-order-unload-unserializablestate.html deleted file mode 100644 index f528a68b4f7..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-rejection-order-unload-unserializablestate.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-transitionWhile-rejected.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-transitionWhile-rejected.html deleted file mode 100644 index 6ad452e9cfb..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-transitionWhile-rejected.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-transitionWhile.html deleted file mode 100644 index d5563d9fff7..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-transitionWhile.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-unload.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-unload.html deleted file mode 100644 index a62796b5db9..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-unload.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-unserializable-state.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-unserializable-state.html deleted file mode 100644 index e87071b94f7..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-unserializable-state.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/resources/back-forward-opaque-origin-page.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/resources/back-forward-opaque-origin-page.html deleted file mode 100644 index 6cdf0a8b986..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/resources/back-forward-opaque-origin-page.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/resources/helpers.js b/tests/wpt/web-platform-tests/app-history/navigate/return-value/resources/helpers.js deleted file mode 100644 index bf711b18ade..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/resources/helpers.js +++ /dev/null @@ -1,92 +0,0 @@ -window.assertReturnValue = (result, w = window) => { - assert_equals(Object.getPrototypeOf(result), w.Object.prototype); - assert_array_equals(Reflect.ownKeys(result), ["committed", "finished"]); - assert_true(result.committed instanceof w.Promise); - assert_true(result.finished instanceof w.Promise); - assert_not_equals(result.committed, result.finished); -}; - -window.assertNeverSettles = (t, result, w = window) => { - assertReturnValue(result, w); - result.committed.then( - t.unreached_func("committed must not fulfill"), - t.unreached_func("committed must not reject") - ); - - result.finished.then( - t.unreached_func("finished must not fulfill"), - t.unreached_func("finished must not reject") - ); -}; - -window.assertBothFulfill = async (t, result, expected, w = window) => { - assertReturnValue(result, w); - - // Don't use await here so that we can catch out-of-order settlements. - let committedValue; - result.committed.then( - t.step_func(v => { committedValue = v; }), - t.unreached_func("committed must not reject") - ); - - const finishedValue = await result.finished; - - assert_not_equals(committedValue, undefined, "committed must fulfill before finished"); - assert_equals(finishedValue, committedValue, "committed and finished must fulfill with the same value"); - assert_true(finishedValue instanceof w.AppHistoryEntry, "fulfillment value must be an AppHistoryEntry"); - assert_equals(finishedValue, expected); -}; - -window.assertCommittedFulfillsFinishedRejectsExactly = async (t, result, expectedEntry, expectedRejection, w = window) => { - assertReturnValue(result, w); - - // Don't use await here so that we can catch out-of-order settlements. - let committedValue; - result.committed.then( - t.step_func(v => { committedValue = v; }), - t.unreached_func("committed must not reject") - ); - - await promise_rejects_exactly(t, expectedRejection, result.finished); - - assert_not_equals(committedValue, undefined, "committed must fulfill before finished rejects"); - assert_true(committedValue instanceof w.AppHistoryEntry, "fulfillment value must be an AppHistoryEntry"); - assert_equals(committedValue, expectedEntry); -}; - -window.assertCommittedFulfillsFinishedRejectsDOM = async (t, result, expectedEntry, expectedDOMExceptionCode, w = window, domExceptionConstructor = w.DOMException, appHistoryEntryConstuctor = w.AppHistoryEntry) => { - assertReturnValue(result, w); - - // Don't use await here so that we can catch out-of-order settlements. - let committedValue; - result.committed.then( - t.step_func(v => { committedValue = v; }), - t.unreached_func("committed must not reject") - ); - - await promise_rejects_dom(t, expectedDOMExceptionCode, domExceptionConstructor, result.finished); - - assert_not_equals(committedValue, undefined, "committed must fulfill before finished rejects"); - assert_true(committedValue instanceof appHistoryEntryConstuctor, "fulfillment value must be an AppHistoryEntry"); - assert_equals(committedValue, expectedEntry); -}; - -window.assertBothRejectDOM = async (t, result, expectedDOMExceptionCode, w = window, domExceptionConstructor = w.DOMException) => { - assertReturnValue(result, w); - - // Don't use await here so that we can catch out-of-order settlements. - let committedReason, finishedReason; - await Promise.all([ - result.committed.then( - t.unreached_func("committed must not fulfill"), - t.step_func(r => { committedReason = r; }) - ), - result.finished.then( - t.unreached_func("finished must not fulfill"), - t.step_func(r => { finishedReason = r; }) - ) - ]); - - assert_equals(committedReason, finishedReason, "committed and finished must reject with the same value"); - assert_throws_dom(expectedDOMExceptionCode, domExceptionConstructor, () => { throw committedReason; }); -}; diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/resources/navigate-opaque-origin-page.html b/tests/wpt/web-platform-tests/app-history/navigate/return-value/resources/navigate-opaque-origin-page.html deleted file mode 100644 index 380258769d8..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/resources/navigate-opaque-origin-page.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-history-pushState.html b/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-history-pushState.html deleted file mode 100644 index e24fc0f31c1..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-history-pushState.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-history-replaceState.html b/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-history-replaceState.html deleted file mode 100644 index 23f037e57a0..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-history-replaceState.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-reload.html b/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-reload.html deleted file mode 100644 index 28b2424e93a..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-reload.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-same-document-location-api-navigation.html b/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-same-document-location-api-navigation.html deleted file mode 100644 index 49e4507211a..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-same-document-location-api-navigation.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-same-document-navigation.html b/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-same-document-navigation.html deleted file mode 100644 index e2c1471efed..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-after-same-document-navigation.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-cross-document-location-navigate.html b/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-cross-document-location-navigate.html deleted file mode 100644 index 384d8d940ee..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-cross-document-location-navigate.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-cross-document-restore.html b/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-cross-document-restore.html deleted file mode 100644 index e1f70dc27be..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/navigate-state-cross-document-restore.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/basic.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/basic.html deleted file mode 100644 index 00d3f59741d..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/basic.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/exception-order-initial-about-blank-unserializablestate.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/exception-order-initial-about-blank-unserializablestate.html deleted file mode 100644 index 9ecb79793a0..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/exception-order-initial-about-blank-unserializablestate.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/exception-order-not-fully-active-unserializablestate.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/exception-order-not-fully-active-unserializablestate.html deleted file mode 100644 index bd13b59e49f..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/exception-order-not-fully-active-unserializablestate.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/initial-about-blank.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/initial-about-blank.html deleted file mode 100644 index 1c1d91453ae..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/initial-about-blank.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/no-args.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/no-args.html deleted file mode 100644 index 435f260925a..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/no-args.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/not-fully-active.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/not-fully-active.html deleted file mode 100644 index ba1df86e3ff..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/not-fully-active.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/resources/opaque-origin-page.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/resources/opaque-origin-page.html deleted file mode 100644 index d9c273a2171..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/resources/opaque-origin-page.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-history-pushState.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-history-pushState.html deleted file mode 100644 index e24fc0f31c1..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-history-pushState.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-history-replaceState.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-history-replaceState.html deleted file mode 100644 index 440cd4897f6..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-history-replaceState.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-reload.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-reload.html deleted file mode 100644 index 43d452d6b3c..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-reload.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-same-document-location-api-navigation.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-same-document-location-api-navigation.html deleted file mode 100644 index 5d57ea0dee8..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-after-same-document-location-api-navigation.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-cross-document-location-navigate.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-cross-document-location-navigate.html deleted file mode 100644 index 6e70b48063c..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-cross-document-location-navigate.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-cross-document-restore.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-cross-document-restore.html deleted file mode 100644 index f872e610796..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-cross-document-restore.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-invalid.html b/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-invalid.html deleted file mode 100644 index 469b7d2206a..00000000000 --- a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/state-invalid.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-reload-with-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-reload-with-transitionWhile.html deleted file mode 100644 index a9b01eb3485..00000000000 --- a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-reload-with-transitionWhile.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-replace-with-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-replace-with-transitionWhile.html deleted file mode 100644 index 7efac924ef2..00000000000 --- a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-replace-with-transitionWhile.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-replaceState.html b/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-replaceState.html deleted file mode 100644 index 6da4c8e9892..00000000000 --- a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-replaceState.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-transitionWhile.html deleted file mode 100644 index 97ed346f8f7..00000000000 --- a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-transitionWhile.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document.html b/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document.html deleted file mode 100644 index 85e1293c2fe..00000000000 --- a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/back-transitionWhile-rejected.html b/tests/wpt/web-platform-tests/app-history/transition/back-transitionWhile-rejected.html deleted file mode 100644 index 0619ddcdeaa..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/back-transitionWhile-rejected.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/back-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/transition/back-transitionWhile.html deleted file mode 100644 index ab5e72559a3..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/back-transitionWhile.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/cross-document.html b/tests/wpt/web-platform-tests/app-history/transition/cross-document.html deleted file mode 100644 index 400cccec25e..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/cross-document.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/fragment-nav-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/transition/fragment-nav-transitionWhile.html deleted file mode 100644 index af71157a6f5..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/fragment-nav-transitionWhile.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/fragment-nav.html b/tests/wpt/web-platform-tests/app-history/transition/fragment-nav.html deleted file mode 100644 index b5274169209..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/fragment-nav.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/location-href-canceled.html b/tests/wpt/web-platform-tests/app-history/transition/location-href-canceled.html deleted file mode 100644 index a142e3a40d6..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/location-href-canceled.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/location-href-transitionWhile-rejected.html b/tests/wpt/web-platform-tests/app-history/transition/location-href-transitionWhile-rejected.html deleted file mode 100644 index 7e98872ef12..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/location-href-transitionWhile-rejected.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/location-href-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/transition/location-href-transitionWhile.html deleted file mode 100644 index f843d737a53..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/location-href-transitionWhile.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/navigate-canceled.html b/tests/wpt/web-platform-tests/app-history/transition/navigate-canceled.html deleted file mode 100644 index 8f58977d136..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/navigate-canceled.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile-interrupted.html b/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile-interrupted.html deleted file mode 100644 index 6e3d8216997..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile-interrupted.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile-rejected.html b/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile-rejected.html deleted file mode 100644 index ad4655d1571..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile-rejected.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile-stop.html b/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile-stop.html deleted file mode 100644 index a3172ae7e89..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile-stop.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile.html deleted file mode 100644 index 1e74e0da20b..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/navigate-transitionWhile.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/reload-canceled.html b/tests/wpt/web-platform-tests/app-history/transition/reload-canceled.html deleted file mode 100644 index dac3a79bb72..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/reload-canceled.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/reload-transitionWhile-rejected.html b/tests/wpt/web-platform-tests/app-history/transition/reload-transitionWhile-rejected.html deleted file mode 100644 index c08d62d91e7..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/reload-transitionWhile-rejected.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/app-history/transition/reload-transitionWhile.html b/tests/wpt/web-platform-tests/app-history/transition/reload-transitionWhile.html deleted file mode 100644 index 46b8e08e290..00000000000 --- a/tests/wpt/web-platform-tests/app-history/transition/reload-transitionWhile.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-manual-v1.tentative.html b/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-manual-v1.html similarity index 100% rename from tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-manual-v1.tentative.html rename to tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-manual-v1.html diff --git a/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-manual-v2.tentative.html b/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-manual-v2.html similarity index 100% rename from tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-manual-v2.tentative.html rename to tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-manual-v2.html diff --git a/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-v1.webmanifest b/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-v1.webmanifest index 342bab3bbb5..5d02d2b10ac 100644 --- a/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-v1.webmanifest +++ b/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-v1.webmanifest @@ -1,7 +1,7 @@ { "name": "id member test", "id": "/testId", - "start_url": "id-member-manifest-update-manual-v1.tentative.html", + "start_url": "id-member-manifest-update-manual-v1.html", "icons": [ { "src": "icon.png", diff --git a/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-v2.webmanifest b/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-v2.webmanifest index b758920a42c..582620186e4 100644 --- a/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-v2.webmanifest +++ b/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update-v2.webmanifest @@ -1,7 +1,7 @@ { "name": "id member test", "id": "testId", - "start_url": "id-member-manifest-update-manual-v2.tentative.html", + "start_url": "id-member-manifest-update-manual-v2.html", "icons": [ { "src": "icon.png", diff --git a/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update.js b/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update.js index 8576db1e21f..7d6e344ed98 100644 --- a/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update.js +++ b/tests/wpt/web-platform-tests/appmanifest/id-member/id-member-manifest-update.js @@ -5,7 +5,7 @@ window.onload = () => { Instructions
    -
  1. Install id-member-manifest-update-manual.tentative.html as a PWA
  2. +
  3. Install id-member-manifest-update-manual.html as a PWA
  4. Launch the app from OS. The page should be launched to start_url v1.
  5. diff --git a/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/icon.png b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/icon.png new file mode 100644 index 00000000000..d6dd4860ae6 Binary files /dev/null and b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/icon.png differ diff --git a/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/user_preferences-member-manual.js b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/user_preferences-member-manual.js new file mode 100644 index 00000000000..bf1bc8d24c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/user_preferences-member-manual.js @@ -0,0 +1,4 @@ +if ('serviceWorker' in navigator) { + navigator.serviceWorker.register( + 'user_preferences-member-service-worker.js'); +} diff --git a/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/user_preferences-member.webmanifest b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/user_preferences-member.webmanifest new file mode 100644 index 00000000000..3d92202bf7d --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/user_preferences-member.webmanifest @@ -0,0 +1,22 @@ +{ + "name": "user_preferences member WPT", + "icons": [ + { + "src": "icon.png", + "sizes": "144x144" + } + ], + "start_url": "../user_preferences-member-manual.html", + "display": "fullscreen", + "user_preferences": { + "color_scheme": { + "dark": { + "theme_color": "green" + }, + "light": { + "theme_color": "green" + } + } + }, + "theme_color": "red" +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/user_preferences-member.webmanifest.headers b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/user_preferences-member.webmanifest.headers new file mode 100644 index 00000000000..23f36ea27ce --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/resources/user_preferences-member.webmanifest.headers @@ -0,0 +1 @@ +Content-Type: application/manifest+json; charset=utf-8 \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/user_preferences-member-manual.html b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/user_preferences-member-manual.html new file mode 100644 index 00000000000..c864d3dfd56 --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/user_preferences-member-manual.html @@ -0,0 +1,13 @@ + +Test that user_preferences member is supported + + +

    Testing support for user_preferences member

    +
      +
    1. Install this site as a PWA
    2. +
    3. Enable the OS dark mode setting
    4. +
    5. To pass, the theme_color must be green. This can be observed by looking + at the top of the window. On failure, this will be red. +
    6. +
    + diff --git a/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/user_preferences-member-service-worker.js b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/user_preferences-member-service-worker.js new file mode 100644 index 00000000000..24d575a9171 --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/user_preferences-member/user_preferences-member-service-worker.js @@ -0,0 +1,52 @@ +// Some user agents only offer app installation if there is a SW and it handles +// offline requests. + +const cacheVersion = "1.2"; +const CACHE_NAME = `cache-v${cacheVersion}`; + +// The resources cached by this service worker. +const resources = [ + "user_preferences-member-manual.html", + "user_preferences-member-service-worker.js", + "resources/user_preferences-member-manual.js", + "resources/icon.png" +]; + +// Load all resources for this service worker. +const precache = async () => { + const cache = await caches.open(CACHE_NAME); + await cache.addAll(resources); +}; + +// Get a resource from the cache. +const fromCache = async request => { + const cache = await caches.open(CACHE_NAME); + return await cache.match(request.url); +}; + +// Attempt to get resources from the network first, fallback to the cache if we're +// offline. +const networkFallbackToCache = async request => { + try { + const response = await fetch(request); + if (response.ok) return response; + } catch (err) {} + return await fromCache(request); +}; + +// When we have a new service worker, update the caches and swap immediately. +self.addEventListener("install", e => { + e.waitUntil(precache().then(() => self.skipWaiting())); +}); + +// Claim existing clients. +self.addEventListener("activate", e => { + e.waitUntil(self.clients.claim()); +}); + +// When a resource need to be fetched, check whether it is +// contained in the cache and return the cached version, otherwise +// get it from the network. +self.addEventListener("fetch", e => { + e.respondWith(networkFallbackToCache(e.request)); +}); diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/new_session/__init__.py b/tests/wpt/web-platform-tests/attribution-reporting/__init__.py similarity index 100% rename from tests/wpt/web-platform-tests/webdriver/tests/bidi/new_session/__init__.py rename to tests/wpt/web-platform-tests/attribution-reporting/__init__.py diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/session_subscribe/__init__.py b/tests/wpt/web-platform-tests/attribution-reporting/resources/__init__.py similarity index 100% rename from tests/wpt/web-platform-tests/webdriver/tests/bidi/session_subscribe/__init__.py rename to tests/wpt/web-platform-tests/attribution-reporting/resources/__init__.py diff --git a/tests/wpt/web-platform-tests/attribution-reporting/resources/reports.py b/tests/wpt/web-platform-tests/attribution-reporting/resources/reports.py new file mode 100644 index 00000000000..59593430578 --- /dev/null +++ b/tests/wpt/web-platform-tests/attribution-reporting/resources/reports.py @@ -0,0 +1,105 @@ +"""Methods for the report-event-attribution and report-aggregate-attribution endpoints""" +import json +from typing import List, Optional, Tuple, TypedDict + +from wptserve.request import Request +from wptserve.stash import Stash +from wptserve.utils import isomorphic_decode, isomorphic_encode + +# Key used to access the reports in the stash. +REPORTS = "4691a2d7fca5430fb0f33b1bd8a9d388" + +Header = Tuple[str, str] +Status = Tuple[int, str] +Response = Tuple[Status, List[Header], str] + +CLEAR_STASH = isomorphic_encode("clear_stash") + + +def decode_headers(headers: dict) -> dict: + """Decodes the headers from wptserve. + + wptserve headers are encoded like + { + encoded(key): [encoded(value1), encoded(value2),...] + } + This method decodes the above using the wptserve.utils.isomorphic_decode + method + """ + return { + isomorphic_decode(key): [isomorphic_decode(el) for el in value + ] for key, value in headers.items() + } + + +def handle_post_report(request: Request, headers: List[Header]) -> Response: + """Handles POST request for reports. + + Retrieves the report from the request body and stores the report in the + stash. If clear_stash is specified in the query params, clears the stash. + """ + if request.GET.get(CLEAR_STASH): + clear_stash(request.server.stash) + return (200, "OK"), headers, json.dumps({ + "code": 200, + "message": "Stash successfully cleared.", + }) + store_report( + request.server.stash, { + "body": request.body.decode("utf-8"), + "headers": decode_headers(request.headers) + }) + return (201, "OK"), headers, json.dumps({ + "code": 201, + "message": "Report successfully stored." + }) + + +def handle_get_reports(request: Request, headers: List[Header]) -> Response: + """Handles GET request for reports. + + Retrieves and returns all reports from the stash. + """ + reports = take_reports(request.server.stash) + return (200, "OK"), headers, json.dumps({ + "code": 200, + "reports": reports, + }) + + +def store_report(stash: Stash, report: str) -> None: + """Stores the report in the stash. Report here is a JSON.""" + with stash.lock: + reports = stash.take(REPORTS) + if not reports: + reports = [] + reports.append(report) + stash.put(REPORTS, reports) + return None + + +def take_reports(stash: Stash) -> List[str]: + """Takes all the reports from the stash and returns them.""" + reports = stash.take(REPORTS) + if not reports: + reports = [] + return reports + + +def clear_stash(stash: Stash) -> None: + "Clears the stash." + stash.take(REPORTS) + return None + + +def handle_reports(request: Request) -> Response: + """Handles request to get or store reports.""" + headers = [("Content-Type", "application/json")] + if request.method == "POST": + return handle_post_report(request, headers) + if request.method == "GET": + return handle_get_reports(request, headers) + return (405, "Method Not Allowed"), headers, json.dumps({ + "code": 405, + "message": "Only GET or POST methods are supported." + }) diff --git a/tests/wpt/web-platform-tests/audio-output/removeTrack-after-setSinkId.https.html b/tests/wpt/web-platform-tests/audio-output/removeTrack-after-setSinkId.https.html new file mode 100644 index 00000000000..393082052b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/audio-output/removeTrack-after-setSinkId.https.html @@ -0,0 +1,26 @@ + + + + Test source track removal after setSinkId does not crash + + + + + + + diff --git a/tests/wpt/web-platform-tests/avif/META.yml b/tests/wpt/web-platform-tests/avif/META.yml new file mode 100644 index 00000000000..e047f234b5d --- /dev/null +++ b/tests/wpt/web-platform-tests/avif/META.yml @@ -0,0 +1 @@ +spec: https://aomediacodec.github.io/av1-avif/ diff --git a/tests/wpt/web-platform-tests/avif/animated-avif-timeout-ref.html b/tests/wpt/web-platform-tests/avif/animated-avif-timeout-ref.html new file mode 100644 index 00000000000..0eecb377409 --- /dev/null +++ b/tests/wpt/web-platform-tests/avif/animated-avif-timeout-ref.html @@ -0,0 +1 @@ + diff --git a/tests/wpt/web-platform-tests/avif/animated-avif-timeout.html b/tests/wpt/web-platform-tests/avif/animated-avif-timeout.html new file mode 100644 index 00000000000..13a5722051e --- /dev/null +++ b/tests/wpt/web-platform-tests/avif/animated-avif-timeout.html @@ -0,0 +1,11 @@ + +Animated AVIF: Second frame displays quickly, replacing red with green. + + + diff --git a/tests/wpt/web-platform-tests/BackgroundSync/META.yml b/tests/wpt/web-platform-tests/background-sync/META.yml similarity index 100% rename from tests/wpt/web-platform-tests/BackgroundSync/META.yml rename to tests/wpt/web-platform-tests/background-sync/META.yml diff --git a/tests/wpt/web-platform-tests/BackgroundSync/idlharness.https.any.js b/tests/wpt/web-platform-tests/background-sync/idlharness.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/BackgroundSync/idlharness.https.any.js rename to tests/wpt/web-platform-tests/background-sync/idlharness.https.any.js diff --git a/tests/wpt/web-platform-tests/BackgroundSync/service_workers/sw.js b/tests/wpt/web-platform-tests/background-sync/service_workers/sw.js similarity index 100% rename from tests/wpt/web-platform-tests/BackgroundSync/service_workers/sw.js rename to tests/wpt/web-platform-tests/background-sync/service_workers/sw.js diff --git a/tests/wpt/web-platform-tests/battery-status/META.yml b/tests/wpt/web-platform-tests/battery-status/META.yml index a069984ddb2..77d19a828dc 100644 --- a/tests/wpt/web-platform-tests/battery-status/META.yml +++ b/tests/wpt/web-platform-tests/battery-status/META.yml @@ -1,5 +1,4 @@ spec: https://w3c.github.io/battery/ suggested_reviewers: - anssiko - - zqzhang - Honry diff --git a/tests/wpt/web-platform-tests/battery-status/battery-insecure-context.html b/tests/wpt/web-platform-tests/battery-status/battery-insecure-context.html deleted file mode 100644 index 336a094d6b9..00000000000 --- a/tests/wpt/web-platform-tests/battery-status/battery-insecure-context.html +++ /dev/null @@ -1,27 +0,0 @@ - - -Battery Test: navigator.getBattery() shall throw "SecurityError" in an insecure context - - - - - -
    - Run test in an insecure context, e.g. http://example.com/. -
    - - diff --git a/tests/wpt/web-platform-tests/bluetooth/README.md b/tests/wpt/web-platform-tests/bluetooth/README.md index 8d0f063db02..027b606e850 100644 --- a/tests/wpt/web-platform-tests/bluetooth/README.md +++ b/tests/wpt/web-platform-tests/bluetooth/README.md @@ -95,7 +95,7 @@ For more implementation details, see the [Web Bluetooth Service README]. [MojoJS]: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/testing/web_platform_tests.md#mojojs [Web Bluetooth Service README]: -https://chromium.googlesource.com/chromium/src.git/+/master/content/browser/bluetooth/README.md +https://chromium.googlesource.com/chromium/src.git/+/main/content/browser/bluetooth/README.md # Resources and Documentation diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptor/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptor/detachedIframe.https.window.js new file mode 100644 index 00000000000..2722a153c8e --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptor/detachedIframe.https.window.js @@ -0,0 +1,32 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device, fakes} = await getHealthThermometerDeviceFromIframe(iframe); + await fakes.fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_SUCCESS, + }); + let service = await device.gatt.getPrimaryService(health_thermometer.name); + let characteristic = + await service.getCharacteristic(measurement_interval.name); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await characteristic.getDescriptor(user_description.name); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'getDescriptor() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/detachedIframe.https.window.js new file mode 100644 index 00000000000..73c5f3c9a0f --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/detachedIframe.https.window.js @@ -0,0 +1,32 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device, fakes} = await getHealthThermometerDeviceFromIframe(iframe); + await fakes.fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_SUCCESS, + }); + let service = await device.gatt.getPrimaryService(health_thermometer.name); + let characteristic = + await service.getCharacteristic(measurement_interval.name); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await characteristic.getDescriptors(user_description.name); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'getDescriptors() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/detachedIframe.https.window.js new file mode 100644 index 00000000000..a47ce231112 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/detachedIframe.https.window.js @@ -0,0 +1,32 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device, fakes} = await getHealthThermometerDeviceFromIframe(iframe); + await fakes.fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_SUCCESS, + }); + let service = await device.gatt.getPrimaryService(health_thermometer.name); + let characteristic = + await service.getCharacteristic(measurement_interval.name); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await characteristic.readValue(); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'readValue() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/startNotifications/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/characteristic/startNotifications/detachedIframe.https.window.js new file mode 100644 index 00000000000..6cb33772d32 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/startNotifications/detachedIframe.https.window.js @@ -0,0 +1,32 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device, fakes} = await getHealthThermometerDeviceFromIframe(iframe); + await fakes.fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_SUCCESS, + }); + let service = await device.gatt.getPrimaryService(health_thermometer.name); + let characteristic = + await service.getCharacteristic(measurement_interval.name); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await characteristic.startNotifications(); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'startNotifications() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/stopNotifications/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/characteristic/stopNotifications/detachedIframe.https.window.js new file mode 100644 index 00000000000..1f3e616e01d --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/stopNotifications/detachedIframe.https.window.js @@ -0,0 +1,32 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device, fakes} = await getHealthThermometerDeviceFromIframe(iframe); + await fakes.fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_SUCCESS, + }); + let service = await device.gatt.getPrimaryService(health_thermometer.name); + let characteristic = + await service.getCharacteristic(measurement_interval.name); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await characteristic.stopNotifications(); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'stopNotifications() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/detachedIframe.https.window.js new file mode 100644 index 00000000000..7647a8734c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/detachedIframe.https.window.js @@ -0,0 +1,32 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device, fakes} = await getHealthThermometerDeviceFromIframe(iframe); + await fakes.fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_SUCCESS, + }); + let service = await device.gatt.getPrimaryService(health_thermometer.name); + let characteristic = + await service.getCharacteristic(measurement_interval.name); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await characteristic.writeValue(new DataView(new ArrayBuffer(2))); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'writeValue() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/descriptor/readValue/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/descriptor/readValue/detachedIframe.https.window.js new file mode 100644 index 00000000000..17bdbf1f1dd --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/descriptor/readValue/detachedIframe.https.window.js @@ -0,0 +1,33 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device, fakes} = await getHealthThermometerDeviceFromIframe(iframe); + await fakes.fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_SUCCESS, + }); + let service = await device.gatt.getPrimaryService(health_thermometer.name); + let characteristic = + await service.getCharacteristic(measurement_interval.name); + let descriptor = await characteristic.getDescriptor(user_description.name); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await descriptor.readValue(); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'readValue() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/descriptor/writeValue/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/descriptor/writeValue/detachedIframe.https.window.js new file mode 100644 index 00000000000..c198177fa37 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/descriptor/writeValue/detachedIframe.https.window.js @@ -0,0 +1,33 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device, fakes} = await getHealthThermometerDeviceFromIframe(iframe); + await fakes.fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_SUCCESS, + }); + let service = await device.gatt.getPrimaryService(health_thermometer.name); + let characteristic = + await service.getCharacteristic(measurement_interval.name); + let descriptor = await characteristic.getDescriptor(user_description.name); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await descriptor.writeValue(new ArrayBuffer(1 /* length */)); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'writeValue() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/device/forget/connect-after-forget.https.window.js b/tests/wpt/web-platform-tests/bluetooth/device/forget/connect-after-forget.https.window.js new file mode 100644 index 00000000000..0b15b4d060d --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/device/forget/connect-after-forget.https.window.js @@ -0,0 +1,11 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async (t) => { + const { device } = await getConnectedHealthThermometerDevice(); + await device.forget(); + + await promise_rejects_dom(t, 'SecurityError', device.gatt.connect()); +}, 'gatt.connect() rejects after forget().'); diff --git a/tests/wpt/web-platform-tests/bluetooth/device/forget/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/device/forget/detachedIframe.https.window.js new file mode 100644 index 00000000000..c34a3c41f25 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/device/forget/detachedIframe.https.window.js @@ -0,0 +1,26 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device} = await getHealthThermometerDeviceFromIframe(iframe); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await device.forget(); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'TypeError'); +}, 'forget() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/device/forget/getDevices.https.window.js b/tests/wpt/web-platform-tests/bluetooth/device/forget/getDevices.https.window.js new file mode 100644 index 00000000000..e9ce6563193 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/device/forget/getDevices.https.window.js @@ -0,0 +1,18 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + await getConnectedHealthThermometerDevice(); + const devicesBeforeForget = await navigator.bluetooth.getDevices(); + assert_equals( + devicesBeforeForget.length, 1, 'getDevices() should return the granted device.'); + + const device = devicesBeforeForget[0]; + await device.forget(); + const devicesAfterForget = await navigator.bluetooth.getDevices(); + assert_equals( + devicesAfterForget.length, 0, + 'getDevices() is empty after device.forget().'); +}, 'forget() removes devices from getDevices().'); diff --git a/tests/wpt/web-platform-tests/bluetooth/device/watchAdvertisements/blocklisted-manufacturer-data-filtered-from-event.https.window.js b/tests/wpt/web-platform-tests/bluetooth/device/watchAdvertisements/blocklisted-manufacturer-data-filtered-from-event.https.window.js new file mode 100644 index 00000000000..c73e3dbad1b --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/device/watchAdvertisements/blocklisted-manufacturer-data-filtered-from-event.https.window.js @@ -0,0 +1,50 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js +'use strict'; +const test_desc = `Blocked manufacturer data is filtered from the ` + + `advertisement event.`; + +const advertisement_packet_with_blocked_manufacturer_data = { + deviceAddress: '07:07:07:07:07:07', + rssi: -10, + scanRecord: { + name: 'LE Device', + uuids: [uuid1234], + manufacturerData: { + [nonBlocklistedManufacturerId]: nonBlocklistedManufacturerData, + [blocklistedManufacturerId]: blocklistedManufacturerData, + }, + } +}; + +bluetooth_test(async (t) => { + let {device} = await setUpPreconnectedFakeDevice({ + fakeDeviceOptions: { + address: '07:07:07:07:07:07', + knownServiceUUIDs: [uuid1234], + }, + requestDeviceOptions: { + filters: [{services: [uuid1234]}], + optionalManufacturerData: [nonBlocklistedManufacturerId, blocklistedManufacturerId] + } + }); + const watcher = new EventWatcher(t, device, ['advertisementreceived']); + + await device.watchAdvertisements(); + assert_true(device.watchingAdvertisements); + + let advertisementreceivedPromise = watcher.wait_for('advertisementreceived'); + await fake_central.simulateAdvertisementReceived( + advertisement_packet_with_blocked_manufacturer_data); + let evt = await advertisementreceivedPromise; + assert_equals(evt.device, device); + + // Check if block-listed manufacturer data is filtered out properly. + assert_false(evt.manufacturerData.has(blocklistedManufacturerId)); + + // Check if non blocked-listed manufacturer still exists. + assert_data_maps_equal( + evt.manufacturerData, /*expected_key=*/ nonBlocklistedManufacturerId, nonBlocklistedManufacturerData); +}, test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/device/watchAdvertisements/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/device/watchAdvertisements/detachedIframe.https.window.js new file mode 100644 index 00000000000..6bee7292e02 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/device/watchAdvertisements/detachedIframe.https.window.js @@ -0,0 +1,26 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device} = await getHealthThermometerDeviceFromIframe(iframe); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await device.watchAdvertisements(); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'TypeError'); +}, 'watchAdvertisements() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/generate.py b/tests/wpt/web-platform-tests/bluetooth/generate.py index f7fffddbc30..505375d55fe 100644 --- a/tests/wpt/web-platform-tests/bluetooth/generate.py +++ b/tests/wpt/web-platform-tests/bluetooth/generate.py @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# Copyright 2016 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # diff --git a/tests/wpt/web-platform-tests/bluetooth/generate_test.py b/tests/wpt/web-platform-tests/bluetooth/generate_test.py index c0ff8a78e95..6f46ae913a2 100755 --- a/tests/wpt/web-platform-tests/bluetooth/generate_test.py +++ b/tests/wpt/web-platform-tests/bluetooth/generate_test.py @@ -1,6 +1,6 @@ #!/usr/bin/python -# Copyright 2016 The Chromium Authors. All rights reserved. +# Copyright 2016 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # diff --git a/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.https.window.js b/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.https.window.js index 461e3643928..2b40eaff490 100644 --- a/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.https.window.js @@ -1,5 +1,5 @@ // META: script=/resources/testdriver.js -// META: script=/resources/testharnessreport.js +// META: script=/resources/testdriver-vendor.js 'use strict'; const test_desc = 'Bluetooth IDL test'; diff --git a/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothDevice.https.window.js b/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothDevice.https.window.js index c4e3314e249..c715926df3b 100644 --- a/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothDevice.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothDevice.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothUUID.window.js b/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothUUID.window.js index fa4a4dd9e22..cf9c14bb2c5 100644 --- a/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothUUID.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothUUID.window.js @@ -1,5 +1,5 @@ // META: script=/resources/testdriver.js -// META: script=/resources/testharnessreport.js +// META: script=/resources/testdriver-vendor.js 'use strict' var base_uuid = '00000000-0000-1000-8000-00805f9b34fb' diff --git a/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.https.window.js b/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.https.window.js index 2cd33c70789..a087d308962 100644 --- a/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.https.window.js @@ -1,5 +1,5 @@ // META: script=/resources/testdriver.js -// META: script=/resources/testharnessreport.js +// META: script=/resources/testdriver-vendor.js 'use strict'; const test_desc = '[SameObject] test for navigator.bluetooth'; diff --git a/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.window.js b/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.window.js index de512200ad9..db6bf89f9f3 100644 --- a/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.window.js @@ -1,5 +1,5 @@ // META: script=/resources/testdriver.js -// META: script=/resources/testharnessreport.js +// META: script=/resources/testdriver-vendor.js 'use strict'; test(() => { diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.window.js index df168797bf7..15bde6a9336 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-name.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-name.https.window.js index bde64a9bc97..f3373a6bb64 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-name.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-name.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.window.js index 3eb33866379..5226a645a86 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-present.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-present.https.window.js index 0edf3a2d858..7c200d03f18 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-present.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-present.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-manufacturer-data-in-filter.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-manufacturer-data-in-filter.https.window.js new file mode 100644 index 00000000000..2dae7f4cc65 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-manufacturer-data-in-filter.https.window.js @@ -0,0 +1,29 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js +'use strict'; +const test_desc = 'Reject with SecurityError if requesting a blocklisted ' + + 'manufacturer data.'; + +const expected = new DOMException( + 'requestDevice() called with a filter containing a blocklisted UUID ' + + 'or manufacturer data. https://goo.gl/4NeimX', + 'SecurityError'); + +bluetooth_test(async () => { + await assert_promise_rejects_with_message( + setUpPreconnectedFakeDevice({ + fakeDeviceOptions: {knownServiceUUIDs: ['heart_rate']}, + requestDeviceOptions: { + filters: [{ + services: ['heart_rate'], + manufacturerData: [{ + companyIdentifier: blocklistedManufacturerId, + dataPrefix: blocklistedManufacturerData, + }], + }] + } + }), + expected, 'Requesting blocklisted service rejects.'); +}, test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-filter.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-filter.https.window.js index 48f3d1309da..80eaf14447f 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-filter.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-filter.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js @@ -8,8 +6,8 @@ const test_desc = 'Reject with SecurityError if requesting a blocklisted ' + 'service.'; const expected = new DOMException( - 'requestDevice() called with a filter containing a blocklisted UUID. ' + - 'https://goo.gl/4NeimX', + 'requestDevice() called with a filter containing a blocklisted UUID ' + + 'or manufacturer data. https://goo.gl/4NeimX', 'SecurityError'); bluetooth_test(async () => { diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.window.js index bd99088a339..4c01974e557 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/data-prefix-and-mask-size.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/data-prefix-and-mask-size.https.window.js index 49cf41ce9eb..fa2645093a6 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/data-prefix-and-mask-size.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/data-prefix-and-mask-size.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.window.js index 5e61d641eed..20ed383d397 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filter.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filter.https.window.js index da16e04db53..bfe94f2721d 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filter.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filter.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filters-member.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filters-member.https.window.js index 23210f034e1..3265e54fd88 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filters-member.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filters-member.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-manufacturerData-member.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-manufacturerData-member.https.window.js index af3118a4858..0996137f517 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-manufacturerData-member.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-manufacturerData-member.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-namePrefix.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-namePrefix.https.window.js index 89520c2a286..8ce2e649676 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-namePrefix.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-namePrefix.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-services-member.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-services-member.https.window.js index a2ee410ea59..a24611631d3 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-services-member.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-services-member.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.window.js index 6c200796c1b..a6c48f2962a 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.window.js index 34cd3532d1e..23de63d293f 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.window.js index 892484e9d9d..f14f78fe7d7 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.window.js index 1b48485f945..aa832b2e764 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.window.js index 8aee40fcd3b..5d27629eaa1 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name-unicode.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name-unicode.https.window.js index d4e8fe53301..1232a030e9d 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name-unicode.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name-unicode.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name.https.window.js index ca0211da849..7ede93ce721 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.window.js index 541ca48bb78..2932dc1cde5 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix.https.window.js index 07a2db52a81..f922bb2f0d0 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/no-arguments.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/no-arguments.https.window.js index 15765738550..075a97f1a94 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/no-arguments.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/no-arguments.https.window.js @@ -1,6 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharness-helpers.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/same-company-identifier.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/same-company-identifier.https.window.js index 7416202d3d5..41f851adc5e 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/same-company-identifier.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/same-company-identifier.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.window.js index 0ad4c2979d4..cd10288ddb7 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.window.js index ffd57b90215..494f324ee24 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.window.js index 0a7491e347d..bfba220f479 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.window.js index cd3b963b388..352437d0e5a 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/cross-origin-iframe.sub.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/cross-origin-iframe.sub.https.window.js index bbc813e5c9a..a5e6fac25e3 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/cross-origin-iframe.sub.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/cross-origin-iframe.sub.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js @@ -26,5 +24,5 @@ bluetooth_test(async (t) => { const messageEvent = await windowWatcher.wait_for('message'); assert_equals( messageEvent.data, - 'SecurityError: requestDevice() called from cross-origin iframe.'); + 'SecurityError: Failed to execute \'requestDevice\' on \'Bluetooth\': Access to the feature "bluetooth" is disallowed by permissions policy.'); }, test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/discovery-succeeds.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/discovery-succeeds.https.window.js index 494ebbbe451..4941d185cad 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/discovery-succeeds.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/discovery-succeeds.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/doesnt-consume-user-gesture.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/doesnt-consume-user-gesture.https.window.js index c9b7bc9d66c..9c742733e1d 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/doesnt-consume-user-gesture.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/doesnt-consume-user-gesture.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/filter-matches.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/filter-matches.https.window.js index a0606423f1a..1a0f52ac309 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/filter-matches.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/filter-matches.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/le-not-supported.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/le-not-supported.https.window.js index ffb70209bd4..c961ab4492c 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/le-not-supported.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/le-not-supported.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/manufacturer-data-filter-matches.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/manufacturer-data-filter-matches.https.window.js index 548b5d0b3fc..c4c0e805328 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/manufacturer-data-filter-matches.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/manufacturer-data-filter-matches.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/name-empty-device-from-name-empty-filter.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/name-empty-device-from-name-empty-filter.https.window.js index 86e98bb643d..2ff22cb7020 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/name-empty-device-from-name-empty-filter.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/name-empty-device-from-name-empty-filter.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.window.js index 9c35f11062b..a063b611630 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/radio-not-present.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/radio-not-present.https.window.js index ba86b36f43d..b55d63c6ff4 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/radio-not-present.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/radio-not-present.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-iframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-iframe.https.window.js index 67aef5d4721..d3f3cf897ff 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-iframe.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-iframe.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.window.js index 72649d42e09..17a9da333a5 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js @@ -7,8 +5,9 @@ 'use strict'; const test_desc = 'Request device from a unique origin. ' + 'Should reject with SecurityError.'; -const expected = 'SecurityError: requestDevice() called from cross-origin ' + - 'iframe.'; +const expected = 'SecurityError: Failed to execute \'requestDevice\' on ' + + '\'Bluetooth\': Access to the feature "bluetooth" is disallowed by ' + + 'permissions policy.'; let iframe = document.createElement('iframe'); diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/same-device.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/same-device.https.window.js index 46bb9036a62..41a42cf4c8f 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/same-device.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/same-device.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/single-filter-single-service.https.window.js b/tests/wpt/web-platform-tests/bluetooth/requestDevice/single-filter-single-service.https.window.js index 3fd50d8a0ef..67afad0b930 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/single-filter-single-service.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/single-filter-single-service.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-fake-devices.js b/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-fake-devices.js index bc142aa4de8..b718ab579a1 100644 --- a/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-fake-devices.js +++ b/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-fake-devices.js @@ -135,6 +135,19 @@ const manufacturer2Data = new Uint8Array([3, 4]); const uuid1234Data = new Uint8Array([5, 6]); const uuid5678Data = new Uint8Array([7, 8]); const uuidABCDData = new Uint8Array([9, 10]); + +// TODO(crbug.com/1163207): Add the blocklist link. +// Fake manufacturer data following iBeacon format listed in +// https://en.wikipedia.org/wiki/IBeacon, which will be blocked according to [TBD blocklist link]. +const blocklistedManufacturerId = 0x4c; +const blocklistedManufacturerData = new Uint8Array([ + 0x02, 0x15, 0xb3, 0xeb, 0x8d, 0xb1, 0x30, 0xa5, 0x44, 0x8d, 0xb4, 0xac, + 0xfb, 0x68, 0xc9, 0x23, 0xa3, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xbf +]); +// Fake manufacturer data that is not in [TBD blocklist link]. +const nonBlocklistedManufacturerId = 0x0001; +const nonBlocklistedManufacturerData = new Uint8Array([1, 2]); + /** * An advertisement packet object that simulates a device that advertises * service and manufacturer data. @@ -368,8 +381,8 @@ async function setUpPreconnectedFakeDevice(setupOptionsOverride) { preconnectedDevice.fake_services.set(service, fake_service); } - // Request the device if options have been provided. - if (setupOptions.requestDeviceOptions) { + // Request the device if the request option isn't empty. + if (Object.keys(setupOptions.requestDeviceOptions).length !== 0) { preconnectedDevice.device = await requestDeviceWithTrustedClick(setupOptions.requestDeviceOptions); } @@ -383,38 +396,6 @@ async function setUpPreconnectedFakeDevice(setupOptionsOverride) { return preconnectedDevice; } -/** - * Deprecated: Use setUpPreconnectedFakeDevice() instead. - * Simulates a preconnected device with |address|, |name|, |manufacturerData| - * and |knownServiceUUIDs|. A preconnected device is a device that has been - * paired with the system previously. This can be done if, for example, the user - * pairs the device using the OS'es settings. - * TODO(https://crbug.com/1070816): Remove this method when all uses have been - * converted to using setUpPreconnectedFakeDevice(); - * @param {string} address The device MAC address. - * @param {string} name The device name. - * @param {Object>} manufacturerData A map of company - * identifier and manufacturer data to set up the fake with. - * @param {Array} knownServiceUUIDs An array of GATT service UUIDs to - * set up the fake with. - * @returns {Promise} The fake devices are initialized with the - * parameter values. - */ -async function setUpPreconnectedDevice({ - address = '00:00:00:00:00:00', - name = 'LE Device', - manufacturerData = {}, - knownServiceUUIDs = [] -}) { - await initializeFakeCentral({state: 'powered-on'}); - return await fake_central.simulatePreconnectedPeripheral({ - address: address, - name: name, - manufacturerData: manufacturerData, - knownServiceUUIDs: knownServiceUUIDs, - }); -} - /** Blocklisted GATT Device Helper Methods */ /** @type {FakeDeviceOptions} */ @@ -731,41 +712,45 @@ async function getHIDDevice(options) { /** Health Thermometer Bluetooth Device Helper Methods */ +/** @type {FakeDeviceOptions} */ +const healthTherometerFakeDeviceOptionsDefault = { + address: '09:09:09:09:09:09', + name: 'Health Thermometer', + manufacturerData: {0x0001: manufacturer1Data, 0x0002: manufacturer2Data}, + knownServiceUUIDs: ['generic_access', 'health_thermometer'], +}; + /** - * Returns a FakePeripheral that corresponds to a simulated pre-connected device + * Returns a FakeDevice that corresponds to a simulated pre-connected device * called 'Health Thermometer'. The device has two known serviceUUIDs: * 'generic_access' and 'health_thermometer' and some fake manufacturer data. - * @returns {Promise} The device fake initialized as a Health + * @returns {Promise} The device fake initialized as a Health * Thermometer device. */ -function setUpHealthThermometerDevice() { - return setUpPreconnectedDevice({ - address: '09:09:09:09:09:09', - name: 'Health Thermometer', - manufacturerData: {0x0001: manufacturer1Data, 0x0002: manufacturer2Data}, - knownServiceUUIDs: ['generic_access', 'health_thermometer'], - }); +async function setUpHealthThermometerDevice(setupOptionsOverride = {}) { + let setupOptions = createSetupOptions( + {fakeDeviceOptions: healthTherometerFakeDeviceOptionsDefault}, + setupOptionsOverride); + return await setUpPreconnectedFakeDevice(setupOptions); } /** - * Returns the same fake peripheral as setUpHealthThermometerDevice() except + * Returns the same fake device as setUpHealthThermometerDevice() except * that connecting to the peripheral will succeed. - * @returns {Promise} The device fake initialized as a + * @returns {Promise} The device fake initialized as a * connectable Health Thermometer device. */ async function setUpConnectableHealthThermometerDevice() { - let fake_peripheral = await setUpHealthThermometerDevice(); - await fake_peripheral.setNextGATTConnectionResponse({ - code: HCI_SUCCESS, - }); - return fake_peripheral; + let fake_device = await setUpHealthThermometerDevice( + {fakeDeviceOptions: {connectable: true}}); + return fake_device; } /** - * Populates a fake_peripheral with various fakes appropriate for a health + * Populates a fake_device with various fakes appropriate for a health * thermometer. This resolves to an associative array composed of the fakes, * including the |fake_peripheral|. - * @param {FakePeripheral} fake_peripheral The Bluetooth fake to populate GATT + * @param {FakeDevice} fake_device The Bluetooth fake to populate GATT * services, characteristics, and descriptors on. * @returns {Promise<{fake_peripheral: FakePeripheral, * fake_generic_access: FakeRemoteGATTService, @@ -778,12 +763,11 @@ async function setUpConnectableHealthThermometerDevice() { * passed into this method along with the fake GATT services, characteristics, * and descriptors added to it. */ -async function populateHealthThermometerFakes(fake_peripheral) { - let fake_generic_access = - await fake_peripheral.addFakeService({uuid: 'generic_access'}); - let fake_health_thermometer = await fake_peripheral.addFakeService({ - uuid: 'health_thermometer', - }); +async function populateHealthThermometerFakes(fake_device) { + let fake_peripheral = fake_device.fake_peripheral; + let fake_generic_access = fake_device.fake_services.get('generic_access'); + let fake_health_thermometer = + fake_device.fake_services.get('health_thermometer'); let fake_measurement_interval = await fake_health_thermometer.addFakeCharacteristic({ uuid: 'measurement_interval', @@ -838,9 +822,9 @@ async function populateHealthThermometerFakes(fake_peripheral) { */ async function getHealthThermometerDeviceWithServicesDiscovered(options) { let iframe = document.createElement('iframe'); - let fake_peripheral = await setUpConnectableHealthThermometerDevice(); - let fakes = populateHealthThermometerFakes(fake_peripheral); - await fake_peripheral.setNextGATTDiscoveryResponse({ + let fake_device = await setUpConnectableHealthThermometerDevice(); + let fakes = populateHealthThermometerFakes(fake_device); + await fake_device.fake_peripheral.setNextGATTDiscoveryResponse({ code: HCI_SUCCESS, }); await new Promise(resolve => { @@ -877,6 +861,56 @@ async function getHealthThermometerDeviceWithServicesDiscovered(options) { return Object.assign({device}, fakes); } +/** + * Returns the device requested and connected in the given iframe context and + * fakes from populateHealthThermometerFakes(). + * @param {object} iframe The iframe element set up by the caller document. + * @returns {Promise<{device: BluetoothDevice, fakes: { + * fake_peripheral: FakePeripheral, + * fake_generic_access: FakeRemoteGATTService, + * fake_health_thermometer: FakeRemoteGATTService, + * fake_measurement_interval: FakeRemoteGATTCharacteristic, + * fake_cccd: FakeRemoteGATTDescriptor, + * fake_user_description: FakeRemoteGATTDescriptor, + * fake_temperature_measurement: FakeRemoteGATTCharacteristic, + * fake_temperature_type: FakeRemoteGATTCharacteristic}}>} An object + * containing a requested BluetoothDevice and all of the GATT fake + * objects. + */ +async function getHealthThermometerDeviceFromIframe(iframe) { + const fake_device = await setUpConnectableHealthThermometerDevice(); + const fakes = await populateHealthThermometerFakes(fake_device); + await new Promise(resolve => { + let src = '/bluetooth/resources/health-thermometer-iframe.html'; + iframe.src = src; + document.body.appendChild(iframe); + iframe.addEventListener('load', resolve, {once: true}); + }); + await new Promise((resolve, reject) => { + callWithTrustedClick(() => { + iframe.contentWindow.postMessage( + { + type: 'RequestAndConnect', + options: {filters: [{services: [health_thermometer.name]}]} + }, + '*'); + }); + + function messageHandler(messageEvent) { + if (messageEvent.data == 'Connected') { + window.removeEventListener('message', messageHandler); + resolve(); + } else { + reject(new Error(`Unexpected message: ${messageEvent.data}`)); + } + } + window.addEventListener('message', messageHandler, {once: true}); + }); + const devices = await iframe.contentWindow.navigator.bluetooth.getDevices(); + assert_equals(devices.length, 1); + return Object.assign({device: devices[0]}, {fakes}); +} + /** * Similar to getHealthThermometerDevice() except the device * is not connected and thus its services have not been @@ -889,9 +923,7 @@ async function getHealthThermometerDeviceWithServicesDiscovered(options) { async function getDiscoveredHealthThermometerDevice(options = { filters: [{services: ['health_thermometer']}] }) { - let fake_peripheral = await setUpHealthThermometerDevice(); - let device = await requestDeviceWithTrustedClick(options); - return {device: device, fake_peripheral: fake_peripheral}; + return await setUpHealthThermometerDevice({requestDeviceOptions: options}); } /** @@ -903,13 +935,19 @@ async function getDiscoveredHealthThermometerDevice(options = { * containing a requested BluetoothDevice and its fake counter part. */ async function getEmptyHealthThermometerDevice(options) { - let result = await getDiscoveredHealthThermometerDevice(options); - await result.fake_peripheral.setNextGATTConnectionResponse( + let fake_device = await getDiscoveredHealthThermometerDevice(options); + let fake_generic_access = fake_device.fake_services.get('generic_access'); + let fake_health_thermometer = + fake_device.fake_services.get('health_thermometer'); + // Remove services that have been set up by previous steps. + await fake_generic_access.remove(); + await fake_health_thermometer.remove(); + await fake_device.fake_peripheral.setNextGATTConnectionResponse( {code: HCI_SUCCESS}); - await result.device.gatt.connect(); - await result.fake_peripheral.setNextGATTDiscoveryResponse( + await fake_device.device.gatt.connect(); + await fake_device.fake_peripheral.setNextGATTDiscoveryResponse( {code: HCI_SUCCESS}); - return result; + return fake_device; } /** @@ -956,13 +994,13 @@ async function getEmptyHealthThermometerService(options) { * objects. */ async function getConnectedHealthThermometerDevice(options) { - let result = await getDiscoveredHealthThermometerDevice(options); - await result.fake_peripheral.setNextGATTConnectionResponse({ + let fake_device = await getDiscoveredHealthThermometerDevice(options); + await fake_device.fake_peripheral.setNextGATTConnectionResponse({ code: HCI_SUCCESS, }); - let fakes = await populateHealthThermometerFakes(result.fake_peripheral); - await result.device.gatt.connect(); - return Object.assign({device: result.device}, fakes); + let fakes = await populateHealthThermometerFakes(fake_device); + await fake_device.device.gatt.connect(); + return Object.assign({device: fake_device.device}, fakes); } /** diff --git a/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-test.js b/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-test.js index f6e5fd0e4b5..fda52206b59 100644 --- a/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-test.js +++ b/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-test.js @@ -68,18 +68,24 @@ async function performChromiumSetup() { * @param {function{*}: Promise<*>} test_function The Web Bluetooth test to run. * @param {string} name The name or description of the test. * @param {object} properties An object containing extra options for the test. + * @param {Boolean} validate_response_consumed Whether to validate all response + * consumed or not. * @returns {Promise} Resolves if Web Bluetooth test ran successfully, or * rejects if the test failed. */ -function bluetooth_test(test_function, name, properties) { +function bluetooth_test( + test_function, name, properties, validate_response_consumed = true) { return promise_test(async (t) => { assert_implements(navigator.bluetooth, 'missing navigator.bluetooth'); // Trigger Chromium-specific setup. await performChromiumSetup(); - assert_implements(navigator.bluetooth.test, 'missing navigator.bluetooth.test'); + assert_implements( + navigator.bluetooth.test, 'missing navigator.bluetooth.test'); await test_function(t); - let consumed = await navigator.bluetooth.test.allResponsesConsumed(); - assert_true(consumed); + if (validate_response_consumed) { + let consumed = await navigator.bluetooth.test.allResponsesConsumed(); + assert_true(consumed); + } }, name, properties); } diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-discovery-timeout.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-discovery-timeout.js new file mode 100644 index 00000000000..718e290950d --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-discovery-timeout.js @@ -0,0 +1,42 @@ +'use strict'; +const test_desc = + 'Calls to FUNCTION_NAME when device disconnects and discovery' + + ' times out should reject promise rather than get stuck.'; +let device; + +bluetooth_test( + async (t) => { + let {device, fake_peripheral} = + await getConnectedHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }); + + await fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_CONNECTION_TIMEOUT, + }); + await Promise.all([ + fake_peripheral.simulateGATTDisconnection({ + code: HCI_SUCCESS, + }), + // Using promise_rejects_dom here rather than + // assert_promise_rejects_with_message as the race between + // simulateGATTDisconnection and getPrimaryServices might end up giving + // slightly different exception message (i.e has "Failed to execute ... + // on + // ... " prefix when disconnected state is reflected on the renderer + // side). The point of the test is no matter how race between them, the + // promise will be rejected as opposed to get stuck. + promise_rejects_dom(t, 'NetworkError', device.gatt.CALLS([ + getPrimaryService('health_thermometer') | getPrimaryServices() | + getPrimaryServices('health_thermometer')[UUID] + ])), + ]); + }, + test_desc, '', + // As specified above there is a race condition between + // simulateGATTDisconnection and getPrimaryServices, the artificial + // GATTDiscoveryResponse might not be consumed in case + // simulateGATTDisconnection happens first. As a result explicitly skip + // all response consumed validation at the end of the test. + /*validate_response_consumed=*/ false); diff --git a/tests/wpt/web-platform-tests/bluetooth/server/connect/connection-succeeds.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/connect/connection-succeeds.https.window.js index d78d261338c..90b62b9265b 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/connect/connection-succeeds.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/connect/connection-succeeds.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/connect/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/connect/detachedIframe.https.window.js new file mode 100644 index 00000000000..1acd1562228 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/connect/detachedIframe.https.window.js @@ -0,0 +1,26 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device} = await getHealthThermometerDeviceFromIframe(iframe); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await device.gatt.connect(); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'connect() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.window.js index 1a4ad4711ed..bae9ff78f34 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/connect/get-same-gatt-server.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/connect/get-same-gatt-server.https.window.js index a962d9d28af..59d7243a653 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/connect/get-same-gatt-server.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/connect/get-same-gatt-server.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/device-same-object.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/device-same-object.https.window.js index 1c10a34488b..f9a66d9b691 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/device-same-object.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/device-same-object.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/connect-disconnect-twice.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/connect-disconnect-twice.https.window.js index 4d832f2ecd8..5d9908df4c8 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/connect-disconnect-twice.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/connect-disconnect-twice.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/detach-gc.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/detach-gc.https.window.js index 7495c9deae6..4951fd07c5e 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/detach-gc.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/detach-gc.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/detachedIframe.https.window.js new file mode 100644 index 00000000000..7a8f2aa0d72 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/detachedIframe.https.window.js @@ -0,0 +1,27 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device} = await getHealthThermometerDeviceFromIframe(iframe); + await device.gatt.connect(); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await device.gatt.disconnect(); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'disconnect() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/disconnect-twice-in-a-row.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/disconnect-twice-in-a-row.https.window.js index 6f40bf3bc4e..acca9796d57 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/disconnect-twice-in-a-row.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/disconnect-twice-in-a-row.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/gc-detach.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/gc-detach.https.window.js index cb0899bbe2f..6f9055a73ac 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/gc-detach.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/gc-detach.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-discovery-timeout.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-discovery-timeout.https.window.js new file mode 100644 index 00000000000..d060e32ba7c --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-discovery-timeout.https.window.js @@ -0,0 +1,46 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js +// Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py +'use strict'; +const test_desc = + 'Calls to getPrimaryService when device disconnects and discovery' + + ' times out should reject promise rather than get stuck.'; +let device; + +bluetooth_test( + async (t) => { + let {device, fake_peripheral} = + await getConnectedHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }); + + await fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_CONNECTION_TIMEOUT, + }); + await Promise.all([ + fake_peripheral.simulateGATTDisconnection({ + code: HCI_SUCCESS, + }), + // Using promise_rejects_dom here rather than + // assert_promise_rejects_with_message as the race between + // simulateGATTDisconnection and getPrimaryServices might end up giving + // slightly different exception message (i.e has "Failed to execute ... + // on + // ... " prefix when disconnected state is reflected on the renderer + // side). The point of the test is no matter how race between them, the + // promise will be rejected as opposed to get stuck. + promise_rejects_dom( + t, 'NetworkError', + device.gatt.getPrimaryService('health_thermometer')), + ]); + }, + test_desc, '', + // As specified above there is a race condition between + // simulateGATTDisconnection and getPrimaryServices, the artificial + // GATTDiscoveryResponse might not be consumed in case + // simulateGATTDisconnection happens first. As a result explicitly skip + // all response consumed validation at the end of the test. + /*validate_response_consumed=*/ false); diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/service-found.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/service-found.https.window.js index fe700d6ef61..b8a930d10c7 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/service-found.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/service-found.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/two-iframes-from-same-origin.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/two-iframes-from-same-origin.https.window.js index cbb3c19a049..b7f23a14913 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/two-iframes-from-same-origin.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/two-iframes-from-same-origin.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.window.js index 5d57e9dc957..ccc913e5bfd 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services.https.window.js index 4dc78bfdd7b..ae6be909946 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/correct-services.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/correct-services.https.window.js index 4debf5dea4e..f3d883dd2ef 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/correct-services.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/correct-services.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-discovery-timeout-with-uuid.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-discovery-timeout-with-uuid.https.window.js new file mode 100644 index 00000000000..0eaf5d7119e --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-discovery-timeout-with-uuid.https.window.js @@ -0,0 +1,46 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js +// Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py +'use strict'; +const test_desc = + 'Calls to getPrimaryServices when device disconnects and discovery' + + ' times out should reject promise rather than get stuck.'; +let device; + +bluetooth_test( + async (t) => { + let {device, fake_peripheral} = + await getConnectedHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }); + + await fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_CONNECTION_TIMEOUT, + }); + await Promise.all([ + fake_peripheral.simulateGATTDisconnection({ + code: HCI_SUCCESS, + }), + // Using promise_rejects_dom here rather than + // assert_promise_rejects_with_message as the race between + // simulateGATTDisconnection and getPrimaryServices might end up giving + // slightly different exception message (i.e has "Failed to execute ... + // on + // ... " prefix when disconnected state is reflected on the renderer + // side). The point of the test is no matter how race between them, the + // promise will be rejected as opposed to get stuck. + promise_rejects_dom( + t, 'NetworkError', + device.gatt.getPrimaryServices('health_thermometer')), + ]); + }, + test_desc, '', + // As specified above there is a race condition between + // simulateGATTDisconnection and getPrimaryServices, the artificial + // GATTDiscoveryResponse might not be consumed in case + // simulateGATTDisconnection happens first. As a result explicitly skip + // all response consumed validation at the end of the test. + /*validate_response_consumed=*/ false); diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-discovery-timeout.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-discovery-timeout.https.window.js new file mode 100644 index 00000000000..c95b13a409b --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-discovery-timeout.https.window.js @@ -0,0 +1,45 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js +// Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py +'use strict'; +const test_desc = + 'Calls to getPrimaryServices when device disconnects and discovery' + + ' times out should reject promise rather than get stuck.'; +let device; + +bluetooth_test( + async (t) => { + let {device, fake_peripheral} = + await getConnectedHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }); + + await fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_CONNECTION_TIMEOUT, + }); + await Promise.all([ + fake_peripheral.simulateGATTDisconnection({ + code: HCI_SUCCESS, + }), + // Using promise_rejects_dom here rather than + // assert_promise_rejects_with_message as the race between + // simulateGATTDisconnection and getPrimaryServices might end up giving + // slightly different exception message (i.e has "Failed to execute ... + // on + // ... " prefix when disconnected state is reflected on the renderer + // side). The point of the test is no matter how race between them, the + // promise will be rejected as opposed to get stuck. + promise_rejects_dom( + t, 'NetworkError', device.gatt.getPrimaryServices()), + ]); + }, + test_desc, '', + // As specified above there is a race condition between + // simulateGATTDisconnection and getPrimaryServices, the artificial + // GATTDiscoveryResponse might not be consumed in case + // simulateGATTDisconnection happens first. As a result explicitly skip + // all response consumed validation at the end of the test. + /*validate_response_consumed=*/ false); diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found-with-uuid.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found-with-uuid.https.window.js index b18bda8247a..972e6a75caa 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found-with-uuid.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found-with-uuid.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found.https.window.js index 8098e8e8beb..46861175c60 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-not-found.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-not-found.https.window.js index 6dda95ed430..63503282411 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-not-found.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-not-found.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/service/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/service/detachedIframe.https.window.js new file mode 100644 index 00000000000..d83e03737dd --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/detachedIframe.https.window.js @@ -0,0 +1,25 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + const {device} = await getHealthThermometerDeviceFromIframe(iframe); + let error; + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await device.gatt.getPrimaryService(health_thermometer.name); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'getPrimaryService() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/service/device-same-from-2-services.https.window.js b/tests/wpt/web-platform-tests/bluetooth/service/device-same-from-2-services.https.window.js index 4870105d5cf..5b2ba310d35 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/device-same-from-2-services.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/service/device-same-from-2-services.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/service/device-same-object.https.window.js b/tests/wpt/web-platform-tests/bluetooth/service/device-same-object.https.window.js index cca0b344eae..97da769a9ea 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/device-same-object.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/service/device-same-object.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/characteristic-found.https.window.js b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/characteristic-found.https.window.js index 699f9938a5e..807852ae133 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/characteristic-found.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/characteristic-found.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/detachedIframe.https.window.js b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/detachedIframe.https.window.js new file mode 100644 index 00000000000..8bdf406273e --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/detachedIframe.https.window.js @@ -0,0 +1,30 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/bluetooth/resources/bluetooth-test.js +// META: script=/bluetooth/resources/bluetooth-fake-devices.js + +bluetooth_test(async () => { + let iframe = document.createElement('iframe'); + let error; + + const {device, fakes} = await getHealthThermometerDeviceFromIframe(iframe); + await fakes.fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_SUCCESS, + }); + let service = await device.gatt.getPrimaryService(health_thermometer.name); + + iframe.remove(); + // Set iframe to null to ensure that the GC cleans up as much as possible. + iframe = null; + await runGarbageCollection(); + + try { + await service.getCharacteristic(measurement_interval.alias); + } catch (e) { + // Cannot use promise_rejects_dom() because |e| is thrown from a different + // global. + error = e; + } + assert_not_equals(error, undefined); + assert_equals(error.name, 'NetworkError'); +}, 'getCharacteristic() rejects in a detached context'); diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/blocklisted-characteristics.https.window.js b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/blocklisted-characteristics.https.window.js index 7458c56a175..408943585ab 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/blocklisted-characteristics.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/blocklisted-characteristics.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found-with-uuid.https.window.js b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found-with-uuid.https.window.js index 8778807b93b..f11c69c92e7 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found-with-uuid.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found-with-uuid.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js @@ -8,12 +6,11 @@ const test_desc = 'Find characteristics with UUID in service.'; bluetooth_test(async () => { - let {device, fake_peripheral} = await getDiscoveredHealthThermometerDevice(); + let {device, fake_peripheral, fake_services} = await getDiscoveredHealthThermometerDevice(); // Setup a device with two measurement intervals. await fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS}); await device.gatt.connect(); - let fake_health_thermometer = - await fake_peripheral.addFakeService({uuid: 'health_thermometer'}); + let fake_health_thermometer = fake_services.get('health_thermometer'); await Promise.all([ fake_health_thermometer.addFakeCharacteristic({ uuid: 'measurement_interval', diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found.https.window.js b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found.https.window.js index f1b9ecd176a..3244dd3e173 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js @@ -8,12 +6,11 @@ const test_desc = 'Find all characteristics in a service.'; bluetooth_test(async () => { - let {device, fake_peripheral} = await getDiscoveredHealthThermometerDevice(); + let {device, fake_peripheral, fake_services} = await getDiscoveredHealthThermometerDevice(); // Setup a device with two measurement intervals. await fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS}); await device.gatt.connect(); - let fake_health_thermometer = - await fake_peripheral.addFakeService({uuid: 'health_thermometer'}); + let fake_health_thermometer = fake_services.get('health_thermometer'); await Promise.all([ fake_health_thermometer.addFakeCharacteristic({ uuid: 'measurement_interval', diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-not-found.https.window.js b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-not-found.https.window.js index 93048fce2a5..5b0c1896d64 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-not-found.https.window.js +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-not-found.https.window.js @@ -1,5 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: script=/bluetooth/resources/bluetooth-test.js diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-answers.sub.https.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-answers.sub.https.html.headers deleted file mode 100644 index 53fe8f54238..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-answers.sub.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Accept-CH: sec-ch-device-memory, device-memory, sec-ch-dpr, dpr, sec-ch-viewport-width, viewport-width, rtt, downlink, ect \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-cache-revalidation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-cache-revalidation.https.html deleted file mode 100644 index cc8453d5d3f..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-cache-revalidation.https.html +++ /dev/null @@ -1,56 +0,0 @@ - - -Tests Stale While Revalidate is not executed for fetch API - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-cache-revalidation.https.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-cache-revalidation.https.html.headers deleted file mode 100644 index 25df036544e..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-cache-revalidation.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Accept-CH: sec-ch-dpr,dpr,sec-ch-device-memory,device-memory,sec-ch-viewport-width,viewport-width,rtt,downlink,ect,sec-ch-ua,sec-ch-ua-arch,sec-ch-ua-platform,sec-ch-ua-platform-version,sec-ch-ua-model,sec-ch-prefers-color-scheme,sec-ch-viewport-height diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy-navigation.https.html deleted file mode 100644 index 4a9c0c8c141..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy-navigation.https.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy-navigation.https.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy-navigation.https.html.headers deleted file mode 100644 index f8ba9890998..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy-navigation.https.html.headers +++ /dev/null @@ -1,2 +0,0 @@ -Accept-CH: Sec-CH-Device-Memory, Device-Memory, Sec-CH-DPR, DPR, Sec-CH-Viewport-Width, Viewport-Width -Feature-Policy: ch-device-memory *; ch-dpr 'none'; ch-viewport-width 'self'; ch-ua 'self'; ch-ua-mobile 'none'; ch-prefers-color-scheme 'none' diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy.sub.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy.sub.https.html deleted file mode 100644 index 4d544a38f28..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy.sub.https.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy.sub.https.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy.sub.https.html.headers deleted file mode 100644 index e3a9458b5e7..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-feature-policy.sub.https.html.headers +++ /dev/null @@ -1,2 +0,0 @@ -Accept-CH: sec-ch-device-memory, device-memory, sec-ch-dpr, dpr, sec-ch-viewport-width, viewport-width, rtt, downlink, ect, mobile, sec-ch-prefers-color-scheme, sec-ch-viewport-height -Feature-Policy: ch-device-memory *; ch-dpr 'none'; ch-viewport-width 'self'; ch-mobile; ch-prefers-color-scheme 'none'; ch-viewport-height 'none' diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-no-feature-policy-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-no-feature-policy-navigation.https.html deleted file mode 100644 index 42791a3b770..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-no-feature-policy-navigation.https.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-no-feature-policy-navigation.https.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-no-feature-policy-navigation.https.html.headers deleted file mode 100644 index 8296ffda408..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-no-feature-policy-navigation.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Accept-CH: Sec-CH-Device-Memory, Device-Memory, Sec-CH-DPR, DPR, Sec-CH-Viewport-Width, Viewport-Width diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-no-feature-policy.sub.https.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-no-feature-policy.sub.https.html.headers deleted file mode 100644 index 52ac06ab568..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-no-feature-policy.sub.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Accept-CH: sec-ch-device-memory, device-memory, sec-ch-dpr, dpr, sec-ch-viewport-width, viewport-width, rtt, downlink, ect diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-non-secure.http.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-non-secure.http.html.headers deleted file mode 100644 index 53fe8f54238..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-non-secure.http.html.headers +++ /dev/null @@ -1 +0,0 @@ -Accept-CH: sec-ch-device-memory, device-memory, sec-ch-dpr, dpr, sec-ch-viewport-width, viewport-width, rtt, downlink, ect \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-iframe-not-setting-other-origins.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-iframe-not-setting-other-origins.https.html new file mode 100644 index 00000000000..9c4e9cf506b --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-iframe-not-setting-other-origins.https.html @@ -0,0 +1,19 @@ + + +Meta cross origin iframe not setting other origins + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-iframe-not-setting-own-origin.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-iframe-not-setting-own-origin.https.html new file mode 100644 index 00000000000..26e30a40e7b --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-iframe-not-setting-own-origin.https.html @@ -0,0 +1,19 @@ + + +Meta cross origin iframe not setting own origin + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-navigation.https.html new file mode 100644 index 00000000000..eb2292b22f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-navigation.https.html @@ -0,0 +1,19 @@ + + +Meta cross origin navigation + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-subresource.https.html new file mode 100644 index 00000000000..31775cbea27 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-cross-origin-subresource.https.html @@ -0,0 +1,19 @@ + + +Meta cross origin subresource + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-iframe-with-hints.https.sub.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-iframe-with-hints.https.sub.html new file mode 100644 index 00000000000..0a2c4897bc5 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-iframe-with-hints.https.sub.html @@ -0,0 +1,18 @@ + + + +Meta-equiv Delegate-CH cross origin iframe with hints + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-iframe-without-hints.https.sub.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-iframe-without-hints.https.sub.html new file mode 100644 index 00000000000..b79a941237a --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-iframe-without-hints.https.sub.html @@ -0,0 +1,18 @@ + + + +Meta-equiv Delegate-CH cross origin iframe without hints + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-subresource-with-hints.https.sub.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-subresource-with-hints.https.sub.html new file mode 100644 index 00000000000..bd39cbaff42 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-subresource-with-hints.https.sub.html @@ -0,0 +1,18 @@ + + + +Meta-equiv Delegate-CH cross origin subresource with hints + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-subresource-without-hints.https.sub.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-subresource-without-hints.https.sub.html new file mode 100644 index 00000000000..20a3357fb67 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-subresource-without-hints.https.sub.html @@ -0,0 +1,18 @@ + + + +Meta-equiv Delegate-CH cross origin subresource without hints + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-same-origin-iframe.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-same-origin-iframe.https.html new file mode 100644 index 00000000000..06a68ce3bc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-same-origin-iframe.https.html @@ -0,0 +1,19 @@ + + +Meta same origin iframe + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-same-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-same-origin-navigation.https.html new file mode 100644 index 00000000000..10fb120fc21 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-same-origin-navigation.https.html @@ -0,0 +1,19 @@ + + +Meta same origin navigation + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-same-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-same-origin-subresource.https.html new file mode 100644 index 00000000000..b4374476c6b --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-equiv-same-origin-subresource.https.html @@ -0,0 +1,19 @@ + + +Meta same origin subresource + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-not-setting-other-origins.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-not-setting-other-origins.https.html deleted file mode 100644 index 9c263ee789d..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-not-setting-other-origins.https.html +++ /dev/null @@ -1,19 +0,0 @@ - - -Meta-name cross origin iframe not setting other origins - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-not-setting-own-origin.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-not-setting-own-origin.https.html deleted file mode 100644 index 1e8d1b6a631..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-not-setting-own-origin.https.html +++ /dev/null @@ -1,19 +0,0 @@ - - -Meta-name cross origin iframe not setting own origin - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-with-hints.https.sub.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-with-hints.https.sub.html deleted file mode 100644 index f74e4f4c34b..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-with-hints.https.sub.html +++ /dev/null @@ -1,18 +0,0 @@ - - - -Meta-name cross origin iframe with hints - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-without-hints.https.sub.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-without-hints.https.sub.html deleted file mode 100644 index bb9ced2c869..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-iframe-without-hints.https.sub.html +++ /dev/null @@ -1,18 +0,0 @@ - - - -Meta-name cross origin iframe without hints - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-navigation.https.html deleted file mode 100644 index d5a46ed2d11..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-navigation.https.html +++ /dev/null @@ -1,19 +0,0 @@ - - -Meta-name cross origin navigation - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-subresource-with-hints.https.sub.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-subresource-with-hints.https.sub.html deleted file mode 100644 index 67c0727eb79..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-subresource-with-hints.https.sub.html +++ /dev/null @@ -1,18 +0,0 @@ - - - -Meta-name cross origin subresource with hints - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-subresource-without-hints.https.sub.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-subresource-without-hints.https.sub.html deleted file mode 100644 index a96ec4d7946..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-subresource-without-hints.https.sub.html +++ /dev/null @@ -1,18 +0,0 @@ - - - -Meta-name cross origin subresource without hints - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-subresource.https.html deleted file mode 100644 index f29a4bec458..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-cross-origin-subresource.https.html +++ /dev/null @@ -1,19 +0,0 @@ - - -Meta-name cross origin subresource - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-same-origin-iframe.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-same-origin-iframe.https.html deleted file mode 100644 index 73201072084..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-same-origin-iframe.https.html +++ /dev/null @@ -1,19 +0,0 @@ - - -Meta-name same origin iframe - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-same-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-same-origin-navigation.https.html deleted file mode 100644 index 6e9dc706fef..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-same-origin-navigation.https.html +++ /dev/null @@ -1,19 +0,0 @@ - - -Meta-name same origin navigation - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-same-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-same-origin-subresource.https.html deleted file mode 100644 index 98b41674e9f..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/meta-name-same-origin-subresource.https.html +++ /dev/null @@ -1,19 +0,0 @@ - - -Meta-name same origin subresource - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch-test.js b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch-test.js index e8438829d88..b0bf39250c3 100644 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch-test.js +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch-test.js @@ -3,7 +3,7 @@ const accept = "/client-hints/accept-ch-stickiness/resources/accept-ch.html"; const accept_blank = "/client-hints/accept-ch-stickiness/resources/accept-ch-blank.html"; const no_accept = "/client-hints/accept-ch-stickiness/resources/no-accept-ch.html"; const httpequiv_accept = "/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html"; -const metaname_accept = "/client-hints/accept-ch-stickiness/resources/meta-name-accept-ch.html"; +const metaequiv_delegate = "/client-hints/accept-ch-stickiness/resources/meta-equiv-delegate-ch.html"; const expect = "/client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html" const do_not_expect = "/client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html" diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers index a0077c0577f..955424f246f 100644 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers @@ -1 +1,2 @@ Clear-Site-Data: "*" +Access-Control-Allow-Origin: * \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/meta-equiv-delegate-ch.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/meta-equiv-delegate-ch.html new file mode 100644 index 00000000000..7d7c4ccdf7d --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/meta-equiv-delegate-ch.html @@ -0,0 +1,9 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/meta-name-accept-ch.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/meta-equiv-delegate-ch.html.headers similarity index 100% rename from tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/meta-name-accept-ch.html.headers rename to tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/meta-equiv-delegate-ch.html.headers diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/meta-name-accept-ch.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/meta-name-accept-ch.html deleted file mode 100644 index 525faaae0d5..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/meta-name-accept-ch.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch/__dir__.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch/__dir__.headers new file mode 100644 index 00000000000..f233c2e9d64 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch/__dir__.headers @@ -0,0 +1 @@ +Accept-CH: device-memory, dpr, width, viewport-width, rtt, downlink, ect, sec-ch-ua, sec-ch-ua-arch, sec-ch-ua-platform, sec-ch-ua-model, sec-ch-ua-mobile, sec-ch-ua-full-version, sec-ch-ua-platform-version, sec-ch-prefers-color-scheme, sec-ch-prefers-reduced-motion, sec-ch-ua-bitness, sec-ch-viewport-height, sec-ch-device-memory, sec-ch-dpr, sec-ch-width, sec-ch-viewport-width, sec-ch-ua-full-version-list, sec-ch-ua-wow64 diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-answers.sub.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch/answers.sub.https.html similarity index 100% rename from tests/wpt/web-platform-tests/client-hints/accept-ch-answers.sub.https.html rename to tests/wpt/web-platform-tests/client-hints/accept-ch/answers.sub.https.html diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch/cache-revalidation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch/cache-revalidation.https.html new file mode 100644 index 00000000000..5ed6f074a7a --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch/cache-revalidation.https.html @@ -0,0 +1,36 @@ + + +Tests Stale While Revalidate is not executed for fetch API + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/__dir__.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/__dir__.headers new file mode 100644 index 00000000000..f233c2e9d64 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/__dir__.headers @@ -0,0 +1 @@ +Accept-CH: device-memory, dpr, width, viewport-width, rtt, downlink, ect, sec-ch-ua, sec-ch-ua-arch, sec-ch-ua-platform, sec-ch-ua-model, sec-ch-ua-mobile, sec-ch-ua-full-version, sec-ch-ua-platform-version, sec-ch-prefers-color-scheme, sec-ch-prefers-reduced-motion, sec-ch-ua-bitness, sec-ch-viewport-height, sec-ch-device-memory, sec-ch-dpr, sec-ch-width, sec-ch-viewport-width, sec-ch-ua-full-version-list, sec-ch-ua-wow64 diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/feature-policy.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/feature-policy.https.html new file mode 100644 index 00000000000..90a27280c19 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/feature-policy.https.html @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/feature-policy.https.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/feature-policy.https.html.headers new file mode 100644 index 00000000000..8e976388ecc --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/feature-policy.https.html.headers @@ -0,0 +1 @@ +Feature-Policy: ch-device-memory *; ch-dpr 'none'; ch-viewport-width 'self'; ch-ua 'self'; ch-ua-mobile 'none' diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/no-feature-policy.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/no-feature-policy.https.html new file mode 100644 index 00000000000..02458f3116a --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy-navigation/no-feature-policy.https.html @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy.sub.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy.sub.https.html new file mode 100644 index 00000000000..e1aa3ad68f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy.sub.https.html @@ -0,0 +1,77 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy.sub.https.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy.sub.https.html.headers new file mode 100644 index 00000000000..78bbb8c8729 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch/feature-policy.sub.https.html.headers @@ -0,0 +1 @@ +Feature-Policy: ch-device-memory *; ch-dpr 'none'; ch-viewport-width 'self'; ch-mobile; ch-prefers-color-scheme 'none'; ch-prefers-reduced-motion 'none'; ch-viewport-height 'none' diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch/meta/resource-in-markup-accept-ch.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch/meta/resource-in-markup-accept-ch.https.html new file mode 100644 index 00000000000..c9b98daccf8 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch/meta/resource-in-markup-accept-ch.https.html @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch/meta/resource-in-markup-delegate-ch.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch/meta/resource-in-markup-delegate-ch.https.html new file mode 100644 index 00000000000..751f07f2782 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch/meta/resource-in-markup-delegate-ch.https.html @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-no-feature-policy.sub.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch/no-feature-policy.sub.https.html similarity index 100% rename from tests/wpt/web-platform-tests/client-hints/accept-ch-no-feature-policy.sub.https.html rename to tests/wpt/web-platform-tests/client-hints/accept-ch/no-feature-policy.sub.https.html diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-non-secure.http.html b/tests/wpt/web-platform-tests/client-hints/accept-ch/non-secure.http.html similarity index 100% rename from tests/wpt/web-platform-tests/client-hints/accept-ch-non-secure.http.html rename to tests/wpt/web-platform-tests/client-hints/accept-ch/non-secure.http.html diff --git a/tests/wpt/web-platform-tests/client-hints/http-equiv-accept-ch-iframe.https.html b/tests/wpt/web-platform-tests/client-hints/http-equiv-accept-ch-iframe.https.html new file mode 100644 index 00000000000..4bde8ebc2d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/http-equiv-accept-ch-iframe.https.html @@ -0,0 +1,26 @@ + + +Accept-CH http-equiv iframe test + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/http-equiv-accept-ch-merge.https.html b/tests/wpt/web-platform-tests/client-hints/http-equiv-accept-ch-merge.https.html index 4f31e510c17..832c0578874 100644 --- a/tests/wpt/web-platform-tests/client-hints/http-equiv-accept-ch-merge.https.html +++ b/tests/wpt/web-platform-tests/client-hints/http-equiv-accept-ch-merge.https.html @@ -2,6 +2,7 @@ + @@ -38,6 +39,7 @@ promise_test(t => { assert_in_array(r.headers.get("ect-received"), ["slow-2g", "2g", "3g", "4g"], 'ect-received is unexpected'); assert_true(r.headers.has("prefers-color-scheme-received"), "prefers-color-scheme-received"); + assert_true(r.headers.has("prefers-reduced-motion-received"), "prefers-reduced-motion-received"); }); }, "Accept-CH header test"); diff --git a/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-iframe.https.html b/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-iframe.https.html new file mode 100644 index 00000000000..2ce9c63c18a --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-iframe.https.html @@ -0,0 +1,26 @@ + + + +Delegate-CH meta-equiv iframe test + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-injection.https.html b/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-injection.https.html new file mode 100644 index 00000000000..b9e4a334fca --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-injection.https.html @@ -0,0 +1,42 @@ + + + + Delegate-CH meta-equiv injection test + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-malformed-header.https.html b/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-malformed-header.https.html new file mode 100644 index 00000000000..a4b91fd99bc --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-malformed-header.https.html @@ -0,0 +1,32 @@ + + + +Delegate-CH malformed meta-equiv test + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-merge.https.html b/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-merge.https.html new file mode 100644 index 00000000000..d8dbc9f96c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-merge.https.html @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-merge.https.html.headers b/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-merge.https.html.headers similarity index 100% rename from tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-merge.https.html.headers rename to tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-merge.https.html.headers diff --git a/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-non-secure.http.html b/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-non-secure.http.html new file mode 100644 index 00000000000..1fbe62c281e --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/meta-equiv-delegate-ch-non-secure.http.html @@ -0,0 +1,40 @@ + + + +Delegate-CH meta-equiv insecure transport test + + + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-injection.https.html b/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-injection.https.html deleted file mode 100644 index 0467e309202..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-injection.https.html +++ /dev/null @@ -1,41 +0,0 @@ - - - Accept-CH meta-name injection test - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-malformed-header.https.html b/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-malformed-header.https.html deleted file mode 100644 index 54362de04ce..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-malformed-header.https.html +++ /dev/null @@ -1,31 +0,0 @@ - - -Accept-CH malformed meta-name test - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-merge.https.html b/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-merge.https.html deleted file mode 100644 index 143a5eb7d35..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-merge.https.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-non-secure.http.html b/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-non-secure.http.html deleted file mode 100644 index 4b763ead523..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/meta-name-accept-ch-non-secure.http.html +++ /dev/null @@ -1,39 +0,0 @@ - - -Accept-CH meta-name insecure transport test - - - - - - - diff --git a/tests/wpt/web-platform-tests/client-hints/resources/clienthintslist.py b/tests/wpt/web-platform-tests/client-hints/resources/clienthintslist.py new file mode 100644 index 00000000000..3d1f7caf468 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/resources/clienthintslist.py @@ -0,0 +1,40 @@ +def client_hints_list(): + return [b"device-memory", + b"dpr", + # b"width", (Only available for images) + b"viewport-width", + b"rtt", + b"downlink", + b"ect", + b"sec-ch-ua", + b"sec-ch-ua-arch", + b"sec-ch-ua-platform", + b"sec-ch-ua-model", + b"sec-ch-ua-mobile", + b"sec-ch-ua-full-version", + b"sec-ch-ua-platform-version", + b"sec-ch-prefers-color-scheme", + b"sec-ch-prefers-reduced-motion", + b"sec-ch-ua-bitness", + b"sec-ch-viewport-height", + b"sec-ch-device-memory", + b"sec-ch-dpr", + # b"sec-ch-width", (Only available for images) + b"sec-ch-viewport-width", + b"sec-ch-ua-full-version-list", + b"sec-ch-ua-wow64", + ] + +def client_hints_full_list(): + return client_hints_list() + [b"width", b"sec-ch-width"] + +def client_hints_ua_list(): + return [b"sec-ch-ua", + b"sec-ch-ua-arch", + b"sec-ch-ua-platform", + b"sec-ch-ua-platform-version", + b"sec-ch-ua-model", + b"sec-ch-ua-full-version", + b"sec-ch-ua-full-version-list", + b"sec-ch-ua-wow64", + ] \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/resources/echo-client-hints-received.py b/tests/wpt/web-platform-tests/client-hints/resources/echo-client-hints-received.py index 5b13e5b0683..190cd862892 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/echo-client-hints-received.py +++ b/tests/wpt/web-platform-tests/client-hints/resources/echo-client-hints-received.py @@ -32,3 +32,5 @@ def main(request, response): response.headers.set(b"mobile-received", request.headers.get(b"sec-ch-ua-mobile")) if b"sec-ch-prefers-color-scheme" in request.headers: response.headers.set(b"prefers-color-scheme-received", request.headers.get(b"sec-ch-prefers-color-scheme")) + if b"sec-ch-prefers-reduced-motion" in request.headers: + response.headers.set(b"prefers-reduced-motion-received", request.headers.get(b"sec-ch-prefers-reduced-motion")) diff --git a/tests/wpt/web-platform-tests/client-hints/resources/echo-ua-client-hints-received.py b/tests/wpt/web-platform-tests/client-hints/resources/echo-ua-client-hints-received.py index ea295ab210a..7982421d07b 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/echo-ua-client-hints-received.py +++ b/tests/wpt/web-platform-tests/client-hints/resources/echo-ua-client-hints-received.py @@ -1,3 +1,6 @@ +import importlib +client_hints_ua_list = importlib.import_module("client-hints.resources.clienthintslist").client_hints_ua_list + def main(request, response): """ Simple handler that sets a response header based on which client hint @@ -8,16 +11,7 @@ def main(request, response): response.headers.append(b"Access-Control-Allow-Headers", b"*") response.headers.append(b"Access-Control-Expose-Headers", b"*") - client_hint_headers = [ - b"sec-ch-ua", - b"sec-ch-ua-arch", - b"sec-ch-ua-platform", - b"sec-ch-ua-platform-version", - b"sec-ch-ua-model", - b"sec-ch-ua-full-version", - b"sec-ch-ua-full-version-list", - ] - + client_hint_headers = client_hints_ua_list() request_client_hints = {i: request.headers.get(i) for i in client_hint_headers} for header in client_hint_headers: diff --git a/tests/wpt/web-platform-tests/client-hints/resources/expect-client-hints-headers-iframe.py b/tests/wpt/web-platform-tests/client-hints/resources/expect-client-hints-headers-iframe.py index 810373eca12..6a1218264ef 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/expect-client-hints-headers-iframe.py +++ b/tests/wpt/web-platform-tests/client-hints/resources/expect-client-hints-headers-iframe.py @@ -1,15 +1,17 @@ from wptserve.utils import isomorphic_decode +import importlib +client_hints_list = importlib.import_module("client-hints.resources.clienthintslist").client_hints_list + def main(request, response): """ Simple handler that returns an HTML response that passes when the required Client Hints are received as request headers. """ - values = [b"Sec-CH-Device-Memory", b"Device-Memory", b"Sec-CH-DPR", b"DPR", b"Sec-CH-Viewport-Width", b"Viewport-Width", b"Sec-CH-UA", b"Sec-CH-UA-Mobile"] result = u"PASS" log = u"" - for value in values: + for value in client_hints_list(): should = (request.GET[value.lower()] == b"true") present = request.headers.get(value.lower()) or request.headers.get(value) if present: diff --git a/tests/wpt/web-platform-tests/client-hints/resources/export.js b/tests/wpt/web-platform-tests/client-hints/resources/export.js new file mode 100644 index 00000000000..68cea03ce4b --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/resources/export.js @@ -0,0 +1,49 @@ +const client_hints_list = [ + "device-memory", + "dpr", + // "width", (only available for images) + "viewport-width", + "rtt", + "downlink", + "ect", + "sec-ch-ua", + "sec-ch-ua-arch", + "sec-ch-ua-platform", + "sec-ch-ua-model", + "sec-ch-ua-mobile", + "sec-ch-ua-full-version", + "sec-ch-ua-platform-version", + "sec-ch-prefers-color-scheme", + "sec-ch-prefers-reduced-motion", + "sec-ch-ua-bitness", + "sec-ch-viewport-height", + "sec-ch-device-memory", + "sec-ch-dpr", + // "sec-ch-width", (Only available for images) + "sec-ch-viewport-width", + "sec-ch-ua-full-version-list", + "sec-ch-ua-wow64", +]; + +const client_hints_full_list = client_hints_list.concat(["width", "sec-ch-width"]) + +const default_on_client_hints = [ + "sec-ch-ua", + "sec-ch-ua-mobile", + "sec-ch-ua-platform", +]; + +const iframe_src = + "/client-hints/resources/expect-client-hints-headers-iframe.py?"; + +const expect_iframe_no_hints = iframe_src + + client_hints_list.map((e) => { + if(default_on_client_hints.includes(e)) { + return e+"=true"; + } else { + return e+"=false"; + } + }).join("&"); + +const expect_iframe_hints = iframe_src + + client_hints_list.map(e => e+"=true").join("&"); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/resources/feature-policy-navigation.js b/tests/wpt/web-platform-tests/client-hints/resources/feature-policy-navigation.js index b8d6fd6c44d..23782fdfdbb 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/feature-policy-navigation.js +++ b/tests/wpt/web-platform-tests/client-hints/resources/feature-policy-navigation.js @@ -1,4 +1,55 @@ -const test_frame = (origin, hints, allow, message, url = "/client-hints/resources/expect-client-hints-headers-iframe.py?") => { +const meta_name_enabled = [ + "sec-ch-device-memory", + "device-memory", + "sec-ch-dpr", + "dpr", + "sec-ch-viewport-width", + "viewport-width", + "sec-ch-ua", + "sec-ch-ua-mobile", + "sec-ch-ua-platform", +]; + +const meta_name_client_hints = iframe_src + + client_hints_list.map((e) => { + if(meta_name_enabled.includes(e)) { + return e+"=true"; + } else { + return e+"=false"; + } + }).join("&"); + +const cross_origin_enabled = [ + "device-memory", + "sec-ch-device-memory", + "sec-ch-ua-platform", +]; + +const cross_origin_client_hints = iframe_src + + client_hints_list.map((e) => { + if(cross_origin_enabled.includes(e)) { + return e+"=true"; + } else { + return e+"=false"; + } + }).join("&"); + +const same_origin_disabled = [ + "dpr", + "sec-ch-dpr", + "sec-ch-ua-mobile", +]; + +const same_origin_client_hints = iframe_src + + client_hints_list.map((e) => { + if(same_origin_disabled.includes(e)) { + return e+"=false"; + } else { + return e+"=true"; + } + }).join("&"); + +const test_frame = (origin, url, allow, message) => { promise_test(() => { return new Promise((resolve, reject) => { let frame = document.createElement('iframe'); @@ -15,7 +66,7 @@ const test_frame = (origin, hints, allow, message, url = "/client-hints/resource document.body.appendChild(frame); // Writing to |frame.src| triggers the navigation, so // everything else need to happen first. - frame.src = get_host_info()[origin] + url + hints; + frame.src = get_host_info()[origin] + url; }); }, message); } diff --git a/tests/wpt/web-platform-tests/client-hints/resources/script-set-dpr-header.py b/tests/wpt/web-platform-tests/client-hints/resources/script-set-dpr-header.py new file mode 100644 index 00000000000..9a65886ed87 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/resources/script-set-dpr-header.py @@ -0,0 +1,4 @@ +def main(request, response): + headers = [(b"Content-Type", b"text/javascript")] + body = u'dprHeader = "%s";' % request.headers.get(b'sec-ch-dpr', '') + return 200, headers, body diff --git a/tests/wpt/web-platform-tests/client-hints/resources/stale-echo-client-hints.py b/tests/wpt/web-platform-tests/client-hints/resources/stale-echo-client-hints.py index bdf7253c840..e9832273b80 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/stale-echo-client-hints.py +++ b/tests/wpt/web-platform-tests/client-hints/resources/stale-echo-client-hints.py @@ -2,33 +2,15 @@ import random import string from wptserve.utils import isomorphic_encode +import importlib +client_hints_full_list = importlib.import_module("client-hints.resources.clienthintslist").client_hints_full_list def id_token(): letters = string.ascii_lowercase return u''.join(random.choice(letters) for i in range(20)) def main(request, response): - client_hint_headers = [ - b"sec-ch-device-memory", - b"device-memory", - b"sec-ch-dpr", - b"dpr", - b"sec-ch-width", - b"width", - b"sec-ch-viewport-width", - b"viewport-width", - b"rtt", - b"downlink", - b"ect", - b"sec-ch-ua", - b"sec-ch-ua-arch", - b"sec-ch-ua-platform", - b"sec-ch-ua-platform-version", - b"sec-ch-ua-model", - b"sec-ch-prefers-color-scheme", - b"sec-ch-viewport-height", - ] - + client_hint_headers = client_hints_full_list() client_hints_curr = {i:request.headers.get(i) for i in client_hint_headers} token = request.GET.first(b"token", None) diff --git a/tests/wpt/web-platform-tests/client-hints/resources/viewport-frame.py b/tests/wpt/web-platform-tests/client-hints/resources/viewport-frame.py new file mode 100644 index 00000000000..67b592c71a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/resources/viewport-frame.py @@ -0,0 +1,25 @@ +def main(request, response): + """ + postMessage with Viewport-Width and Sec-Ch-Viewport-Height headers + """ + + if b"sec-ch-viewport-width" in request.headers: + width = request.headers["sec-ch-viewport-width"] + else: + width = b"FAIL" + + if b"sec-ch-viewport-height" in request.headers: + height = request.headers["sec-ch-viewport-height"] + else: + height = b"FAIL" + + headers = [(b"Content-Type", b"text/html"), + (b"Access-Control-Allow-Origin", b"*")] + content = b''' + +''' % (width, height) + + return 200, headers, content diff --git a/tests/wpt/web-platform-tests/client-hints/resources/viewport-measurement.html b/tests/wpt/web-platform-tests/client-hints/resources/viewport-measurement.html new file mode 100644 index 00000000000..2ac9043af74 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/resources/viewport-measurement.html @@ -0,0 +1,8 @@ + + diff --git a/tests/wpt/web-platform-tests/client-hints/resources/viewport.py b/tests/wpt/web-platform-tests/client-hints/resources/viewport.py new file mode 100644 index 00000000000..d5ab6d4eee4 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/resources/viewport.py @@ -0,0 +1,13 @@ +def main(request, response): + """ + Reflect Sec-Ch-Viewport-Width and Sec-Ch-Viewport-Height headers + """ + + if b"sec-ch-viewport-width" in request.headers and b"sec-ch-viewport-height" in request.headers: + result = request.headers["sec-ch-viewport-width"] + b"," + request.headers["sec-ch-viewport-height"] + else: + result = u"FAIL" + + headers = [(b"Content-Type", b"text/html"), + (b"Access-Control-Allow-Origin", b"*")] + return 200, headers, result diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/__dir__.headers b/tests/wpt/web-platform-tests/client-hints/sandbox/__dir__.headers new file mode 100644 index 00000000000..f233c2e9d64 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/__dir__.headers @@ -0,0 +1 @@ +Accept-CH: device-memory, dpr, width, viewport-width, rtt, downlink, ect, sec-ch-ua, sec-ch-ua-arch, sec-ch-ua-platform, sec-ch-ua-model, sec-ch-ua-mobile, sec-ch-ua-full-version, sec-ch-ua-platform-version, sec-ch-prefers-color-scheme, sec-ch-prefers-reduced-motion, sec-ch-ua-bitness, sec-ch-viewport-height, sec-ch-device-memory, sec-ch-dpr, sec-ch-width, sec-ch-viewport-width, sec-ch-ua-full-version-list, sec-ch-ua-wow64 diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp-same-origin.https.html b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp-same-origin.https.html new file mode 100644 index 00000000000..a5f094af9d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp-same-origin.https.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp-same-origin.https.html.headers b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp-same-origin.https.html.headers new file mode 100644 index 00000000000..895eb519939 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp-same-origin.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: sandbox allow-scripts allow-same-origin \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp.https.html b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp.https.html new file mode 100644 index 00000000000..fb63c393fd1 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp.https.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp.https.html.headers b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp.https.html.headers new file mode 100644 index 00000000000..c7e4e7cc5bd --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-csp.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: sandbox allow-scripts \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-iframe-popups.https.html b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-iframe-popups.https.html new file mode 100644 index 00000000000..9cbf6006c80 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-iframe-popups.https.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-popups-escape-sandbox.https.html b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-popups-escape-sandbox.https.html new file mode 100644 index 00000000000..35a94b537d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-popups-escape-sandbox.https.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-popups.https.html b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-popups.https.html new file mode 100644 index 00000000000..3d7bc6eb809 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-popups.https.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-same-origin.https.html b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-same-origin.https.html new file mode 100644 index 00000000000..0ea6a8ed534 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe-same-origin.https.html @@ -0,0 +1,17 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/iframe.https.html b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe.https.html new file mode 100644 index 00000000000..f37b91011b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/iframe.https.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/resources/embedded-popup-expect-hints.html b/tests/wpt/web-platform-tests/client-hints/sandbox/resources/embedded-popup-expect-hints.html new file mode 100644 index 00000000000..6cd5f0a29ee --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/resources/embedded-popup-expect-hints.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/resources/embedded-popup-expect-no-hints.html b/tests/wpt/web-platform-tests/client-hints/sandbox/resources/embedded-popup-expect-no-hints.html new file mode 100644 index 00000000000..46dbb7f2365 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/resources/embedded-popup-expect-no-hints.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/client-hints/sandbox/resources/iframe-with-embedded-popup-expect-no-hints.html b/tests/wpt/web-platform-tests/client-hints/sandbox/resources/iframe-with-embedded-popup-expect-no-hints.html new file mode 100644 index 00000000000..21efd76180c --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/sandbox/resources/iframe-with-embedded-popup-expect-no-hints.html @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/client-hints/viewport-size/viewport-size-iframe.https.html.headers b/tests/wpt/web-platform-tests/client-hints/viewport-size/viewport-size-iframe.https.html.headers new file mode 100644 index 00000000000..76c3cb886ca --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/viewport-size/viewport-size-iframe.https.html.headers @@ -0,0 +1 @@ +Accept-CH: Sec-Ch-Viewport-Width,Sec-Ch-Viewport-Height diff --git a/tests/wpt/web-platform-tests/client-hints/viewport-size/viewport-size-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/viewport-size/viewport-size-subresource.https.html new file mode 100644 index 00000000000..ec22a4bdf3c --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/viewport-size/viewport-size-subresource.https.html @@ -0,0 +1,16 @@ + + + + + + + + + - diff --git a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-tentative.https.sub.html b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-tentative.https.sub.html index 15d26842616..e812854b4c7 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-tentative.https.sub.html @@ -1,17 +1,19 @@ - +Body needed for test_driver.click() + - diff --git a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-cross-origin-tentative.https.sub.html b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-cross-origin-tentative.https.sub.html index 1b6f4929a19..c371ea3b41c 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-cross-origin-tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-cross-origin-tentative.https.sub.html @@ -1,10 +1,11 @@ - +Body needed for test_driver.click() + - diff --git a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy.tentative.https.sub.html b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy.tentative.https.sub.html index f8c5bcb129f..552183cc67d 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy.tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy.tentative.https.sub.html @@ -1,10 +1,11 @@ - +Body needed for test_driver.click() + - diff --git a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html index 47aa6511ec5..17dc3628a77 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html @@ -1,10 +1,11 @@ - +Body needed for test_driver.click() + - diff --git a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html index c931bbbb89f..e669c8fec49 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html @@ -1,10 +1,11 @@ - +Body needed for test_driver.click() + - diff --git a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-tentative.https.sub.html b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-tentative.https.sub.html index a2858c638e6..b57dfe3dd28 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-tentative.https.sub.html @@ -1,17 +1,19 @@ - +Body needed for test_driver.click() + - diff --git a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-cross-origin-tentative.https.sub.html b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-cross-origin-tentative.https.sub.html index 0f3164d9b02..6e7029cc789 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-cross-origin-tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-cross-origin-tentative.https.sub.html @@ -1,10 +1,11 @@ - +Body needed for test_driver.click() + - diff --git a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy.tentative.https.sub.html b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy.tentative.https.sub.html index 1c6fc49a056..ca97994c617 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy.tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy.tentative.https.sub.html @@ -1,10 +1,11 @@ - +Body needed for test_driver.click() + - diff --git a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html index 51db5a427d2..5615a68ac55 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html @@ -1,10 +1,11 @@ - +Body needed for test_driver.click() + - diff --git a/tests/wpt/web-platform-tests/clipboard-apis/permissions/readText-denied.https.html b/tests/wpt/web-platform-tests/clipboard-apis/permissions/readText-denied.https.html index 935f520e7de..010f4ba21b9 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/permissions/readText-denied.https.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/permissions/readText-denied.https.html @@ -2,15 +2,18 @@ navigator.clipboard.readText() fails when permission denied +Body needed for test_driver.click() + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/clipboard-apis/permissions/writeText-denied.https.html b/tests/wpt/web-platform-tests/clipboard-apis/permissions/writeText-denied.https.html index 4d0530f0bc2..5fbcab41174 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/permissions/writeText-denied.https.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/permissions/writeText-denied.https.html @@ -2,15 +2,18 @@ navigator.clipboard.writeText() fails when permission denied +Body needed for test_driver.click() + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/clipboard-apis/text-write-read/async-write-read.https.html b/tests/wpt/web-platform-tests/clipboard-apis/text-write-read/async-write-read.https.html index a00c5b27a4d..c46e5d43171 100644 --- a/tests/wpt/web-platform-tests/clipboard-apis/text-write-read/async-write-read.https.html +++ b/tests/wpt/web-platform-tests/clipboard-apis/text-write-read/async-write-read.https.html @@ -5,10 +5,12 @@ read ([text/plain ClipboardItem]) tests +Body needed for test_driver.click() + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/close-watcher/after-other-listeners.html b/tests/wpt/web-platform-tests/close-watcher/after-other-listeners.html new file mode 100644 index 00000000000..7dfe398012b --- /dev/null +++ b/tests/wpt/web-platform-tests/close-watcher/after-other-listeners.html @@ -0,0 +1,26 @@ + + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/close-watcher/basic.html b/tests/wpt/web-platform-tests/close-watcher/basic.html new file mode 100644 index 00000000000..1c26c0ce15e --- /dev/null +++ b/tests/wpt/web-platform-tests/close-watcher/basic.html @@ -0,0 +1,167 @@ + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/close-watcher/frame-removal.html b/tests/wpt/web-platform-tests/close-watcher/frame-removal.html new file mode 100644 index 00000000000..b8bbac04f97 --- /dev/null +++ b/tests/wpt/web-platform-tests/close-watcher/frame-removal.html @@ -0,0 +1,59 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/close-watcher/resources/helpers.js b/tests/wpt/web-platform-tests/close-watcher/resources/helpers.js new file mode 100644 index 00000000000..4e024a19085 --- /dev/null +++ b/tests/wpt/web-platform-tests/close-watcher/resources/helpers.js @@ -0,0 +1,21 @@ +// TODO(domenic): consider using these in all test files. + +window.createRecordingCloseWatcher = (t, events, name) => { + const watcher = new CloseWatcher(); + t.add_cleanup(() => watcher.destroy()); + watcher.oncancel = () => events.push(name + " cancel"); + watcher.onclose = () => events.push(name + " close"); + + return watcher; +}; + +window.createBlessedRecordingCloseWatcher = (t, events, name) => { + return test_driver.bless("create " + name, () => createRecordingCloseWatcher(t, events, name)); +}; + +window.sendCloseSignal = () => { + // *not* \uu001B; see https://w3c.github.io/webdriver/#keyboard-actions + const ESC = '\uE00C'; + + return test_driver.send_keys(document.getElementById("d"), ESC); +}; diff --git a/tests/wpt/web-platform-tests/close-watcher/user-activation-multiple-plus-free.html b/tests/wpt/web-platform-tests/close-watcher/user-activation-multiple-plus-free.html new file mode 100644 index 00000000000..8a86624913f --- /dev/null +++ b/tests/wpt/web-platform-tests/close-watcher/user-activation-multiple-plus-free.html @@ -0,0 +1,32 @@ + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/close-watcher/user-activation.html b/tests/wpt/web-platform-tests/close-watcher/user-activation.html new file mode 100644 index 00000000000..375488dede6 --- /dev/null +++ b/tests/wpt/web-platform-tests/close-watcher/user-activation.html @@ -0,0 +1,212 @@ + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/session_unsubscribe/__init__.py b/tests/wpt/web-platform-tests/common/__init__.py similarity index 100% rename from tests/wpt/web-platform-tests/webdriver/tests/bidi/session_unsubscribe/__init__.py rename to tests/wpt/web-platform-tests/common/__init__.py diff --git a/tests/wpt/web-platform-tests/common/custom-cors-response.js b/tests/wpt/web-platform-tests/common/custom-cors-response.js index 88688675a2a..be9c7ce3bdc 100644 --- a/tests/wpt/web-platform-tests/common/custom-cors-response.js +++ b/tests/wpt/web-platform-tests/common/custom-cors-response.js @@ -19,6 +19,10 @@ const custom_cors_response = (payload, base_url) => { payload.headers[acao] = '*'; } + if (!("Content-Type" in payload.headers)) { + payload.headers["Content-Type"] = "text/javascript"; + } + let ret = new URL("/common/CustomCorsResponse.py", base_url); for (const key in payload) { ret.searchParams.append(key, JSON.stringify(payload[key])); diff --git a/tests/wpt/web-platform-tests/common/dispatcher/README.md b/tests/wpt/web-platform-tests/common/dispatcher/README.md index 9058ebc4b64..cfaafb6e5d6 100644 --- a/tests/wpt/web-platform-tests/common/dispatcher/README.md +++ b/tests/wpt/web-platform-tests/common/dispatcher/README.md @@ -39,8 +39,9 @@ For concrete examples, see and [executor.html](../../html/browsers/browsing-the-web/back-forward-cache/resources/executor.html) in back-forward cache tests. -Note that executor files under `/common/dispatcher/` are NOT for -`RemoteContext.execute_script()`. + +Note that `executor*` files under `/common/dispatcher/` are NOT for +`RemoteContext.execute_script()`. Use `remote-executor.html` instead. This is universal and avoids introducing many specific `XXX-helper.html` resources. @@ -89,9 +90,26 @@ active (for example before it is created, before navigation to the page, or during the page is in back-forward cache), the injected script is evaluated after the remote context becomes active. -`RemoteContext.execute_script()` calls should be serialized by always waiting -for the returned promise to be resolved. -So it's a good practice to always write `await ctx.execute_script(...)`. +Multiple calls to `RemoteContext.execute_script()` will result in multiple scripts +being executed in remote context and ordering will be maintained. + +## Errors from `execute_script()` + +Errors from `execute_script()` will result in promise rejections, so it is +important to await the result. This can be `await ctx.execute_script(...)` for +every call but if there are multiple scripts to executed, it may be preferable +to wait on them in parallel to avoid incurring full round-trip time for each, +e.g. + +```js +await Promise.all( + ctx1.execute_script(...), + ctx1.execute_script(...), + ctx2.execute_script(...), + ctx2.execute_script(...), + ... +) +``` ## Evaluation timing of injected functions diff --git a/tests/wpt/web-platform-tests/common/dispatcher/dispatcher.js b/tests/wpt/web-platform-tests/common/dispatcher/dispatcher.js index b789c6e50c2..a0f9f43e622 100644 --- a/tests/wpt/web-platform-tests/common/dispatcher/dispatcher.js +++ b/tests/wpt/web-platform-tests/common/dispatcher/dispatcher.js @@ -1,4 +1,4 @@ -// Define an universal message passing API. It works cross-origin and across +// Define a universal message passing API. It works cross-origin and across // browsing context groups. const dispatcher_path = "/common/dispatcher/dispatcher.py"; const dispatcher_url = new URL(dispatcher_path, location.href).href; @@ -37,7 +37,15 @@ const randomDelay = () => { // └───────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴────┘ const limiter = concurrencyLimiter(6); -const send = async function(uuid, message) { +// While requests to different remote contexts can go in parallel, we need to +// ensure that requests to each remote context are done in order. This maps a +// uuid to a queue of requests to send. A queue is processed until it is empty +// and then is deleted from the map. +const sendQueues = new Map(); + +// Sends a single item (with rate-limiting) and calls the associated resolver +// when it is successfully sent. +const sendItem = async function (uuid, resolver, message) { await limiter(async () => { // Requests might be dropped. Retry until getting a confirmation it has been // processed. @@ -47,15 +55,45 @@ const send = async function(uuid, message) { method: 'POST', body: message }) - if (await response.text() == "done") + if (await response.text() == "done") { + resolver(); return; + } } catch (fetch_error) {} await randomDelay(); }; }); } -const receive = async function(uuid) { +// While the queue is non-empty, send the next item. This is async and new items +// may be added to the queue while others are being sent. +const processQueue = async function (uuid, queue) { + while (queue.length) { + const [resolver, message] = queue.shift(); + await sendItem(uuid, resolver, message); + } + // The queue is empty, delete it. + sendQueues.delete(uuid); +} + +const send = async function (uuid, message) { + const itemSentPromise = new Promise((resolve) => { + const item = [resolve, message]; + if (sendQueues.has(uuid)) { + // There is already a queue for `uuid`, just add to it and it will be processed. + sendQueues.get(uuid).push(item); + } else { + // There is no queue for `uuid`, create it and start processing. + const queue = [item]; + sendQueues.set(uuid, queue); + processQueue(uuid, queue); + } + }); + // Wait until the item has been successfully sent. + await itemSentPromise; +} + +const receive = async function (uuid) { while(1) { let data = "not ready"; try { @@ -89,6 +127,31 @@ const cacheableShowRequestHeaders = function(origin, uuid) { // This script requires // - `/common/utils.js` for `token()`. +// Returns the URL of a document that can be used as a `RemoteContext`. +// +// `uuid` should be a UUID uniquely identifying the given remote context. +// `options` has the following shape: +// +// { +// host: (optional) Sets the returned URL's `host` property. Useful for +// cross-origin executors. +// protocol: (optional) Sets the returned URL's `protocol` property. +// } +function remoteExecutorUrl(uuid, options) { + const url = new URL("/common/dispatcher/remote-executor.html", location); + url.searchParams.set("uuid", uuid); + + if (options?.host) { + url.host = options.host; + } + + if (options?.protocol) { + url.protocol = options.protocol; + } + + return url; +} + // Represents a remote executor. For more detailed explanation see `README.md`. class RemoteContext { // `uuid` is a UUID string that identifies the remote context and should @@ -106,7 +169,7 @@ class RemoteContext { // `execute_script()` returns a rejected Promise with the error's // `message`. // Note that currently the type of error (e.g. DOMException) is not - // preserved. + // preserved, except for `TypeError`. // The values should be able to be serialized by JSON.stringify(). async execute_script(fn, args) { const receiver = token(); @@ -117,6 +180,9 @@ class RemoteContext { } // exception + if (response.name === 'TypeError') { + throw new TypeError(response.value); + } throw new Error(response.value); } @@ -180,6 +246,7 @@ class Executor { } catch(e) { response = JSON.stringify({ status: 'exception', + name: e.name, value: e.message }); } diff --git a/tests/wpt/web-platform-tests/common/dispatcher/remote-executor.html b/tests/wpt/web-platform-tests/common/dispatcher/remote-executor.html new file mode 100644 index 00000000000..8b0030390d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/common/dispatcher/remote-executor.html @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/common/object-association.js b/tests/wpt/web-platform-tests/common/object-association.js index 458aae67db0..669c17c07b1 100644 --- a/tests/wpt/web-platform-tests/common/object-association.js +++ b/tests/wpt/web-platform-tests/common/object-association.js @@ -1,19 +1,48 @@ "use strict"; -// For now this only has per-Window tests, but we could expand it to also test per-Document +// This is for testing whether an object (e.g., a global property) is associated with Window, or +// with Document. Recall that Window and Document are 1:1 except when doing a same-origin navigation +// away from the initial about:blank. In that case the Window object gets reused for the new +// Document. +// +// So: +// - If something is per-Window, then it should maintain its identity across an about:blank +// navigation. +// - If something is per-Document, then it should be recreated across an about:blank navigation. -/** - * Run tests for window[propertyName] after discarding the browsing context, navigating, etc. - * @param {string} propertyName - */ window.testIsPerWindow = propertyName => { - test(t => { + runTests(propertyName, assert_equals, "must not"); +}; + +window.testIsPerDocument = propertyName => { + runTests(propertyName, assert_not_equals, "must"); +}; + +function runTests(propertyName, equalityOrInequalityAsserter, mustOrMustNotReplace) { + async_test(t => { const iframe = document.createElement("iframe"); document.body.appendChild(iframe); const frame = iframe.contentWindow; const before = frame[propertyName]; - assert_true(before !== undefined && before !== null, `window.${propertyName} must be implemented`); + assert_implements(before, `window.${propertyName} must be implemented`); + + iframe.onload = t.step_func_done(() => { + const after = frame[propertyName]; + equalityOrInequalityAsserter(after, before); + }); + + iframe.src = "/common/blank.html"; + }, `Navigating from the initial about:blank ${mustOrMustNotReplace} replace window.${propertyName}`); + + // Per spec, discarding a browsing context should not change any of the global objects. + test(() => { + const iframe = document.createElement("iframe"); + document.body.appendChild(iframe); + const frame = iframe.contentWindow; + + const before = frame[propertyName]; + assert_implements(before, `window.${propertyName} must be implemented`); iframe.remove(); @@ -21,38 +50,15 @@ window.testIsPerWindow = propertyName => { assert_equals(after, before, `window.${propertyName} should not change after iframe.remove()`); }, `Discarding the browsing context must not change window.${propertyName}`); - async_test(t => { - const iframe = document.createElement("iframe"); - document.body.appendChild(iframe); - const frame = iframe.contentWindow; - - const before = frame[propertyName]; - assert_true(before !== undefined && before !== null, `window.${propertyName} must be implemented`); - - // Note: cannot use step_func_done for this because it might be called twice, per the below comment. - iframe.onload = t.step_func(() => { - if (frame.location.href === "about:blank") { - // Browsers are not reliable on whether about:blank fires the load event; see - // https://github.com/whatwg/html/issues/490 - return; - } - - const after = frame[propertyName]; - assert_equals(after, before); - t.done(); - }); - - iframe.src = "/common/blank.html"; - }, `Navigating from the initial about:blank must not replace window.${propertyName}`); - - // Per spec, document.open() should not change any of the Window state. + // Per spec, document.open() should not change any of the global objects. In historical versions + // of the spec, it did, so we test here. async_test(t => { const iframe = document.createElement("iframe"); iframe.onload = t.step_func_done(() => { const frame = iframe.contentWindow; const before = frame[propertyName]; - assert_true(before !== undefined && before !== null, `window.${propertyName} must be implemented`); + assert_implements(before, `window.${propertyName} must be implemented`); frame.document.open(); @@ -64,5 +70,5 @@ window.testIsPerWindow = propertyName => { iframe.src = "/common/blank.html"; document.body.appendChild(iframe); - }, `document.open() must replace window.${propertyName}`); -}; + }, `document.open() must not replace window.${propertyName}`); +} diff --git a/tests/wpt/web-platform-tests/common/proxy-all.sub.pac b/tests/wpt/web-platform-tests/common/proxy-all.sub.pac new file mode 100644 index 00000000000..de601e5d702 --- /dev/null +++ b/tests/wpt/web-platform-tests/common/proxy-all.sub.pac @@ -0,0 +1,3 @@ +function FindProxyForURL(url, host) { + return "PROXY {{host}}:{{ports[http][0]}}" +} diff --git a/tests/wpt/web-platform-tests/common/refresh.py b/tests/wpt/web-platform-tests/common/refresh.py new file mode 100644 index 00000000000..0d309900d47 --- /dev/null +++ b/tests/wpt/web-platform-tests/common/refresh.py @@ -0,0 +1,11 @@ +def main(request, response): + """ + Respond with a blank HTML document and a `Refresh` header which describes + an immediate redirect to the URL specified by the requests `location` query + string parameter + """ + headers = [ + (b'Content-Type', b'text/html'), + (b'Refresh', b'0; URL=' + request.GET.first(b'location')) + ] + return (200, headers, b'') diff --git a/tests/wpt/web-platform-tests/scheduler/tentative/support/empty.txt b/tests/wpt/web-platform-tests/common/security-features/__init__.py similarity index 100% rename from tests/wpt/web-platform-tests/scheduler/tentative/support/empty.txt rename to tests/wpt/web-platform-tests/common/security-features/__init__.py diff --git a/tests/wpt/web-platform-tests/common/security-features/scope/__init__.py b/tests/wpt/web-platform-tests/common/security-features/scope/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/web-platform-tests/compat/css-style-declaration-alias-enumeration.html b/tests/wpt/web-platform-tests/compat/css-style-declaration-alias-enumeration.html index 75776e19c3b..8244afd29db 100644 --- a/tests/wpt/web-platform-tests/compat/css-style-declaration-alias-enumeration.html +++ b/tests/wpt/web-platform-tests/compat/css-style-declaration-alias-enumeration.html @@ -10,25 +10,28 @@ const PREFIXED_PROPS = [ 'webkitAlignContent', 'webkitAlignItems', - 'webkitAnimationName', 'webkitAlignSelf', - 'webkitAnimationDuration', - 'webkitAnimationTimingFunction', - 'webkitAnimationIterationCount', - 'webkitAnimationDirection', - 'webkitAnimationPlayState', - 'webkitAnimationDelay', - 'webkitAnimationFillMode', 'webkitAnimation', + 'webkitAnimationDelay', + 'webkitAnimationDirection', + 'webkitAnimationDuration', + 'webkitAnimationFillMode', + 'webkitAnimationIterationCount', + 'webkitAnimationName', + 'webkitAnimationPlayState', + 'webkitAnimationTimingFunction', 'webkitBackfaceVisibility', + 'WebKitBackgroundClip', 'webkitBackgroundOrigin', 'webkitBackgroundSize', 'webkitBorderBottomLeftRadius', 'webkitBorderBottomRightRadius', + 'webkitBorderRadius', 'webkitBorderTopLeftRadius', 'webkitBorderTopRightRadius', - 'webkitBorderRadius', 'webkitBoxShadow', + 'webkitBoxSizing', + 'webkitFilter', 'webkitFlex', 'webkitFlexBasis', 'webkitFlexDirection', @@ -36,15 +39,8 @@ const PREFIXED_PROPS = [ 'webkitFlexGrow', 'webkitFlexShrink', 'webkitFlexWrap', - 'webkitFilter', 'webkitJustifyContent', 'webkitMask', - 'webkitMaskBoxImage', - 'webkitMaskBoxImageOutset', - 'webkitMaskBoxImageRepeat', - 'webkitMaskBoxImageSlice', - 'webkitMaskBoxImageSource', - 'webkitMaskBoxImageWidth', 'webkitMaskClip', 'webkitMaskComposite', 'webkitMaskImage', @@ -55,14 +51,14 @@ const PREFIXED_PROPS = [ 'webkitOrder', 'webkitPerspective', 'webkitPerspectiveOrigin', + 'webkitTransform', 'webkitTransformOrigin', 'webkitTransformStyle', - 'webkitTransform', + 'webkitTransition', 'webkitTransitionDelay', 'webkitTransitionDuration', 'webkitTransitionProperty', 'webkitTransitionTimingFunction', - 'webkitTransition', ]; const docBodyStyle = document.body.style; diff --git a/tests/wpt/web-platform-tests/compat/webkit-background-origin-text.html b/tests/wpt/web-platform-tests/compat/webkit-background-origin-text.html index 06e728342cd..dd38690dd96 100644 --- a/tests/wpt/web-platform-tests/compat/webkit-background-origin-text.html +++ b/tests/wpt/web-platform-tests/compat/webkit-background-origin-text.html @@ -3,6 +3,7 @@ webkit-background-origin should not accept text as value +
    @@ -67,5 +61,11 @@ } + diff --git a/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-helper.js b/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-helper.js index 4beae888593..cb6fd4823f0 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-helper.js +++ b/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-helper.js @@ -22,9 +22,14 @@ async function waitUntilResourceDownloaded(url) { }); } -async function assert_resource_not_downloaded(test, url) { - if (performance.getEntriesByName(url).length >= 1) { - (test.unreached_func(`'${url}' should not have downloaded.`))(); +function assert_resource_not_downloaded(test, url) { + // CSP failures generate resource timing entries, so let's make sure that + // download sizes are 0. + const entries = performance.getEntriesByName(url, 'resource'); + for (const entry of entries) { + assert_equals(entry.transferSize, 0, 'transferSize'); + assert_equals(entry.encodedBodySize, 0, 'encodedBodySize'); + assert_equals(entry.decodedBodySize, 0, 'decodedBodySize'); } } diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-in-iframe.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-in-iframe.html index aa29702c011..bca5decd25e 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-in-iframe.html +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-in-iframe.html @@ -5,34 +5,43 @@ eval-in-iframe + -

    This test checks that iframes correctly block the eval function.

    +

    This test checks that the CSP of calleeRealm only (and not of + the callerRealm) is checked for allowing eval.

    diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/support/echo-eval-with-policy.py b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/support/echo-eval-with-policy.py index 087d3549a94..b9b3cfe03a5 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/support/echo-eval-with-policy.py +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/support/echo-eval-with-policy.py @@ -4,11 +4,27 @@ def main(request, response): """ diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href.html index 76e9576e8b1..0c2a43a6e65 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href.html +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href.html @@ -1,26 +1,15 @@ - - - - + 'sha256-l0Wxf12cHMZT6UQ2zsQ7AcFSb6Y198d37Ki8zWITecM=';"> + + + - -
    - - - diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank-script-src-attr.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank-script-src-attr.html new file mode 100644 index 00000000000..f2b3e1ff72c --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank-script-src-attr.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank-script-src-elem.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank-script-src-elem.html new file mode 100644 index 00000000000..642d9768a51 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank-script-src-elem.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html index 007338bc45e..a321521e043 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html @@ -1,26 +1,15 @@ - - - - + 'sha256-N5bidCKdNO1nSPa1G7MdL6S7Y7MKZ7UMIS/40JBMSe4=';"> + + + - -
    -
    - - diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href.html index 991200ac0da..0f0dc67aa31 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href.html +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href.html @@ -1,29 +1,15 @@ - - - - + 'sha256-l0Wxf12cHMZT6UQ2zsQ7AcFSb6Y198d37Ki8zWITecM=';"> + + + - -
    -
    - - diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank-script-src-attr.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank-script-src-attr.html new file mode 100644 index 00000000000..6b863e7a99d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank-script-src-attr.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank-script-src-elem.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank-script-src-elem.html new file mode 100644 index 00000000000..23e9bdc1875 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank-script-src-elem.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank.html index 66ec9e1678c..81805a1f870 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank.html +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank.html @@ -1,29 +1,15 @@ - - - - - + + + + - -
    -
    - - diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href.html index 944b72774c8..6558a03aedd 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href.html +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href.html @@ -1,29 +1,15 @@ - - - - + 'sha256-wrongwrongwrongwrongwrongwrongwrongwrongwro=';"> + + + - -
    -
    - - diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank-script-src-attr.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank-script-src-attr.html new file mode 100644 index 00000000000..fa394b1d0ae --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank-script-src-attr.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank-script-src-elem.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank-script-src-elem.html new file mode 100644 index 00000000000..8ca49da7754 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank-script-src-elem.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank.html index 84491f83fbb..257899af29c 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank.html +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank.html @@ -1,29 +1,15 @@ - - - - - + + + + - -
    -
    - - diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/support/helper.js b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/support/helper.js new file mode 100644 index 00000000000..26db3289ea3 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/support/helper.js @@ -0,0 +1,40 @@ +// Typical CSP hashes are: +// 'sha256-N5bidCKdNO1nSPa1G7MdL6S7Y7MKZ7UMIS/40JBMSe4=' ==> javascript:opener.navigated(); +// 'sha256-l0Wxf12cHMZT6UQ2zsQ7AcFSb6Y198d37Ki8zWITecM=' ==> javascript:navigated(); + +function runTest(navigationShouldAllowed, navigationMethod, description) { + const t1 = async_test( + 'javascript: navigation using ' + navigationMethod + ' should be ' + + (navigationShouldAllowed ? 'allowed' : 'refused') + description); + + if (navigationShouldAllowed) { + window.navigated = () => t1.done(); + window.addEventListener('securitypolicyviolation', + t1.unreached_func('Should have not raised any event')); + } else { + window.navigated = + t1.unreached_func('Should not have run javascript: URL'); + window.addEventListener('securitypolicyviolation', + t1.step_func_done(function(e) { + assert_equals(e.violatedDirective, 'script-src-elem'); + assert_equals(e.blockedURI, 'inline'); + })); + } + + if (navigationMethod === '') { + const a = document.createElement('a'); + a.setAttribute('target', '_blank'); + a.setAttribute('rel', 'opener'); + a.setAttribute('href', 'javascript:opener.navigated();'); + document.body.appendChild(a); + a.click(); + } + else if (navigationMethod === '') { + const a = document.createElement('a'); + a.setAttribute('href', 'javascript:navigated();'); + document.body.appendChild(a); + a.click(); + } else { + t1.unreached_func('Invalid navigationMethod: ' + navigationMethod)(); + } +} diff --git a/tests/wpt/web-platform-tests/content-security-policy/wasm-unsafe-eval/postMessage-wasm-module.html b/tests/wpt/web-platform-tests/content-security-policy/wasm-unsafe-eval/postMessage-wasm-module.html new file mode 100644 index 00000000000..9d5e1e0ff32 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/wasm-unsafe-eval/postMessage-wasm-module.html @@ -0,0 +1,31 @@ + + + + + eval-in-iframe + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/wasm-unsafe-eval/support/iframe.html b/tests/wpt/web-platform-tests/content-security-policy/wasm-unsafe-eval/support/iframe.html new file mode 100644 index 00000000000..4d8b937558a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/wasm-unsafe-eval/support/iframe.html @@ -0,0 +1,15 @@ + + + + + + +

    iframe

    + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/wasm-unsafe-eval/support/iframe.html.headers b/tests/wpt/web-platform-tests/content-security-policy/wasm-unsafe-eval/support/iframe.html.headers new file mode 100644 index 00000000000..bc3a72a880d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/wasm-unsafe-eval/support/iframe.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: default-src 'unsafe-inline' diff --git a/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-allowed-default-src-none.html b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-allowed-default-src-none.html new file mode 100644 index 00000000000..5b0f8cc9c56 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-allowed-default-src-none.html @@ -0,0 +1,21 @@ + + + + + + webrtc allowed with default-src 'none' + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-allowed-explicit.html b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-allowed-explicit.html new file mode 100644 index 00000000000..835f650d5f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-allowed-explicit.html @@ -0,0 +1,19 @@ + + + + + + webrtc allowed with an explicit webrtc allowed policy + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-allowed-nopolicy.html b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-allowed-nopolicy.html new file mode 100644 index 00000000000..bc49a63a434 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-allowed-nopolicy.html @@ -0,0 +1,18 @@ + + + + + webrtc allowed with no policy + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-blocked-explicit.html b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-blocked-explicit.html new file mode 100644 index 00000000000..dbd56f2f2c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-blocked-explicit.html @@ -0,0 +1,19 @@ + + + + + + webrtc blocked with an explicit webrtc blocked policy + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-blocked-unknown.html b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-blocked-unknown.html new file mode 100644 index 00000000000..1605c0a642d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc-blocked-unknown.html @@ -0,0 +1,19 @@ + + + + + + webrtc blocked with an unrecognized explicit webrtc policy + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc.js b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc.js new file mode 100644 index 00000000000..a4075557add --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/webrtc/webrtc.js @@ -0,0 +1,56 @@ + +// Creates two RTCPeerConnection and tries to connect them. Returns +// "allowed" if the connection is permitted, "blocked" if it is +// blocked on both sides and "inconsistent" in the event that the +// result is not the same on both sides (should never happen). +async function tryConnect() { + const pc1 = new RTCPeerConnection(); + const pc2 = new RTCPeerConnection(); + + // Returns a promise which resolves to a boolean which is true + // if and only if pc.iceConnectionState settles in the "failed" + // state, and never transitions to any state other than "new" + // or "failed." + const pcFailed = (pc) => { + return new Promise((resolve, _reject) => { + pc.oniceconnectionstatechange = (e) => { + resolve(pc.iceConnectionState == "failed"); + }; + }); + } + pc1Failed = pcFailed(pc1); + pc2Failed = pcFailed(pc2); + + // Creating a data channel is necessary to induce negotiation: + const channel = pc1.createDataChannel('test'); + + // Usual webrtc signaling dance: + pc1.onicecandidate = ({candidate}) => pc2.addIceCandidate(candidate); + pc2.onicecandidate = ({candidate}) => pc1.addIceCandidate(candidate); + const offer = await pc1.createOffer(); + await pc1.setLocalDescription(offer); + await pc2.setRemoteDescription(pc1.localDescription); + const answer = await pc2.createAnswer(); + await pc2.setLocalDescription(answer); + await pc1.setRemoteDescription(pc2.localDescription); + + const failed1 = await pc1Failed; + const failed2 = await pc2Failed; + if(failed1 && failed2) { + return 'blocked'; + } else if(!failed1 && !failed2) { + return 'allowed'; + } else { + return 'inconsistent'; + } +} + +async function expectAllow() { + promise_test(async () => assert_equals(await tryConnect(), 'allowed')); +} + +async function expectBlock() { + promise_test(async () => assert_equals(await tryConnect(), 'blocked')); +} + +// vim: set ts=4 sw=4 et : diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.https.any.js b/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.https.any.js index e46d6b6caa5..200cbd06928 100644 --- a/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.https.any.js +++ b/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.https.any.js @@ -6,7 +6,9 @@ const kCurrentHostname = (new URL(self.location.href)).hostname; const kOneDay = 24 * 60 * 60 * 1000; +const kFourHundredDays = 400 * kOneDay; const kTenYears = 10 * 365 * kOneDay; +const kFourHundredDaysFromNow = Date.now() + kFourHundredDays; const kTenYearsFromNow = Date.now() + kTenYears; const kCookieListItemKeys = @@ -28,7 +30,10 @@ promise_test(async testCase => { assert_equals(cookie.expires, null); assert_equals(cookie.secure, true); assert_equals(cookie.sameSite, 'strict'); - assert_array_equals(Object.keys(cookie).sort(), kCookieListItemKeys); + const itemKeys = Object.keys(cookie); + for (const key of kCookieListItemKeys) { + assert_in_array(key, itemKeys); + } }, 'CookieListItem - cookieStore.set defaults with positional name and value'); promise_test(async testCase => { @@ -46,7 +51,10 @@ promise_test(async testCase => { assert_equals(cookie.expires, null); assert_equals(cookie.secure, true); assert_equals(cookie.sameSite, 'strict'); - assert_array_equals(Object.keys(cookie).sort(), kCookieListItemKeys); + const itemKeys = Object.keys(cookie); + for (const key of kCookieListItemKeys) { + assert_in_array(key, itemKeys); + } }, 'CookieListItem - cookieStore.set defaults with name and value in options'); promise_test(async testCase => { @@ -62,10 +70,13 @@ promise_test(async testCase => { assert_equals(cookie.value, 'cookie-value'); assert_equals(cookie.domain, null); assert_equals(cookie.path, '/'); - assert_approx_equals(cookie.expires, kTenYearsFromNow, kOneDay); + assert_approx_equals(cookie.expires, kFourHundredDaysFromNow, kOneDay); assert_equals(cookie.secure, true); assert_equals(cookie.sameSite, 'strict'); - assert_array_equals(Object.keys(cookie).sort(), kCookieListItemKeys); + const itemKeys = Object.keys(cookie); + for (const key of kCookieListItemKeys) { + assert_in_array(key, itemKeys); + } }, 'CookieListItem - cookieStore.set with expires set to a timestamp 10 ' + 'years in the future'); @@ -82,7 +93,7 @@ promise_test(async testCase => { assert_equals(cookie.value, 'cookie-value'); assert_equals(cookie.domain, null); assert_equals(cookie.path, '/'); - assert_approx_equals(cookie.expires, kTenYearsFromNow, kOneDay); + assert_approx_equals(cookie.expires, kFourHundredDaysFromNow, kOneDay); assert_equals(cookie.secure, true); }, 'CookieListItem - cookieStore.set with expires set to a Date 10 ' + 'years in the future'); @@ -103,7 +114,10 @@ promise_test(async testCase => { assert_equals(cookie.expires, null); assert_equals(cookie.secure, true); assert_equals(cookie.sameSite, 'strict'); - assert_array_equals(Object.keys(cookie).sort(), kCookieListItemKeys); + const itemKeys = Object.keys(cookie); + for (const key of kCookieListItemKeys) { + assert_in_array(key, itemKeys); + } }, 'CookieListItem - cookieStore.set with domain set to the current hostname'); promise_test(async testCase => { @@ -126,7 +140,10 @@ promise_test(async testCase => { assert_equals(cookie.expires, null); assert_equals(cookie.secure, true); assert_equals(cookie.sameSite, 'strict'); - assert_array_equals(Object.keys(cookie).sort(), kCookieListItemKeys); + const itemKeys = Object.keys(cookie); + for (const key of kCookieListItemKeys) { + assert_in_array(key, itemKeys); + } }, 'CookieListItem - cookieStore.set with path set to the current directory'); promise_test(async testCase => { @@ -148,7 +165,10 @@ promise_test(async testCase => { assert_equals(cookie.expires, null); assert_equals(cookie.secure, true); assert_equals(cookie.sameSite, 'strict'); - assert_array_equals(Object.keys(cookie).sort(), kCookieListItemKeys); + const itemKeys = Object.keys(cookie); + for (const key of kCookieListItemKeys) { + assert_in_array(key, itemKeys); + } }, 'CookieListItem - cookieStore.set adds / to path if it does not end with /'); ['strict', 'lax', 'none'].forEach(sameSiteValue => { @@ -168,7 +188,10 @@ promise_test(async testCase => { assert_equals(cookie.expires, null); assert_equals(cookie.secure, true); assert_equals(cookie.sameSite, sameSiteValue); - assert_array_equals(Object.keys(cookie).sort(), kCookieListItemKeys); + const itemKeys = Object.keys(cookie); + for (const key of kCookieListItemKeys) { + assert_in_array(key, itemKeys); + } }, `CookieListItem - cookieStore.set with sameSite set to ${sameSiteValue}`); }); diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.https.any.js b/tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.https.any.js index db077478e0e..6b18c4f0668 100644 --- a/tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.https.any.js +++ b/tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.https.any.js @@ -51,3 +51,14 @@ promise_test(async testCase => { cookieStore.set( { name: '__Host-cookie-name', value: 'cookie-value', path: "/path" })); }, 'cookieStore.set with __Host- prefix a path option'); + +promise_test(async testCase => { + let exceptionThrown = false; + try { + await cookieStore.set(unescape('cookie-name%0D1'), 'cookie-value'); + } catch (e) { + assert_equals (e.name, "TypeError", "cookieStore thrown an incorrect exception -"); + exceptionThrown = true; + } + assert_true(exceptionThrown, "No exception thrown."); +}, 'cookieStore.set with malformed name.'); diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_cross_origin.js b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_cross_origin.js index ac59b703dd7..fa1c4084fd4 100644 --- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_cross_origin.js +++ b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_cross_origin.js @@ -1,6 +1,7 @@ self.GLOBAL = { isWindow: () => false, isWorker: () => false, + isShadowRealm: () => false, }; self.addEventListener('message', async event => { diff --git a/tests/wpt/web-platform-tests/cookies/__init__.py b/tests/wpt/web-platform-tests/cookies/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/web-platform-tests/cookies/attributes/attributes-ctl.sub.html b/tests/wpt/web-platform-tests/cookies/attributes/attributes-ctl.sub.html index 628d7a9f292..7950751e27d 100644 --- a/tests/wpt/web-platform-tests/cookies/attributes/attributes-ctl.sub.html +++ b/tests/wpt/web-platform-tests/cookies/attributes/attributes-ctl.sub.html @@ -90,12 +90,12 @@ name: `Cookie with %x${ctl.code.toString(16)} in HttpOnly attribute is handled correctly.`, }, { - cookie: `test${ctl.code}samesite=t; SameSite=No${ctl.chr}ne; SameSite=None;`, + cookie: `test${ctl.code}samesite=t; SameSite=La${ctl.chr}x; SameSite=Lax;`, expected: `test${ctl.code}samesite=t`, name: `Cookie with %x${ctl.code.toString(16)} in SameSite attribute value is handled correctly.`, }, { - cookie: `test${ctl.code}samesite2=t; SameSite=None${ctl.chr};`, + cookie: `test${ctl.code}samesite2=t; SameSite=Lax${ctl.chr};`, expected: `test${ctl.code}samesite2=t`, name: `Cookie with %x${ctl.code.toString(16)} after SameSite attribute value is handled correctly.`, }, diff --git a/tests/wpt/web-platform-tests/cookies/attributes/expires.html b/tests/wpt/web-platform-tests/cookies/attributes/expires.html index f61c4057fda..a6bacfd74e9 100644 --- a/tests/wpt/web-platform-tests/cookies/attributes/expires.html +++ b/tests/wpt/web-platform-tests/cookies/attributes/expires.html @@ -14,9 +14,6 @@
    diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/path-redirect-shared.js b/tests/wpt/web-platform-tests/cookies/attributes/resources/path-redirect-shared.js index 7144e651e11..777d0abd338 100644 --- a/tests/wpt/web-platform-tests/cookies/attributes/resources/path-redirect-shared.js +++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/path-redirect-shared.js @@ -1,11 +1,7 @@ // Note: this function has a dependency on testdriver.js. Any test files calling // it should include testdriver.js and testdriver-vendor.js window.addEventListener("message", (e) => { - let test_window = window.top; - while (test_window.opener && !test_window.opener.closed) { - test_window = test_window.opener.top; - } - test_driver.set_test_context(test_window); + setTestContextUsingRootWindow(); if (e.data == "getAndExpireCookiesForRedirectTest") { const cookies = document.cookie; test_driver.delete_all_cookies().then(() => { diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/path.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/path.html index 1b53e773a18..5ff90b9f15f 100644 --- a/tests/wpt/web-platform-tests/cookies/attributes/resources/path.html +++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/path.html @@ -8,6 +8,7 @@ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/path/one.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/one.html index 1b53e773a18..5ff90b9f15f 100644 --- a/tests/wpt/web-platform-tests/cookies/attributes/resources/path/one.html +++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/one.html @@ -8,6 +8,7 @@ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/path/three.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/three.html index 1b53e773a18..5ff90b9f15f 100644 --- a/tests/wpt/web-platform-tests/cookies/attributes/resources/path/three.html +++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/three.html @@ -8,6 +8,7 @@ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/path/two.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/two.html index 1b53e773a18..5ff90b9f15f 100644 --- a/tests/wpt/web-platform-tests/cookies/attributes/resources/path/two.html +++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/two.html @@ -8,6 +8,7 @@ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout.html index 1b53e773a18..5ff90b9f15f 100644 --- a/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout.html +++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout.html @@ -8,6 +8,7 @@ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout/one.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout/one.html index 1b53e773a18..5ff90b9f15f 100644 --- a/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout/one.html +++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout/one.html @@ -8,6 +8,7 @@ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/secure-non-secure-child.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/secure-non-secure-child.html index 443b0a17f74..e5d68b8d07e 100644 --- a/tests/wpt/web-platform-tests/cookies/attributes/resources/secure-non-secure-child.html +++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/secure-non-secure-child.html @@ -12,6 +12,7 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/cookies/domain/support/idn-child.sub.https.html b/tests/wpt/web-platform-tests/cookies/domain/support/idn-child.sub.https.html new file mode 100644 index 00000000000..d3510959fb0 --- /dev/null +++ b/tests/wpt/web-platform-tests/cookies/domain/support/idn-child.sub.https.html @@ -0,0 +1,72 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/cookies/domain/support/idn.py b/tests/wpt/web-platform-tests/cookies/domain/support/idn.py new file mode 100644 index 00000000000..d75ed056f52 --- /dev/null +++ b/tests/wpt/web-platform-tests/cookies/domain/support/idn.py @@ -0,0 +1,61 @@ +# élève. +utf8_subdomain = b"Domain=\xC3\xA9\x6C\xC3\xA8\x76\x65." +# élève。 +utf8_dot_subdomain = b"Domain=\xC3\xA9\x6C\xC3\xA8\x76\x65\xE3\x80\x82" +# élève. +punycode_subdomain = b"Domain=xn--lve-6lad." +# ÿlève. +wrong_utf8_subdomain = b"Domain=\xC3\xBF\x6C\xC3\xA8\x76\x65." +# ÿlève. +wrong_punycode_subdomain = b"Domain=xn--lve-6la7i." +# élève with invalid FF byte at the end +invalid_byte_subdomain = b"Domain=\xC3\xA9\x6C\xC3\xA8\x76\x65\xFF." + +def main(request, response): + host = request.GET.get(b"host") + + if b"set-utf8" in request.GET: + response.headers.append(b"Set-Cookie", b"utf8=set;" + utf8_subdomain + host) + response.content = "set" + if b"set-utf8-dot" in request.GET: + response.headers.append(b"Set-Cookie", b"utf8-dot=set;" + utf8_dot_subdomain + host) + response.content = "set" + elif b"set-wrong-utf8" in request.GET: + response.headers.append(b"Set-Cookie", b"wrong-utf8=set;" + wrong_utf8_subdomain + host) + response.content = "set" + elif b"set-punycode" in request.GET: + response.headers.append(b"Set-Cookie", b"punycode=set;" + punycode_subdomain + host) + response.content = "set" + elif b"set-wrong-punycode" in request.GET: + response.headers.append(b"Set-Cookie", b"wrong-punycode=set;" + wrong_punycode_subdomain + host) + response.content = "set" + elif b"set-invalid-byte" in request.GET: + response.headers.append(b"Set-Cookie", b"invalid-byte=set;" + invalid_byte_subdomain + host) + response.content = "set" + + elif b"get" in request.GET: + if b"Cookie" in request.headers: + response.content = request.headers[b"Cookie"] + else: + response.content = "no cookies" + + elif b"delete-utf8" in request.GET: + response.headers.append(b"Set-Cookie", b"utf8=unset;Max-Age=0;" + utf8_subdomain + host) + response.content = "delete" + elif b"delete-utf8-dot" in request.GET: + response.headers.append(b"Set-Cookie", b"utf8-dot=unset;Max-Age=0;" + utf8_dot_subdomain + host) + response.content = "delete" + elif b"delete-wrong-utf8" in request.GET: + response.headers.append(b"Set-Cookie", b"wrong-utf8=unset;Max-Age=0;" + wrong_utf8_subdomain + host) + response.content = "delete" + elif b"delete-punycode" in request.GET: + response.headers.append(b"Set-Cookie", b"punycode=unset;Max-Age=0;" + punycode_subdomain + host) + response.content = "delete" + elif b"delete-wrong-punycode" in request.GET: + response.headers.append(b"Set-Cookie", b"wrong-punycode=unset;Max-Age=0;" + wrong_punycode_subdomain + host) + response.content = "delete" + elif b"delete-invalid-byte" in request.GET: + response.headers.append(b"Set-Cookie", b"invalid-byte=unset;Max-Age=0;" + invalid_byte_subdomain + host) + response.content = "delete" + + response.headers.append(b"Content-Type", b"text/plain") diff --git a/tests/wpt/web-platform-tests/cookies/name/name.html b/tests/wpt/web-platform-tests/cookies/name/name.html index 5379b22be48..d7fe05560e9 100644 --- a/tests/wpt/web-platform-tests/cookies/name/name.html +++ b/tests/wpt/web-platform-tests/cookies/name/name.html @@ -131,6 +131,11 @@ expected: "test17b", name: "Overwrite nameless cookie", }, + { + cookie: ["=__Secure-abc=123", "=__Host-abc=123", "=__SeCuRe-abc=123", "=__HoSt-abc=123", "__Secure-abc", "__Host-abc", "__SeCuRe-abc", "__HoSt-abc"], + expected: "", + name: "Ignore nameless cookies that impersonate cookie prefixes", + }, { cookie: "=", expected: "", diff --git a/tests/wpt/web-platform-tests/cookies/path/default.html b/tests/wpt/web-platform-tests/cookies/path/default.html index 031bc748408..dbe99a7ee59 100644 --- a/tests/wpt/web-platform-tests/cookies/path/default.html +++ b/tests/wpt/web-platform-tests/cookies/path/default.html @@ -31,13 +31,13 @@ async_test(function (t) { !!iframe.contentWindow.isCookieSet('cookies-path-default'), 'cookie can be retrieved from expected path' ); - iframe.contentWindow.expireCookies().then(() => { + iframe.contentWindow.expireCookies().then(t.step_func(function () { assert_false( !!iframe.contentWindow.isCookieSet('cookies-path-default'), 'cookie can be referenced using the expected path' ); t.done(); - }); + })); }); createIframe('/cookies/resources/echo-cookie.html', t.step_func(function (_iframe) { diff --git a/tests/wpt/web-platform-tests/cookies/path/match.html b/tests/wpt/web-platform-tests/cookies/path/match.html index 35402839fc1..d517836e4dd 100644 --- a/tests/wpt/web-platform-tests/cookies/path/match.html +++ b/tests/wpt/web-platform-tests/cookies/path/match.html @@ -41,14 +41,14 @@ var testCookiePathFromHeader = function (testCase, test) { iframe.contentWindow.fetchCookieThen('header-' + testCase.name, testCase.path).then(test.step_func(function (response) { assert_true(response.ok); var cookieSet = iframe.contentWindow.isCookieSet('header-' + testCase.name, testCase.path); - iframe.contentWindow.expireCookies().then(() => { + iframe.contentWindow.expireCookies().then(test.step_func(function () { if (testCase.match === false) { assert_equals(cookieSet, null); } else { assert_not_equals(cookieSet, null, "Cookie path from header should not be `null`"); } test.done(); - }); + })); })).catch(test.unreached_func()); })); }; diff --git a/tests/wpt/web-platform-tests/cookies/prefix/__host.document-cookie.html b/tests/wpt/web-platform-tests/cookies/prefix/__host.document-cookie.html index e1a272a2340..2aeb0901f69 100644 --- a/tests/wpt/web-platform-tests/cookies/prefix/__host.document-cookie.html +++ b/tests/wpt/web-platform-tests/cookies/prefix/__host.document-cookie.html @@ -13,6 +13,14 @@ title: "__Host: Non-secure origin: 'Path=/;" + extraParams + "'" }); + set_prefixed_cookie_via_dom_test({ + prefix: "__HoSt-", + params: "Path=/;" + extraParams, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Non-secure origin: 'Path=/;" + extraParams + "'" + }); + // With 'secure' set_prefixed_cookie_via_dom_test({ prefix: "__Host-", @@ -21,6 +29,14 @@ shouldExistViaHTTP: false, title: "__Host: Non-secure origin: 'Secure; Path=/;" + extraParams + "'" }); + + set_prefixed_cookie_via_dom_test({ + prefix: "__HoSt-", + params: "Secure; Path=/;" + extraParams, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Non-secure origin: 'Secure; Path=/;" + extraParams + "'" + }); }); set_prefixed_cookie_via_dom_test({ @@ -30,4 +46,12 @@ shouldExistViaHTTP: false, title: "__Host: Non-secure origin: 'Secure; Path=/cookies/resources/list.py'" }); + + set_prefixed_cookie_via_dom_test({ + prefix: "__HoSt-", + params: "Secure; Path=/cookies/resources/list.py", + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Non-secure origin: 'Secure; Path=/cookies/resources/list.py'" + }); diff --git a/tests/wpt/web-platform-tests/cookies/prefix/__host.document-cookie.https.html b/tests/wpt/web-platform-tests/cookies/prefix/__host.document-cookie.https.html index 05ecdff358f..cc0cb34ecb8 100644 --- a/tests/wpt/web-platform-tests/cookies/prefix/__host.document-cookie.https.html +++ b/tests/wpt/web-platform-tests/cookies/prefix/__host.document-cookie.https.html @@ -13,6 +13,14 @@ title: "__Host: Secure origin: Does not set 'Path=/;" + extraParams + "'" }); + set_prefixed_cookie_via_dom_test({ + prefix: "__HoSt-", + params: "Path=/;" + extraParams, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Secure origin: Does not set 'Path=/;" + extraParams + "'" + }); + // With 'secure' set_prefixed_cookie_via_dom_test({ prefix: "__Host-", @@ -22,6 +30,14 @@ title: "__Host: Secure origin: Does set 'Secure; Path=/;" + extraParams + "'" }); + set_prefixed_cookie_via_dom_test({ + prefix: "__HoSt-", + params: "Secure; Path=/;" + extraParams, + shouldExistInDOM: true, + shouldExistViaHTTP: true, + title: "__HoSt: Secure origin: Does set 'Secure; Path=/;" + extraParams + "'" + }); + // With 'domain' set_prefixed_cookie_via_dom_test({ prefix: "__Host-", @@ -30,6 +46,14 @@ shouldExistViaHTTP: false, title: "__Host: Secure origin: Does not set 'Secure; Path=/; Domain=" + document.location.hostname + "; " + extraParams + "'" }); + + set_prefixed_cookie_via_dom_test({ + prefix: "__HoSt-", + params: "Secure; Path=/; Domain=" + document.location.hostname + "; " + extraParams, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Secure origin: Does not set 'Secure; Path=/; Domain=" + document.location.hostname + "; " + extraParams + "'" + }); }); set_prefixed_cookie_via_dom_test({ @@ -39,4 +63,12 @@ shouldExistViaHTTP: false, title: "__Host: Secure origin: Does not set 'Secure; Path=/cookies/resources/list.py'" }); + + set_prefixed_cookie_via_dom_test({ + prefix: "__HoSt-", + params: "Secure; Path=/cookies/resources/list.py", + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Secure origin: Does not set 'Secure; Path=/cookies/resources/list.py'" + }); diff --git a/tests/wpt/web-platform-tests/cookies/prefix/__host.header.html b/tests/wpt/web-platform-tests/cookies/prefix/__host.header.html index de46485e44c..7ad6782584f 100644 --- a/tests/wpt/web-platform-tests/cookies/prefix/__host.header.html +++ b/tests/wpt/web-platform-tests/cookies/prefix/__host.header.html @@ -14,6 +14,15 @@ title: "__Host: Non-secure origin: Does not set 'Path=/;" + extraParams + "'" }); + set_prefixed_cookie_via_http_test({ + prefix: "__HoSt-", + params: "Path=/;" + extraParams, + origin: self.origin, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Non-secure origin: Does not set 'Path=/;" + extraParams + "'" + }); + // With 'secure' set_prefixed_cookie_via_http_test({ prefix: "__Host-", @@ -24,6 +33,15 @@ title: "__Host: Non-secure origin: Does not set 'Secure; Path=/;" + extraParams + "'" }); + set_prefixed_cookie_via_http_test({ + prefix: "__HoSt-", + params: "Secure; Path=/;" + extraParams, + origin: self.origin, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Non-secure origin: Does not set 'Secure; Path=/;" + extraParams + "'" + }); + // With 'domain' set_prefixed_cookie_via_http_test({ prefix: "__Host-", @@ -33,6 +51,15 @@ shouldExistViaHTTP: false, title: "__Host: Secure origin: Does not set 'Secure; Path=/; Domain=" + document.location.hostname + "; " + extraParams + "'" }); + + set_prefixed_cookie_via_http_test({ + prefix: "__HoSt-", + params: "Secure; Path=/; Domain=" + document.location.hostname + "; " + extraParams, + origin: self.origin, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Secure origin: Does not set 'Secure; Path=/; Domain=" + document.location.hostname + "; " + extraParams + "'" + }); }); set_prefixed_cookie_via_http_test({ @@ -43,5 +70,14 @@ shouldExistViaHTTP: false, title: "__Host: Non-secure origin: Does not set 'Secure; Path=/cookies/resources/list.py'" }); + + set_prefixed_cookie_via_http_test({ + prefix: "__HoSt-", + params: "Secure; Path=/cookies/resources/list.py", + origin: self.origin, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Non-secure origin: Does not set 'Secure; Path=/cookies/resources/list.py'" + }); diff --git a/tests/wpt/web-platform-tests/cookies/prefix/__host.header.https.html b/tests/wpt/web-platform-tests/cookies/prefix/__host.header.https.html index a71f75ef41b..b7f13652760 100644 --- a/tests/wpt/web-platform-tests/cookies/prefix/__host.header.https.html +++ b/tests/wpt/web-platform-tests/cookies/prefix/__host.header.https.html @@ -14,6 +14,15 @@ title: "__Host: Secure origin: Does not set 'Path=/;" + extraParams + "'" }); + set_prefixed_cookie_via_http_test({ + prefix: "__HoSt-", + params: "Path=/;" + extraParams, + origin: self.origin, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Secure origin: Does not set 'Path=/;" + extraParams + "'" + }); + // With 'secure' set_prefixed_cookie_via_http_test({ prefix: "__Host-", @@ -24,6 +33,15 @@ title: "__Host: Secure origin: Does set 'Secure; Path=/;" + extraParams + "'" }); + set_prefixed_cookie_via_http_test({ + prefix: "__HoSt-", + params: "Secure; Path=/;" + extraParams, + origin: self.origin, + shouldExistInDOM: true, + shouldExistViaHTTP: true, + title: "__HoSt: Secure origin: Does set 'Secure; Path=/;" + extraParams + "'" + }); + // With 'domain' set_prefixed_cookie_via_http_test({ prefix: "__Host-", @@ -33,6 +51,15 @@ shouldExistViaHTTP: false, title: "__Host: Secure origin: Does not set 'Secure; Path=/; Domain=" + document.location.hostname + "; " + extraParams + "'" }); + + set_prefixed_cookie_via_http_test({ + prefix: "__HoSt-", + params: "Secure; Path=/; Domain=" + document.location.hostname + "; " + extraParams, + origin: self.origin, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Secure origin: Does not set 'Secure; Path=/; Domain=" + document.location.hostname + "; " + extraParams + "'" + }); }); set_prefixed_cookie_via_http_test({ @@ -43,5 +70,14 @@ shouldExistViaHTTP: false, title: "__Host: Secure origin: Does not set 'Secure; Path=/cookies/resources/list.py'" }); + + set_prefixed_cookie_via_http_test({ + prefix: "__HoSt-", + params: "Secure; Path=/cookies/resources/list.py", + origin: self.origin, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__HoSt: Secure origin: Does not set 'Secure; Path=/cookies/resources/list.py'" + }); diff --git a/tests/wpt/web-platform-tests/cookies/prefix/__secure.document-cookie.html b/tests/wpt/web-platform-tests/cookies/prefix/__secure.document-cookie.html index a1b335b9816..2246ffff4c0 100644 --- a/tests/wpt/web-platform-tests/cookies/prefix/__secure.document-cookie.html +++ b/tests/wpt/web-platform-tests/cookies/prefix/__secure.document-cookie.html @@ -13,6 +13,14 @@ title: "__Secure: Non-secure origin: Should not set 'Path=/;" + extraParams + "'" }); + set_prefixed_cookie_via_dom_test({ + prefix: "__SeCuRe-", + params: "Path=/;" + extraParams, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__SeCuRe: Non-secure origin: Should not set 'Path=/;" + extraParams + "'" + }); + // With 'secure' set_prefixed_cookie_via_dom_test({ prefix: "__Secure-", @@ -21,5 +29,13 @@ shouldExistViaHTTP: false, title: "__Secure: Non-secure origin: Should not set 'Secure; Path=/;" + extraParams + "'" }); + + set_prefixed_cookie_via_dom_test({ + prefix: "__SeCuRe-", + params: "Secure; Path=/;" + extraParams, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__SeCuRe: Non-secure origin: Should not set 'Secure; Path=/;" + extraParams + "'" + }); }); diff --git a/tests/wpt/web-platform-tests/cookies/prefix/__secure.document-cookie.https.html b/tests/wpt/web-platform-tests/cookies/prefix/__secure.document-cookie.https.html index 89b14604380..4b600032a8b 100644 --- a/tests/wpt/web-platform-tests/cookies/prefix/__secure.document-cookie.https.html +++ b/tests/wpt/web-platform-tests/cookies/prefix/__secure.document-cookie.https.html @@ -13,6 +13,14 @@ title: "__Secure: Secure origin: Should not set 'Path=/;" + extraParams + "'" }); + set_prefixed_cookie_via_dom_test({ + prefix: "__SeCuRe-", + params: "Path=/;" + extraParams, + shouldExistInDOM: false, + shouldExistViaHTTP: false, + title: "__SeCuRe: Secure origin: Should not set 'Path=/;" + extraParams + "'" + }); + // With 'secure' set_prefixed_cookie_via_dom_test({ prefix: "__Secure-", @@ -21,5 +29,13 @@ shouldExistViaHTTP: true, title: "__Secure: Secure origin: Should set 'Secure; Path=/;" + extraParams + "'" }); + + set_prefixed_cookie_via_dom_test({ + prefix: "__SeCuRe-", + params: "Secure; Path=/;" + extraParams, + shouldExistInDOM: true, + shouldExistViaHTTP: true, + title: "__SeCuRe: Secure origin: Should set 'Secure; Path=/;" + extraParams + "'" + }); }); diff --git a/tests/wpt/web-platform-tests/cookies/prefix/__secure.header.html b/tests/wpt/web-platform-tests/cookies/prefix/__secure.header.html index fb369b62a3b..85665afefd7 100644 --- a/tests/wpt/web-platform-tests/cookies/prefix/__secure.header.html +++ b/tests/wpt/web-platform-tests/cookies/prefix/__secure.header.html @@ -13,6 +13,14 @@ title: "__Secure: Non-secure origin: Should not set 'Path=/;" + extraParams + "'" }); + set_prefixed_cookie_via_http_test({ + prefix: "__SeCuRe-", + params: "Path=/;" + extraParams, + origin: self.origin, + shouldExistViaHTTP: false, + title: "__SeCuRe: Non-secure origin: Should not set 'Path=/;" + extraParams + "'" + }); + // With 'secure' set_prefixed_cookie_via_http_test({ prefix: "__Secure-", @@ -21,5 +29,13 @@ shouldExistViaHTTP: false, title: "__Secure: Non-secure origin: Should not set 'Secure; Path=/;" + extraParams + "'" }); + + set_prefixed_cookie_via_http_test({ + prefix: "__SeCuRe-", + params: "Secure; Path=/;" + extraParams, + origin: self.origin, + shouldExistViaHTTP: false, + title: "__SeCuRe: Non-secure origin: Should not set 'Secure; Path=/;" + extraParams + "'" + }); }); diff --git a/tests/wpt/web-platform-tests/cookies/prefix/__secure.header.https.html b/tests/wpt/web-platform-tests/cookies/prefix/__secure.header.https.html index 70d29873cf2..a6fee03b0c1 100644 --- a/tests/wpt/web-platform-tests/cookies/prefix/__secure.header.https.html +++ b/tests/wpt/web-platform-tests/cookies/prefix/__secure.header.https.html @@ -13,6 +13,14 @@ title: "__Secure: secure origin: Should not set 'Path=/;" + extraParams + "'" }); + set_prefixed_cookie_via_http_test({ + prefix: "__SeCuRe-", + params: "Path=/;" + extraParams, + origin: self.origin, + shouldExistViaHTTP: false, + title: "__SeCuRe: secure origin: Should not set 'Path=/;" + extraParams + "'" + }); + // With 'secure' set_prefixed_cookie_via_http_test({ prefix: "__Secure-", @@ -21,6 +29,14 @@ shouldExistViaHTTP: true, title: "__Secure: secure origin: Should set 'Secure;Path=/;" + extraParams + "'" }); + + set_prefixed_cookie_via_http_test({ + prefix: "__SeCuRe-", + params: "Secure;Path=/;" + extraParams, + origin: self.origin, + shouldExistViaHTTP: true, + title: "__SeCuRe: secure origin: Should set 'Secure;Path=/;" + extraParams + "'" + }); }); // Without 'secure' @@ -33,6 +49,15 @@ title: "__Secure: secure origin: Should not set 'Path=/;domain=" + CROSS_SITE_HOST + "'" }); + set_prefixed_cookie_via_http_test({ + prefix: "__SeCuRe-", + // SameSite=None is necessary because cross-site origins cannot set SameSite cookies via fetch. + params: "Path=/;SameSite=None;domain=" + CROSS_SITE_HOST, + origin: SECURE_CROSS_SITE_ORIGIN, + shouldExistViaHTTP: false, + title: "__SeCuRe: secure origin: Should not set 'Path=/;domain=" + CROSS_SITE_HOST + "'" + }); + // With 'secure' set_prefixed_cookie_via_http_test({ prefix: "__Secure-", @@ -42,4 +67,13 @@ shouldExistViaHTTP: true, title: "__Secure: secure origin: Should set 'Secure;Path=/;domain=" + CROSS_SITE_HOST + "'" }); + + set_prefixed_cookie_via_http_test({ + prefix: "__SeCuRe-", + // SameSite=None is necessary because cross-site origins cannot set SameSite cookies via fetch. + params: "Secure;SameSite=None;Path=/;domain=" + CROSS_SITE_HOST, + origin: SECURE_CROSS_SITE_ORIGIN, + shouldExistViaHTTP: true, + title: "__SeCuRe: secure origin: Should set 'Secure;Path=/;domain=" + CROSS_SITE_HOST + "'" + }); diff --git a/tests/wpt/web-platform-tests/cookies/prefix/document-cookie.non-secure.html b/tests/wpt/web-platform-tests/cookies/prefix/document-cookie.non-secure.html index dbf92207a13..efa16a8c5ee 100644 --- a/tests/wpt/web-platform-tests/cookies/prefix/document-cookie.non-secure.html +++ b/tests/wpt/web-platform-tests/cookies/prefix/document-cookie.non-secure.html @@ -26,13 +26,17 @@ // `__Secure-` Prefix ["", "domain="+document.location.hostname, "MaxAge=10", "HttpOnly"].forEach(params => { create_test("__Secure-", "Path=/;" + params, false, false, "__Secure: Non-secure origin: 'Path=/;" + params + "'"); + create_test("__SeCuRe-", "Path=/;" + params, false, false, "__SeCuRe: Non-secure origin: 'Path=/;" + params + "'"); create_test("__Secure-", "Secure; Path=/;" + params, false, false, "__Secure: Non-secure origin: 'Secure; Path=/;" + params + "'"); + create_test("__SeCuRe-", "Secure; Path=/;" + params, false, false, "__SeCuRe: Non-secure origin: 'Secure; Path=/;" + params + "'"); }); // `__Host-` Prefix ["", "domain="+document.location.hostname, "MaxAge=10", "HttpOnly"].forEach(params => { - create_test("__Secure-", "Path=/;" + params, false, false, "__Host: Non-secure origin: 'Path=/; " + params + "'"); - create_test("__Secure-", "Secure; Path=/;" + params, false, false, "__Host: Non-secure origin: 'Secure; Path=/; " + params + "'"); + create_test("__Host-", "Path=/;" + params, false, false, "__Host: Non-secure origin: 'Path=/; " + params + "'"); + create_test("__HoSt-", "Path=/;" + params, false, false, "__HoSt: Non-secure origin: 'Path=/; " + params + "'"); + create_test("__Host-", "Secure; Path=/;" + params, false, false, "__Host: Non-secure origin: 'Secure; Path=/; " + params + "'"); + create_test("__HoSt-", "Secure; Path=/;" + params, false, false, "__HoSt: Non-secure origin: 'Secure; Path=/; " + params + "'"); }); create_test("__Secure-", "Path=/cookies/resources/list.py;Secure", false, false, "__Host: Non-secure origin: 'Path=/cookies/resources/list.py;Secure'"); diff --git a/tests/wpt/web-platform-tests/cookies/resources/__init__.py b/tests/wpt/web-platform-tests/cookies/resources/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/web-platform-tests/cookies/resources/cookie-test.js b/tests/wpt/web-platform-tests/cookies/resources/cookie-test.js index 2e435ddc5b5..c73d4d756dc 100644 --- a/tests/wpt/web-platform-tests/cookies/resources/cookie-test.js +++ b/tests/wpt/web-platform-tests/cookies/resources/cookie-test.js @@ -119,7 +119,15 @@ function domCookieTest(cookie, expectedValue, name) { await test_driver.delete_all_cookies(); t.add_cleanup(test_driver.delete_all_cookies); - document.cookie = cookie; + if (typeof cookie === "string") { + document.cookie = cookie; + } else if (Array.isArray(cookie)) { + for (const singlecookie of cookie) { + document.cookie = singlecookie; + } + } else { + throw new Error('Unexpected type passed into domCookieTest as cookie: ' + typeof cookie); + } let cookies = document.cookie; assert_equals(cookies, expectedValue, Boolean(expectedValue) ? 'The cookie was set as expected.' : @@ -143,3 +151,15 @@ function getCtlCharacters() { function cookieStringWithNameAndValueLengths(nameLength, valueLength) { return `${"t".repeat(nameLength)}=${"1".repeat(valueLength)}`; } + +// Finds the root window.top.opener and directs test_driver commands to it. +// +// If you see a message like: "Error: Tried to run in a non-testharness window +// without a call to set_test_context." then you probably need to call this. +function setTestContextUsingRootWindow() { + let test_window = window.top; + while (test_window.opener && !test_window.opener.closed) { + test_window = test_window.opener.top; + } + test_driver.set_test_context(test_window); +} diff --git a/tests/wpt/web-platform-tests/cookies/resources/echo-cookie.html b/tests/wpt/web-platform-tests/cookies/resources/echo-cookie.html index 172020c5fb9..ab78af83259 100644 --- a/tests/wpt/web-platform-tests/cookies/resources/echo-cookie.html +++ b/tests/wpt/web-platform-tests/cookies/resources/echo-cookie.html @@ -6,6 +6,7 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/cookies/samesite/get_named_cookie-default-samesite.html b/tests/wpt/web-platform-tests/cookies/samesite/get_named_cookie-default-samesite.html new file mode 100644 index 00000000000..405473cc3a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/cookies/samesite/get_named_cookie-default-samesite.html @@ -0,0 +1,16 @@ + + +TestDriver get_named_cookie method w/ default SameSite + + + + + diff --git a/tests/wpt/web-platform-tests/core-aam/abstract_role_not_mapped-manual.html b/tests/wpt/web-platform-tests/core-aam/abstract_role_not_mapped-manual.html new file mode 100644 index 00000000000..ce7568bd77d --- /dev/null +++ b/tests/wpt/web-platform-tests/core-aam/abstract_role_not_mapped-manual.html @@ -0,0 +1,84 @@ + + + + Abstract Roles Not Mapped + + + + + + + + +

    This tests the statement: User agents MUST NOT map abstract roles via the standard role mechanism of the accessibility API.

    +

    content

    + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/core-aam/aria-disabled_false-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-disabled_false-manual.html index e755d8ed039..ec908468c35 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-disabled_false-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-disabled_false-manual.html @@ -61,7 +61,7 @@

    This test examines the ARIA properties for aria-disabled=false.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-errormessage_aria-invalid_false-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-errormessage_aria-invalid_false-manual.html index 5582fa00600..985a8213ecf 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-errormessage_aria-invalid_false-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-errormessage_aria-invalid_false-manual.html @@ -84,7 +84,7 @@

    User agents must not expose aria-errormessage for an object with aria-invalid false.

    -
    content
    +
    hello world
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-errormessage_aria-invalid_true-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-errormessage_aria-invalid_true-manual.html index fada768e740..590a234c623 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-errormessage_aria-invalid_true-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-errormessage_aria-invalid_true-manual.html @@ -84,7 +84,7 @@

    This test examines the ARIA properties for aria-errormessage.

    -
    content
    +
    hello world
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_dialog-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_dialog-manual.html index 15e4268128a..659b9bf3767 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_dialog-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_dialog-manual.html @@ -81,7 +81,7 @@

    This test examines the ARIA properties for aria-haspopup=dialog.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_false-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_false-manual.html index 5e6ba09a587..e940f6148f6 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_false-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_false-manual.html @@ -53,7 +53,7 @@

    This test examines the ARIA properties for aria-haspopup=false.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_listbox-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_listbox-manual.html index 70d12682909..0ebc1bbb268 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_listbox-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_listbox-manual.html @@ -81,7 +81,7 @@

    This test examines the ARIA properties for aria-haspopup=listbox NEW.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_menu-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_menu-manual.html index 16bd21b2bf3..d9a203a8775 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_menu-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_menu-manual.html @@ -81,7 +81,7 @@

    This test examines the ARIA properties for aria-haspopup=menu.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_tree-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_tree-manual.html index c199ab950d4..41de64f47a3 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_tree-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_tree-manual.html @@ -81,7 +81,7 @@

    This test examines the ARIA properties for aria-haspopup=tree.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_true-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_true-manual.html index 57b5ad4b8a5..b9e046cdd7f 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-haspopup_true-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-haspopup_true-manual.html @@ -81,7 +81,7 @@

    This test examines the ARIA properties for aria-haspopup=true.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-invalid_false-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-invalid_false-manual.html index 86c43bbbfff..b48e4193441 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-invalid_false-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-invalid_false-manual.html @@ -61,7 +61,7 @@

    This test examines the ARIA properties for aria-invalid=false.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-invalid_grammar-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-invalid_grammar-manual.html index ee8be2dd2f0..b6a18f965d4 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-invalid_grammar-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-invalid_grammar-manual.html @@ -73,7 +73,7 @@

    This test examines the ARIA properties for aria-invalid=grammar.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-invalid_spelling-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-invalid_spelling-manual.html index 53e9f9852a8..e915c582aac 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-invalid_spelling-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-invalid_spelling-manual.html @@ -73,7 +73,7 @@

    This test examines the ARIA properties for aria-invalid=spelling.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-invalid_true-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-invalid_true-manual.html index 84b966f76c2..a64befd9f7a 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-invalid_true-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-invalid_true-manual.html @@ -73,7 +73,7 @@

    This test examines the ARIA properties for aria-invalid=true.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/aria-invalid_with_unrecognized_value-manual.html b/tests/wpt/web-platform-tests/core-aam/aria-invalid_with_unrecognized_value-manual.html index edef867afe8..49fd59822bc 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-invalid_with_unrecognized_value-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-invalid_with_unrecognized_value-manual.html @@ -73,7 +73,7 @@

    This test examines the ARIA properties for aria-invalid with unrecognized value.

    -
    content
    +
    content
    diff --git a/tests/wpt/web-platform-tests/core-aam/include_element_referenced_by_global_aria-errormessage-manual.html b/tests/wpt/web-platform-tests/core-aam/include_element_referenced_by_global_aria-errormessage-manual.html index ebee0f6df32..273b99d4222 100644 --- a/tests/wpt/web-platform-tests/core-aam/include_element_referenced_by_global_aria-errormessage-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/include_element_referenced_by_global_aria-errormessage-manual.html @@ -61,7 +61,7 @@

    This test examines the ARIA properties for Include element referenced by global aria-errormessage.

    -
    content
    +
    content
    hello world
    diff --git a/tests/wpt/web-platform-tests/core-aam/invalid_role_not_mapped-manual.html b/tests/wpt/web-platform-tests/core-aam/invalid_role_not_mapped-manual.html new file mode 100644 index 00000000000..b4c68ebea20 --- /dev/null +++ b/tests/wpt/web-platform-tests/core-aam/invalid_role_not_mapped-manual.html @@ -0,0 +1,85 @@ + + + + Invalid Roles Not Mapped + + + + + + + + +

    This tests the statement: If the role attribute contains no tokens matching the name of a non-abstract WAI-ARIA role, the user agent MUST treat the element as if no role had been provided.

    +

    content

    + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/core-aam/subscript-manual.html b/tests/wpt/web-platform-tests/core-aam/subscript-manual.html index 3b8f8509870..d445f896c6b 100644 --- a/tests/wpt/web-platform-tests/core-aam/subscript-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/subscript-manual.html @@ -57,7 +57,7 @@ "property", "role", "is", - "ROLE_SYSTEM_TEXT" + "ROLE_SYSTEM_GROUPING" ] ], "UIA" : [ diff --git a/tests/wpt/web-platform-tests/core-aam/superscript-manual.html b/tests/wpt/web-platform-tests/core-aam/superscript-manual.html index 2a9bd42a0e0..5863f9b188e 100644 --- a/tests/wpt/web-platform-tests/core-aam/superscript-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/superscript-manual.html @@ -57,7 +57,7 @@ "property", "role", "is", - "ROLE_SYSTEM_TEXT" + "ROLE_SYSTEM_GROUPING" ] ], "UIA" : [ diff --git a/tests/wpt/web-platform-tests/cors/client-hint-request-headers-2.tentative.htm b/tests/wpt/web-platform-tests/cors/client-hint-request-headers-2.tentative.htm index 4ec217c8347..f7ec3dc6d1b 100644 --- a/tests/wpt/web-platform-tests/cors/client-hint-request-headers-2.tentative.htm +++ b/tests/wpt/web-platform-tests/cors/client-hint-request-headers-2.tentative.htm @@ -23,6 +23,9 @@ test(function() { client.setRequestHeader('dpr', '2.0') client.setRequestHeader('width', '35') client.setRequestHeader('viewport-width', '42') + client.setRequestHeader('rtt', '1') + client.setRequestHeader('downlink', '1.0') + client.setRequestHeader('ect', '2g') client.send(null) const res = JSON.parse(client.response) @@ -36,6 +39,9 @@ test(function() { assert_equals(res['dpr'], '2.0') assert_equals(res['width'], '35') assert_equals(res['viewport-width'], '42') + assert_equals(res['rtt'], '1') + assert_equals(res['downlink'], '1.0') + assert_equals(res['ect'], '2g') }, 'Client hint headers are simple headers') diff --git a/tests/wpt/web-platform-tests/cors/client-hint-request-headers.htm b/tests/wpt/web-platform-tests/cors/client-hint-request-headers.htm index 17fbd3daa3f..6cf298433eb 100644 --- a/tests/wpt/web-platform-tests/cors/client-hint-request-headers.htm +++ b/tests/wpt/web-platform-tests/cors/client-hint-request-headers.htm @@ -46,4 +46,37 @@ test(function() { assert_throws_dom("NetworkError", function() { client.send(null) }) }, 'Unextractable viewport-width client hint header is disallowed') +test(function() { + var client = new XMLHttpRequest() + client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-print', false) + client.setRequestHeader('rtt', '') + assert_throws_dom("NetworkError", function() { client.send(null) }) + client = new XMLHttpRequest() + client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-print', false) + client.setRequestHeader('rtt', '-1') + assert_throws_dom("NetworkError", function() { client.send(null) }) +}, 'Test invalid rtt value is disallowed') + +test(function() { + var client = new XMLHttpRequest() + client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-print', false) + client.setRequestHeader('downlink', '') + assert_throws_dom("NetworkError", function() { client.send(null) }) + client = new XMLHttpRequest() + client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-print', false) + client.setRequestHeader('downlink', '-1.0') + assert_throws_dom("NetworkError", function() { client.send(null) }) +}, 'Test invalid downlink value is disallowed') + +test(function() { + var client = new XMLHttpRequest() + client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-print', false) + client.setRequestHeader('ect', '') + assert_throws_dom("NetworkError", function() { client.send(null) }) + client = new XMLHttpRequest() + client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-print', false) + client.setRequestHeader('ect', '6g') + assert_throws_dom("NetworkError", function() { client.send(null) }) +}, 'Test invalid ect value is disallowed') + diff --git a/tests/wpt/web-platform-tests/cors/resources/access-control-expose-headers.json b/tests/wpt/web-platform-tests/cors/resources/access-control-expose-headers.json index 4ab38fbe09b..e8915f7ffe1 100644 --- a/tests/wpt/web-platform-tests/cors/resources/access-control-expose-headers.json +++ b/tests/wpt/web-platform-tests/cors/resources/access-control-expose-headers.json @@ -33,7 +33,7 @@ }, { "input": "Access-Control-Expose-Headers: ,bb-8", - "exposed": false + "exposed": true }, { "input": "Access-Control-Expose-Headers: bb-8\u000C", diff --git a/tests/wpt/web-platform-tests/cors/simple-requests-ch.tentative.htm b/tests/wpt/web-platform-tests/cors/simple-requests-ch.tentative.htm index f9955ac86a4..78212de49e0 100644 --- a/tests/wpt/web-platform-tests/cors/simple-requests-ch.tentative.htm +++ b/tests/wpt/web-platform-tests/cors/simple-requests-ch.tentative.htm @@ -51,7 +51,10 @@ check_simple_headers({ 'device-memory': '2.0', 'dpr': '3.0', 'width': '1200', - 'viewport-width': '1300' + 'viewport-width': '1300', + 'rtt': '1', + 'downlink': '1.0', + 'ect': '2g' }) diff --git a/tests/wpt/web-platform-tests/credential-management/fedcm-cross-origin-policy.https.html b/tests/wpt/web-platform-tests/credential-management/fedcm-cross-origin-policy.https.html new file mode 100644 index 00000000000..808b7f6ea77 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/fedcm-cross-origin-policy.https.html @@ -0,0 +1,18 @@ + +Federated Credential Management API Cross-Origin-Embedder-Policy tests. + + + + + + + diff --git a/tests/wpt/web-platform-tests/credential-management/fedcm-cross-origin-policy.https.html.sub.headers b/tests/wpt/web-platform-tests/credential-management/fedcm-cross-origin-policy.https.html.sub.headers new file mode 100644 index 00000000000..32523a69788 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/fedcm-cross-origin-policy.https.html.sub.headers @@ -0,0 +1 @@ +Cross-Origin-Embedder-Policy: credentialless diff --git a/tests/wpt/web-platform-tests/credential-management/fedcm-csp.https.html b/tests/wpt/web-platform-tests/credential-management/fedcm-csp.https.html new file mode 100644 index 00000000000..59c97e8c38f --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/fedcm-csp.https.html @@ -0,0 +1,17 @@ + +Federated Credential Management API network request tests. + + + + + + + diff --git a/tests/wpt/web-platform-tests/credential-management/fedcm-csp.https.html.sub.headers b/tests/wpt/web-platform-tests/credential-management/fedcm-csp.https.html.sub.headers new file mode 100644 index 00000000000..c1e6fd6c4c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/fedcm-csp.https.html.sub.headers @@ -0,0 +1,2 @@ +Cross-Origin-Embedder-Policy: credentialless +Content-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-inline'; img-src 'self' diff --git a/tests/wpt/web-platform-tests/credential-management/fedcm-iframe.https.html b/tests/wpt/web-platform-tests/credential-management/fedcm-iframe.https.html new file mode 100644 index 00000000000..43fe39f7bcb --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/fedcm-iframe.https.html @@ -0,0 +1,61 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/credential-management/fedcm-logout-rps.https.html b/tests/wpt/web-platform-tests/credential-management/fedcm-logout-rps.https.html new file mode 100644 index 00000000000..51b123003c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/fedcm-logout-rps.https.html @@ -0,0 +1,38 @@ + + +IdentityCredential.logoutRPs() promise resolution + + + + + + diff --git a/tests/wpt/web-platform-tests/credential-management/fedcm-logout-rps.https.html.headers b/tests/wpt/web-platform-tests/credential-management/fedcm-logout-rps.https.html.headers new file mode 100644 index 00000000000..90454dbb227 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/fedcm-logout-rps.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; connect-src https://rp.example diff --git a/tests/wpt/web-platform-tests/credential-management/fedcm-logout.https.html b/tests/wpt/web-platform-tests/credential-management/fedcm-logout.https.html deleted file mode 100644 index e4f83b0f90e..00000000000 --- a/tests/wpt/web-platform-tests/credential-management/fedcm-logout.https.html +++ /dev/null @@ -1,29 +0,0 @@ - - -FederatedCredential.logout() promise resolution - - - - - - diff --git a/tests/wpt/web-platform-tests/credential-management/fedcm-network-requests.https.html b/tests/wpt/web-platform-tests/credential-management/fedcm-network-requests.https.html new file mode 100644 index 00000000000..ebcf61ba18e --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/fedcm-network-requests.https.html @@ -0,0 +1,192 @@ + +Federated Credential Management API network request tests. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/credential-management/fedcm-revoke.https.html b/tests/wpt/web-platform-tests/credential-management/fedcm-revoke.https.html deleted file mode 100644 index c014724b817..00000000000 --- a/tests/wpt/web-platform-tests/credential-management/fedcm-revoke.https.html +++ /dev/null @@ -1,28 +0,0 @@ - - -FederatedCredential.revoke() promise resolution - - - - - - diff --git a/tests/wpt/web-platform-tests/credential-management/fedcm.https.html b/tests/wpt/web-platform-tests/credential-management/fedcm.https.html deleted file mode 100644 index 618f0ec3c24..00000000000 --- a/tests/wpt/web-platform-tests/credential-management/fedcm.https.html +++ /dev/null @@ -1,155 +0,0 @@ - -Federated Credential Management API basics. - - - - diff --git a/tests/wpt/web-platform-tests/credential-management/otpcredential-get-basics.https.html b/tests/wpt/web-platform-tests/credential-management/otpcredential-get-basics.https.html index c0cac166de9..3907f85450f 100644 --- a/tests/wpt/web-platform-tests/credential-management/otpcredential-get-basics.https.html +++ b/tests/wpt/web-platform-tests/credential-management/otpcredential-get-basics.https.html @@ -66,4 +66,12 @@ promise_test(async t => { {otp: {transport: ["sms"]}, signal: signal})); }, 'Should abort request'); +promise_test(async t => { + const controller = new AbortController(); + const signal = controller.signal; + + controller.abort('CustomError'); + await promise_rejects_exactly(t, 'CustomError', navigator.credentials.get( + {otp: {transport: ["sms"]}, signal: signal})); +}, 'Should abort request with reason'); diff --git a/tests/wpt/web-platform-tests/credential-management/support/README.md b/tests/wpt/web-platform-tests/credential-management/support/README.md index 886faa84579..a6d33ff6f75 100644 --- a/tests/wpt/web-platform-tests/credential-management/support/README.md +++ b/tests/wpt/web-platform-tests/credential-management/support/README.md @@ -34,7 +34,7 @@ per engine: ## FedCM Testing -`fedcm-helper.js` exposes `fedcm_test` which is a specialized +`fedcm-mojojs-helper.js` exposes `fedcm_mojo_mock_test` which is a specialized `promise_test` which comes pre-setup with the appropriate mocking infrastructure to emulate platform federated auth backend. The mock is passed to the test function as the second parameter. @@ -42,10 +42,10 @@ function as the second parameter. Example usage: ``` diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm-helper.js b/tests/wpt/web-platform-tests/credential-management/support/fedcm-helper.js deleted file mode 100644 index 428a2fc8477..00000000000 --- a/tests/wpt/web-platform-tests/credential-management/support/fedcm-helper.js +++ /dev/null @@ -1,20 +0,0 @@ -// The testing infra for FedCM is loaded using mojo js shim. To enable these -// tests the browser must be run with these options: -// -// --enable-blink-features=MojoJS,MojoJSTest - -import { MockFederatedAuthRequest } from './fedcm-mock.js'; - -export function fedcm_test(test_func, name, exception, properties) { - promise_test(async (t) => { - assert_implements(navigator.credentials, 'missing navigator.credentials'); - const mock = new MockFederatedAuthRequest(); - try { - await test_func(t, mock); - } catch (e) { - assert_equals(exception, e.message) - } finally { - await mock.reset(); - } - }, name, properties); -} diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm-helper.sub.js b/tests/wpt/web-platform-tests/credential-management/support/fedcm-helper.sub.js new file mode 100644 index 00000000000..52807298925 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm-helper.sub.js @@ -0,0 +1,99 @@ +const alt_manifest_origin = 'https://{{hosts[alt][]}}:{{ports[https][0]}}'; + +// Set the identity provider cookie. +export function set_fedcm_cookie(host) { + return new Promise(resolve => { + if (host == undefined) { + document.cookie = 'cookie=1; SameSite=Strict; Secure'; + resolve(); + } else { + let popup_window = window.open(host + '/credential-management/support/set_cookie'); + + const popup_message_handler = (event) => { + if (event.origin == host) { + popup_window.close(); + window.removeEventListener('message', popup_message_handler); + resolve(); + } + }; + + window.addEventListener('message', popup_message_handler); + } + }); +} + +// Set the alternate identity provider cookie. +export function set_alt_fedcm_cookie() { + return set_fedcm_cookie(alt_manifest_origin); +} + +// Returns FedCM CredentialRequestOptions for which navigator.credentials.get() +// succeeds. +export function default_request_options(manifest_filename) { + if (manifest_filename === undefined) { + manifest_filename = "manifest.py"; + } + const manifest_path = `https://{{host}}:{{ports[https][0]}}/\ +credential-management/support/fedcm/${manifest_filename}`; + return { + identity: { + providers: [{ + configURL: manifest_path, + clientId: '1', + nonce: '2', + }] + } + }; +} + +// Returns alternate FedCM CredentialRequestOptions for which navigator.credentials.get() +// succeeds. +export function default_alt_request_options(manifest_filename) { + if (manifest_filename === undefined) { + manifest_filename = "manifest.py"; + } + const manifest_path = `${alt_manifest_origin}/\ +credential-management/support/fedcm/${manifest_filename}`; + return { + identity: { + providers: [{ + configURL: manifest_path, + clientId: '1', + nonce: '2', + }] + } + }; +} + +// Test wrapper which does FedCM-specific setup. +export function fedcm_test(test_func, test_name) { + promise_test(async t => { + await set_fedcm_cookie(); + await set_alt_fedcm_cookie(); + await test_func(t); + }, test_name); +} + +function select_manifest_impl(manifest_url) { + const url_query = (manifest_url === undefined) + ? '' : '?manifest_url=${manifest_url}'; + + return new Promise(resolve => { + const img = document.createElement('img'); + img.src = 'support/fedcm/select_manifest_in_root_manifest.py?${url_query}'; + img.addEventListener('error', resolve); + document.body.appendChild(img); + }); +} + +// Sets the manifest returned by the next fetch of /.well-known/web_identity +// select_manifest() only affects the next fetch and not any subsequent fetches +// (ex second next fetch). +export function select_manifest(test, test_options) { + // Add cleanup in case that /.well-known/web_identity is not fetched at all. + test.add_cleanup(async () => { + await select_manifest_impl(); + }); + const manifest_url = test_options.identity.providers[0].configURL; + return select_manifest_impl(manifest_url); +} diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm-iframe-level2.html b/tests/wpt/web-platform-tests/credential-management/support/fedcm-iframe-level2.html new file mode 100644 index 00000000000..7622d988ff2 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm-iframe-level2.html @@ -0,0 +1,23 @@ + + + +
    + diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm-iframe.html b/tests/wpt/web-platform-tests/credential-management/support/fedcm-iframe.html new file mode 100644 index 00000000000..c57f54e1dad --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm-iframe.html @@ -0,0 +1,23 @@ + + diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm-mock.js b/tests/wpt/web-platform-tests/credential-management/support/fedcm-mock.js index 407ca8d7702..ef4e94d6e95 100644 --- a/tests/wpt/web-platform-tests/credential-management/support/fedcm-mock.js +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm-mock.js @@ -1,7 +1,7 @@ -import { RequestMode, RequestIdTokenStatus, LogoutStatus, RevokeStatus, FederatedAuthRequest, FederatedAuthRequestReceiver } from '/gen/third_party/blink/public/mojom/webid/federated_auth_request.mojom.m.js'; +import { RequestTokenStatus, LogoutRpsStatus, FederatedAuthRequest, FederatedAuthRequestReceiver } from '/gen/third_party/blink/public/mojom/webid/federated_auth_request.mojom.m.js'; -function toMojoIdTokenStatus(status) { - return RequestIdTokenStatus["k" + status]; +function toMojoTokenStatus(status) { + return RequestTokenStatus["k" + status]; } // A mock service for responding to federated auth requests. @@ -13,18 +13,19 @@ export class MockFederatedAuthRequest { this.receiver_.$.bindHandle(e.handle); } this.interceptor_.start(); - this.idToken_ = null; - this.status_ = RequestIdTokenStatus.kError; - this.logoutStatus_ = LogoutStatus.kError; - this.revokeStatus_ = RevokeStatus.kError; + this.token_ = null; + this.selected_identity_provider_config_url_ = null; + this.status_ = RequestTokenStatus.kError; + this.logoutRpsStatus_ = LogoutRpsStatus.kError; this.returnPending_ = false; this.pendingPromiseResolve_ = null; } // Causes the subsequent `navigator.credentials.get()` to resolve with the token. - returnIdToken(token) { - this.status_ = RequestIdTokenStatus.kSuccess; - this.idToken_ = token; + returnToken(selected_identity_provider_config_url, token) { + this.status_ = RequestTokenStatus.kSuccess; + this.selected_identity_provider_config_url_ = selected_identity_provider_config_url; + this.token_ = token; this.returnPending_ = false; } @@ -32,8 +33,9 @@ export class MockFederatedAuthRequest { returnError(error) { if (error == "Success") throw new Error("Success is not a valid error"); - this.status_ = toMojoIdTokenStatus(error); - this.idToken_ = null; + this.status_ = toMojoTokenStatus(error); + this.selected_identity_provider_config_url_ = null; + this.token_ = null; this.returnPending_ = false; } @@ -43,25 +45,19 @@ export class MockFederatedAuthRequest { this.returnPending_ = true; } - logoutReturn(status) { - let validated = LogoutStatus[status]; + logoutRpsReturn(status) { + let validated = LogoutRpsStatus[status]; if (validated === undefined) throw new Error("Invalid status: " + status); - this.logoutStatus_ = validated; - } - - // Causes the subsequent `FederatedCredential.revoke` to reject with this - // status. - revokeReturn(status) { - let validated = RevokeStatus[status]; - if (validated === undefined) - throw new Error("Invalid status: " + status); - this.revokeStatus_ = validated; + this.logoutRpsStatus_ = validated; } // Implements - // RequestIdToken(url.mojom.Url provider, string id_request, RequestMode mode) => (RequestIdTokenStatus status, string? id_token); - async requestIdToken(provider, idRequest, mode) { + // RequestToken(url.mojom.Url provider, string id_request) => + // (RequestTokenStatus status, + // url.mojom.Url? selected_identity_provider_config_url, + // string? token); + async requestToken(provider, idRequest) { if (this.returnPending_) { this.pendingPromise_ = new Promise((resolve, reject) => { this.pendingPromiseResolve_ = resolve; @@ -70,36 +66,35 @@ export class MockFederatedAuthRequest { } return Promise.resolve({ status: this.status_, - idToken: this.idToken_ + selected_identity_provider_config_url: this.selected_identity_provider_config_url_, + token: this.token_ }); } async cancelTokenRequest() { this.pendingPromiseResolve_({ - status: toMojoIdTokenStatus("ErrorCanceled"), - idToken: null + status: toMojoTokenStatus("ErrorCanceled"), + selected_identity_provider_config_url: null, + token: null }); this.pendingPromiseResolve_ = null; } - async logout(logout_endpoints) { + async logoutRps(logout_endpoints) { return Promise.resolve({ - status: this.logoutStatus_ + status: this.logoutRpsStatus_ }); } - async revoke(provider, client_id, account_id) { - return Promise.resolve({ - status: this.revokeStatus_ - }); + async setIdpSigninStatus(origin, status) { } async reset() { - this.idToken_ = null; - this.status_ = RequestIdTokenStatus.kError; - this.logoutStatus_ = LogoutStatus.kError; + this.token_ = null; + this.selected_identity_provider_config_url_ = null; + this.status_ = RequestTokenStatus.kError; + this.logoutRpsStatus_ = LogoutRpsStatus.kError; this.receiver_.$.close(); - this.revokeStatus_ = RevokeStatus.kError; this.interceptor_.stop(); // Clean up and reset mock stubs asynchronously, so that the blink side diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm-mojojs-helper.js b/tests/wpt/web-platform-tests/credential-management/support/fedcm-mojojs-helper.js new file mode 100644 index 00000000000..40ab729b1f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm-mojojs-helper.js @@ -0,0 +1,20 @@ +// The testing infra for FedCM is loaded using mojo js shim. To enable these +// tests the browser must be run with these options: +// +// --enable-blink-features=MojoJS,MojoJSTest + +import { MockFederatedAuthRequest } from './fedcm-mock.js'; + +export function fedcm_mojo_mock_test(test_func, name, exception, properties) { + promise_test(async (t) => { + assert_implements(navigator.credentials, 'missing navigator.credentials'); + const mock = new MockFederatedAuthRequest(); + try { + await test_func(t, mock); + } catch (e) { + assert_equals(exception, e.message) + } finally { + await mock.reset(); + } + }, name, properties); +} diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/accounts.py b/tests/wpt/web-platform-tests/credential-management/support/fedcm/accounts.py new file mode 100644 index 00000000000..f645dfda4c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/accounts.py @@ -0,0 +1,22 @@ +def main(request, response): + if request.cookies.get(b"cookie") != b"1": + return (530, [], "Missing cookie") + if request.headers.get(b"Accept") != b"application/json": + return (531, [], "Wrong Accept") + if request.headers.get(b"Sec-Fetch-Dest") != b"webidentity": + return (532, [], "Wrong Sec-Fetch-Dest header") + if request.headers.get(b"Referer"): + return (533, [], "Should not have Referer") + + return """ +{ + "accounts": [{ + "id": "1234", + "given_name": "John", + "name": "John Doe", + "email": "john_doe@idp.example", + "picture": "https://idp.example/profile/123", + "approved_clients": ["123", "456", "789"] + }] +} +""" diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/client_metadata.py b/tests/wpt/web-platform-tests/credential-management/support/fedcm/client_metadata.py new file mode 100644 index 00000000000..d81cd96c67a --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/client_metadata.py @@ -0,0 +1,28 @@ +# 'import credential-management.support.fedcm.keys' does not work. +import importlib +keys = importlib.import_module("credential-management.support.fedcm.keys") + +def main(request, response): + if (request.GET.get(b'skip_checks', b'0') != b'1'): + if len(request.cookies) > 0: + return (530, [], "Cookie should not be sent to this endpoint") + if request.headers.get(b"Accept") != b"application/json": + return (531, [], "Wrong Accept") + if request.headers.get(b"Sec-Fetch-Dest") != b"webidentity": + return (532, [], "Wrong Sec-Fetch-Dest header") + if not request.headers.get(b"Referer"): + return (533, [], "Missing Referer") + + counter = request.server.stash.take(keys.CLIENT_METADATA_COUNTER_KEY) + try: + counter = int(counter) + 1 + except (TypeError, ValueError): + counter = 1 + + request.server.stash.put(keys.CLIENT_METADATA_COUNTER_KEY, str(counter).encode()) + + return """ +{{ + "privacy_policy_url": "https://privacypolicy{0}.com" +}} +""".format(str(counter)) diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/client_metadata.py.headers b/tests/wpt/web-platform-tests/credential-management/support/fedcm/client_metadata.py.headers new file mode 100644 index 00000000000..7164e5f8182 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/client_metadata.py.headers @@ -0,0 +1 @@ +Cache-Control: public, max-age=86400 diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/client_metadata_clear_count.py b/tests/wpt/web-platform-tests/credential-management/support/fedcm/client_metadata_clear_count.py new file mode 100644 index 00000000000..3c31bf5077d --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/client_metadata_clear_count.py @@ -0,0 +1,15 @@ +# 'import credential-management.support.fedcm.keys' does not work. +import importlib +keys = importlib.import_module("credential-management.support.fedcm.keys") + +def main(request, response): + client_metadata_url = "/credential-management/support/fedcm/client_metadata.py" + counter = request.server.stash.take(keys.CLIENT_METADATA_COUNTER_KEY, + client_metadata_url) + + try: + counter = counter.decode() + except (UnicodeDecodeError, AttributeError): + pass + + return counter diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/intercept_service_worker.js b/tests/wpt/web-platform-tests/credential-management/support/fedcm/intercept_service_worker.js new file mode 100644 index 00000000000..773e38fd21b --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/intercept_service_worker.js @@ -0,0 +1,10 @@ +var num_overridden = 0; + +self.addEventListener('fetch', event => { + const url = event.request.url; + if (url.indexOf('query_service_worker_intercepts.html') != -1) { + event.respondWith(new Response(num_overridden)); + } else if (url.indexOf('credential-management/support') != -1) { + ++num_overridden; + } +}); diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/keys.py b/tests/wpt/web-platform-tests/credential-management/support/fedcm/keys.py new file mode 100644 index 00000000000..6b7d67e21e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/keys.py @@ -0,0 +1,2 @@ +CLIENT_METADATA_COUNTER_KEY = b"bdc14e3e-b8bc-44a1-8eec-78da5fdacbc3" +MANIFEST_URL_IN_MANIFEST_LIST_KEY = b"7f3f7478-b7f0-41c5-b357-f3ac16f5f25a" diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest-not-in-list.json b/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest-not-in-list.json new file mode 100644 index 00000000000..c66903cfd22 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest-not-in-list.json @@ -0,0 +1,5 @@ +{ + "accounts_endpoint": "accounts.py", + "client_metadata_endpoint": "client_metadata.py", + "id_assertion_endpoint": "token.py" +} diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest.py b/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest.py new file mode 100644 index 00000000000..a125c2e391f --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest.py @@ -0,0 +1,18 @@ +def main(request, response): + if len(request.cookies) > 0: + return (530, [], "Cookie should not be sent to manifest endpoint") + if request.headers.get(b"Accept") != b"application/json": + return (531, [], "Wrong Accept") + if request.headers.get(b"Sec-Fetch-Dest") != b"webidentity": + return (532, [], "Wrong Sec-Fetch-Dest header") + if request.headers.get(b"Referer"): + return (533, [], "Should not have Referer") + + return """ +{ + "accounts_endpoint": "accounts.py", + "client_metadata_endpoint": "client_metadata.py", + "id_assertion_endpoint": "token.py", + "revocation_endpoint": "revoke.py" +} +""" diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest_redirect_accounts.json b/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest_redirect_accounts.json new file mode 100644 index 00000000000..590704cfeb1 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest_redirect_accounts.json @@ -0,0 +1,5 @@ +{ + "accounts_endpoint": "/common/redirect.py?location=/credential-management/support/fedcm/accounts.py", + "client_metadata_endpoint": "client_metadata.py", + "id_assertion_endpoint": "token.py" +} diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest_redirect_token.json b/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest_redirect_token.json new file mode 100644 index 00000000000..190420736df --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/manifest_redirect_token.json @@ -0,0 +1,6 @@ +{ + "accounts_endpoint": "accounts.py", + "client_metadata_endpoint": "client_metadata.py", + "id_assertion_endpoint": "/common/redirect.py?location=/credential-management/support/fedcm/token.py&status=308", + "revocation_endpoint": "revoke.py" +} diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/select_manifest_in_root_manifest.py b/tests/wpt/web-platform-tests/credential-management/support/fedcm/select_manifest_in_root_manifest.py new file mode 100644 index 00000000000..d4f1efff6a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/select_manifest_in_root_manifest.py @@ -0,0 +1,17 @@ +import importlib +from urllib.parse import urlsplit + +# 'import credential-management.support.fedcm.keys' does not work. +keys = importlib.import_module("credential-management.support.fedcm.keys") + +def main(request, response): + root_manifest_url = "/.well-known/web-identity" + + # Clear stash so that a new value can be written. + request.server.stash.take(keys.MANIFEST_URL_IN_MANIFEST_LIST_KEY, root_manifest_url) + + request.server.stash.put(keys.MANIFEST_URL_IN_MANIFEST_LIST_KEY, + request.GET.first(b"manifest_url", b""), + root_manifest_url) + + return root_manifest_url diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/simple.html b/tests/wpt/web-platform-tests/credential-management/support/fedcm/simple.html new file mode 100644 index 00000000000..d62419ce8a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/simple.html @@ -0,0 +1,3 @@ + + +Simple diff --git a/tests/wpt/web-platform-tests/credential-management/support/fedcm/token.py b/tests/wpt/web-platform-tests/credential-management/support/fedcm/token.py new file mode 100644 index 00000000000..2f5e807b6e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/fedcm/token.py @@ -0,0 +1,22 @@ +def main(request, response): + if request.cookies.get(b"cookie") != b"1": + return (530, [], "Missing cookie") + if request.method != "POST": + return (531, [], "Method is not POST") + if request.headers.get(b"Content-Type") != b"application/x-www-form-urlencoded": + return (532, [], "Wrong Content-Type") + if request.headers.get(b"Accept") != b"application/json": + return (533, [], "Wrong Accept") + if request.headers.get(b"Sec-Fetch-Dest") != b"webidentity": + return (500, [], "Wrong Sec-Fetch-Dest header") + if not request.headers.get(b"Referer"): + return (534, [], "Missing Referer") + + if not request.POST.get(b"client_id"): + return (535, [], "Missing 'client_id' POST parameter") + if not request.POST.get(b"account_id"): + return (536, [], "Missing 'account_id' POST parameter") + if not request.POST.get(b"disclosure_text_shown"): + return (537, [], "Missing 'disclosure_text_shown' POST parameter") + + return "{\"token\": \"token\"}" diff --git a/tests/wpt/web-platform-tests/credential-management/support/set_cookie b/tests/wpt/web-platform-tests/credential-management/support/set_cookie new file mode 100644 index 00000000000..1080b366e46 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/set_cookie @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/credential-management/support/set_cookie.headers b/tests/wpt/web-platform-tests/credential-management/support/set_cookie.headers new file mode 100644 index 00000000000..cf5ea7fff91 --- /dev/null +++ b/tests/wpt/web-platform-tests/credential-management/support/set_cookie.headers @@ -0,0 +1,2 @@ +Content-Type: text/html +Set-Cookie: cookie=1; SameSite=Strict; Secure diff --git a/tests/wpt/web-platform-tests/css/CSS2/LICENSE-BSD b/tests/wpt/web-platform-tests/css/CSS2/LICENSE-BSD deleted file mode 100644 index f92bc2ee208..00000000000 --- a/tests/wpt/web-platform-tests/css/CSS2/LICENSE-BSD +++ /dev/null @@ -1,26 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - 1. Redistributions of source code must retain the original copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the original - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - 3. Neither the name of the World Wide Web Consortium (W3C) nor the - names of its contributors may be used to endorse or promote - products derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, -OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT -OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tests/wpt/web-platform-tests/css/CSS2/LICENSE-W3CD b/tests/wpt/web-platform-tests/css/CSS2/LICENSE-W3CD deleted file mode 100644 index 2a7cefc49f1..00000000000 --- a/tests/wpt/web-platform-tests/css/CSS2/LICENSE-W3CD +++ /dev/null @@ -1,55 +0,0 @@ -W3C® DOCUMENT LICENSE -http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231 - -Public documents on the W3C site are provided by the copyright holders -under the following license. By using and/or copying this document, -or the W3C document from which this statement is linked, you (the -licensee) agree that you have read, understood, and will comply with -the following terms and conditions: - -Permission to copy, and distribute the contents of this document, or -the W3C document from which this statement is linked, in any medium -for any purpose and without fee or royalty is hereby granted, provided -that you include the following on ALL copies of the document, or -portions thereof, that you use: - - 1. A link or URL to the original W3C document. - 2. The pre-existing copyright notice of the original author, or if - it doesn't exist, a notice (hypertext is preferred, but a textual - representation is permitted) of the form: - "Copyright © [$date-of-document] World Wide Web Consortium, - (Massachusetts Institute of Technology, European Research - Consortium for Informatics and Mathematics, Keio University). - All Rights Reserved. - http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231" - 3. If it exists, the STATUS of the W3C document. - -When space permits, inclusion of the full text of this NOTICE should -be provided. We request that authorship attribution be provided in any -software, documents, or other items or products that you create -pursuant to the implementation of the contents of this document, or -any portion thereof. - -No right to create modifications or derivatives of W3C documents is -granted pursuant to this license. However, if additional requirements -(documented in the Copyright FAQ ) -are satisfied, the right to create modifications or derivatives is -sometimes granted by the W3C to individuals complying with those -requirements. - -THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT -LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT -ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH -CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, -TRADEMARKS OR OTHER RIGHTS. - -COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL -OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE -PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF. - -The name and trademarks of copyright holders may NOT be used in -advertising or publicity pertaining to this document or its contents -without specific, written prior permission. Title to copyright in this -document will at all times remain with copyright holders. diff --git a/tests/wpt/web-platform-tests/css/CSS2/LICENSE-W3CTS b/tests/wpt/web-platform-tests/css/CSS2/LICENSE-W3CTS deleted file mode 100644 index be7ebdf19a0..00000000000 --- a/tests/wpt/web-platform-tests/css/CSS2/LICENSE-W3CTS +++ /dev/null @@ -1,66 +0,0 @@ -W3C® TEST SUITE LICENSE -http://www.w3.org/Consortium/Legal/2008/04-testsuite-license - -This document, Test Suites and other documents that link to this -statement are provided by the copyright holders under the following -license: By using and/or copying this document, or the W3C document -from which this statement is linked, you (the licensee) agree that -you have read, understood, and will comply with the following terms -and conditions: - -Permission to copy, and distribute the contents of this document, or -the W3C document from which this statement is linked, in any medium -for any purpose and without fee or royalty is hereby granted, provided -that you include the following on ALL copies of the document, or -portions thereof, that you use: - - 1. A link or URL to the original W3C document. - 2. The pre-existing copyright notice of the original author, or if - it doesn't exist, a notice (hypertext is preferred, but a textual - representation is permitted) of the form: - "Copyright © [$date-of-document] World Wide Web Consortium, - (Massachusetts Institute of Technology, European Research - Consortium for Informatics and Mathematics, Keio University). - All Rights Reserved. - http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright" - 3. If it exists, the STATUS of the W3C document. - -When space permits, inclusion of the full text of this NOTICE should -be provided. We request that authorship attribution be provided in any -software, documents, or other items or products that you create -pursuant to the implementation of the contents of this document, or -any portion thereof. - -No right to create modifications or derivatives of W3C documents is -granted pursuant to this license. However, if additional requirements -(documented in the Copyright FAQ ) -are satisfied, the right to create modifications or derivatives isD -sometimes granted by the W3C to individuals complying with those -requirements. - -If a Test Suite distinguishes the test harness (or, framework for -navigation) and the actual tests, permission is given to remove or -alter the harness or navigation if the Test Suite in question allows -to do so. The tests themselves shall NOT be changed in any way. - -The name and trademarks of W3C and other copyright holders may NOT be -used in advertising or publicity pertaining to this document or other -documents that link to this statement without specific, written prior -permission. Title to copyright in this document will at all times -remain with copyright holders. Permission is given to use the -trademarked string "W3C" within claims of performance concerning W3C -Specifications or features described therein, and there only, if the -test suite so authorizes. - -THIS WORK IS PROVIDED BY W3C, MIT, ERCIM, KEIO UNIVERSITY, THE -COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL W3C, MIT, ERCIM, KEIO UNIVERSITY, THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/float-root-ref.html b/tests/wpt/web-platform-tests/css/CSS2/floats/float-root-ref.html new file mode 100644 index 00000000000..1f593f460a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/float-root-ref.html @@ -0,0 +1,11 @@ + + + + +

    foo

    + diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/float-root.html b/tests/wpt/web-platform-tests/css/CSS2/floats/float-root.html new file mode 100644 index 00000000000..ee7f70e7844 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/float-root.html @@ -0,0 +1,13 @@ + + + + + + + +

    foo

    + diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/float-under-flatten-under-preserve-3d.html b/tests/wpt/web-platform-tests/css/CSS2/floats/float-under-flatten-under-preserve-3d.html new file mode 100644 index 00000000000..18b6bbc122a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/float-under-flatten-under-preserve-3d.html @@ -0,0 +1,10 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-placement-005-ref.html b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-placement-005-ref.html new file mode 100644 index 00000000000..a286a4aeb75 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-placement-005-ref.html @@ -0,0 +1,26 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-placement-005.html b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-placement-005.html new file mode 100644 index 00000000000..e224a6b773b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-placement-005.html @@ -0,0 +1,34 @@ + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-001-ref.html b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-001-ref.html new file mode 100644 index 00000000000..8e079b1f178 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-001-ref.html @@ -0,0 +1,121 @@ + + + +CSS Reference Case + + + + + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-001.html b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-001.html new file mode 100644 index 00000000000..cc344f0fd58 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-001.html @@ -0,0 +1,114 @@ + + + +CSS Test: If a BFC's inline-axis margin is sufficiently negative such + that it inflates its border-box to be too large to fit alongside a float, + then it should be pushed below the float + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-001a.tentative.html b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-001a.tentative.html new file mode 100644 index 00000000000..9aa6b69ab75 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-001a.tentative.html @@ -0,0 +1,127 @@ + + + +CSS Test: If a BFC's inline-axis margin is sufficiently negative such + that it inflates its border-box to be too large to fit alongside a float, + then it should be pushed below the float + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-002-ref.html b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-002-ref.html new file mode 100644 index 00000000000..03b7d86acbc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-002-ref.html @@ -0,0 +1,96 @@ + + + +CSS Reference Case + + + + + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-002.tentative.html b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-002.tentative.html new file mode 100644 index 00000000000..9c10f2cccf6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-002.tentative.html @@ -0,0 +1,112 @@ + + + +CSS Test: If a BFC's inline-axis margin is sufficiently negative such + that it inflates its border-box to be too large to fit alongside a float, + then it should be pushed below the float + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-003-ref.html b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-003-ref.html new file mode 100644 index 00000000000..ac45eb30bf4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-003-ref.html @@ -0,0 +1,124 @@ + + + +CSS Reference Case + + + + + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-003.tentative.html b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-003.tentative.html new file mode 100644 index 00000000000..f69a11002dd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-003.tentative.html @@ -0,0 +1,147 @@ + + + +CSS Test: BFCs with large margin, placed next to a float + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-004.html b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-004.html new file mode 100644 index 00000000000..cab9e000879 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-004.html @@ -0,0 +1,10 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-005.html b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-005.html new file mode 100644 index 00000000000..5c0bc4f931a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-with-margin-005.html @@ -0,0 +1,10 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/linebox/crashtests/dir-change-simplifed-crash.html b/tests/wpt/web-platform-tests/css/CSS2/linebox/crashtests/dir-change-simplifed-crash.html new file mode 100644 index 00000000000..4e05bc8cb9d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/linebox/crashtests/dir-change-simplifed-crash.html @@ -0,0 +1,16 @@ + + + + + '123456789
    + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-block-in-inline-ref.html b/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-block-in-inline-ref.html new file mode 100644 index 00000000000..4b3ac9f1718 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-block-in-inline-ref.html @@ -0,0 +1,4 @@ + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-block-in-inline.html b/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-block-in-inline.html new file mode 100644 index 00000000000..affbd303add --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-block-in-inline.html @@ -0,0 +1,9 @@ + + + + + +
    + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-wrapped-span-ref.html b/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-wrapped-span-ref.html new file mode 100644 index 00000000000..721d3d8b314 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-wrapped-span-ref.html @@ -0,0 +1,3 @@ + +
    + diff --git a/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-wrapped-span.html b/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-wrapped-span.html new file mode 100644 index 00000000000..b2435a6e301 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/linebox/iframe-in-wrapped-span.html @@ -0,0 +1,8 @@ + + + + + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/linebox/scrollable-overflow.tentative.html b/tests/wpt/web-platform-tests/css/CSS2/linebox/scrollable-overflow.tentative.html deleted file mode 100644 index 8835455fa99..00000000000 --- a/tests/wpt/web-platform-tests/css/CSS2/linebox/scrollable-overflow.tentative.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - -

    Test passes if there is a filled green square.

    -
    -
    - -
    -
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/linebox/support/iframe-inner.html b/tests/wpt/web-platform-tests/css/CSS2/linebox/support/iframe-inner.html new file mode 100644 index 00000000000..9d8f106b48d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/linebox/support/iframe-inner.html @@ -0,0 +1,2 @@ + +More... diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-001.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-001.html new file mode 100644 index 00000000000..c51e4c5329a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-001.html @@ -0,0 +1,29 @@ + + + + + + + + +
    + + +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-002.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-002.html new file mode 100644 index 00000000000..b01eaa93ff1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-002.html @@ -0,0 +1,41 @@ + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html new file mode 100644 index 00000000000..6ede29df26d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html @@ -0,0 +1,29 @@ + + + + + + + + +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html new file mode 100644 index 00000000000..91f8e447d90 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html @@ -0,0 +1,77 @@ + + + + + + + +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-margin.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-margin.html new file mode 100644 index 00000000000..053630706a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-margin.html @@ -0,0 +1,31 @@ + + + + + + + + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html new file mode 100644 index 00000000000..221b70d44b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html @@ -0,0 +1,69 @@ + + + + + + + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-019-ref.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-019-ref.html new file mode 100644 index 00000000000..2cd5b5ab4ed --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-019-ref.html @@ -0,0 +1,18 @@ + + +
    +
    1
    + 2 +
    3
    +
    +
    + 2 +
    3
    +
    4
    +
    +
    +
    1
    + 2 +
    3
    +
    + diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-019.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-019.html new file mode 100644 index 00000000000..1f1cd1ae09a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-019.html @@ -0,0 +1,38 @@ + + + + + + + +
    + +
    1
    +
    3
    +
    +
    + +
    + +
    3
    +
    4
    +
    +
    + +
    + +
    1
    +
    3
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-020-ref.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-020-ref.html new file mode 100644 index 00000000000..3b3d4e8386d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-020-ref.html @@ -0,0 +1,15 @@ + + +
    +
    1
    + 2 +
    3
    +
     
    +
    +
    +
    1
    + 2 +
    3
    +
     
    +
    + diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-020.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-020.html new file mode 100644 index 00000000000..3fbed1b3c05 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-insert-020.html @@ -0,0 +1,40 @@ + + + + + + +
    + +
    1
    +
    3
    +
     
    +
    +
    + +
    + +
    1
    +
     
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-vertical-align-001-ref.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-vertical-align-001-ref.html new file mode 100644 index 00000000000..20a8ae08c0e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-vertical-align-001-ref.html @@ -0,0 +1,19 @@ + + +

    The numbers 1, 2 and 3 below should be in ascending order, from top to bottom, with no overlap.

    +
    + 2 + + 1 +
    3
    + 4 +
    5
    + 6 +
    7
    + 8 +
    +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-vertical-align-001.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-vertical-align-001.html new file mode 100644 index 00000000000..406774c4537 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/block-in-inline-vertical-align-001.html @@ -0,0 +1,35 @@ + + + + + + +

    The numbers 1, 2 and 3 below should be in ascending order, from top to bottom, with no overlap.

    +
    + 2 + + 1 + +
    +
    3
    +
    + + 4 + +
    +
    5
    +
    + + 6 + +
    +
    7
    +
    + + 8 + +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/crashtests/block-in-inline-ax-crash.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/crashtests/block-in-inline-ax-crash.html new file mode 100644 index 00000000000..dee9ed8a1b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/crashtests/block-in-inline-ax-crash.html @@ -0,0 +1,194 @@ + + + + + + + + + + +
    + +
    +
    +
    + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/resizable-iframe-paint-order-ref.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/resizable-iframe-paint-order-ref.html new file mode 100644 index 00000000000..ef067c82b70 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/resizable-iframe-paint-order-ref.html @@ -0,0 +1,4 @@ + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/normal-flow/resizable-iframe-paint-order.html b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/resizable-iframe-paint-order.html new file mode 100644 index 00000000000..574df950ce6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/normal-flow/resizable-iframe-paint-order.html @@ -0,0 +1,29 @@ + +Resizable iframe paint order + + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/pagination/float-page-break-inside-avoid-2-print-ref.html b/tests/wpt/web-platform-tests/css/CSS2/pagination/float-page-break-inside-avoid-2-print-ref.html index 3e4f04cc72b..50ea2df7bf0 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/pagination/float-page-break-inside-avoid-2-print-ref.html +++ b/tests/wpt/web-platform-tests/css/CSS2/pagination/float-page-break-inside-avoid-2-print-ref.html @@ -6,6 +6,7 @@ diff --git a/tests/wpt/web-platform-tests/css/CSS2/pagination/float-page-break-inside-avoid-2-print.html b/tests/wpt/web-platform-tests/css/CSS2/pagination/float-page-break-inside-avoid-2-print.html index 0039ab51945..45b5c8b23c0 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/pagination/float-page-break-inside-avoid-2-print.html +++ b/tests/wpt/web-platform-tests/css/CSS2/pagination/float-page-break-inside-avoid-2-print.html @@ -8,6 +8,7 @@ diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-abspos-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-abspos-ref.html new file mode 100644 index 00000000000..7c6cbbf2c23 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-abspos-ref.html @@ -0,0 +1,6 @@ + +CSS Test Reference + +
    PASS
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-abspos.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-abspos.html new file mode 100644 index 00000000000..c8b14b462c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-abspos.html @@ -0,0 +1,13 @@ + +::first-letter doesn't consider an abspos + + + + + + + +
    FPASS
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-affects-block-in-inline-ref.html b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-affects-block-in-inline-ref.html new file mode 100644 index 00000000000..24ed7c921a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-affects-block-in-inline-ref.html @@ -0,0 +1,2 @@ + +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-affects-block-in-inline.html b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-affects-block-in-inline.html new file mode 100644 index 00000000000..340ca185d9e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-affects-block-in-inline.html @@ -0,0 +1,6 @@ + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-change-parent-stacking-context-ref.html b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-change-parent-stacking-context-ref.html index 0e38f92ae47..16df33369f4 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-change-parent-stacking-context-ref.html +++ b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-change-parent-stacking-context-ref.html @@ -3,6 +3,6 @@
    -
    +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html index 94587c5f6e2..e58bf47c2f8 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html +++ b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html @@ -7,7 +7,7 @@
    -
    +
    - diff --git a/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context-ref.html b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context-ref.html new file mode 100644 index 00000000000..65138c9a667 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context-ref.html @@ -0,0 +1,4 @@ + +CSS Test Reference + +
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html new file mode 100644 index 00000000000..c163a4c7e66 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html @@ -0,0 +1,21 @@ + + + CSS Test: Test for re-paint after stacking context removal due to opacity transition + + + + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/CSS2/stacking-context/zindex-affects-block-in-inline-ref.html b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/zindex-affects-block-in-inline-ref.html new file mode 100644 index 00000000000..c0fdb338d08 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/zindex-affects-block-in-inline-ref.html @@ -0,0 +1,2 @@ + +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/stacking-context/zindex-affects-block-in-inline.html b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/zindex-affects-block-in-inline.html new file mode 100644 index 00000000000..5a5c9e3dcca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/stacking-context/zindex-affects-block-in-inline.html @@ -0,0 +1,7 @@ + + + +
    + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/CSS2/text/text-align-white-space-007.xht b/tests/wpt/web-platform-tests/css/CSS2/text/text-align-white-space-007.xht deleted file mode 100644 index 12de03cfd0e..00000000000 --- a/tests/wpt/web-platform-tests/css/CSS2/text/text-align-white-space-007.xht +++ /dev/null @@ -1,52 +0,0 @@ - - - - CSS Test: Text-align set to 'justify' with 'white-space' set to 'pre-wrap' and 'direction' set to 'rtl' - - - - - - - - - - - - -

    Test passes if there is no red.

    -
    -
    xxxxxxxxx - xxxxxxxxx - xxxxxxxxx - xxxxxxxxx
    -
    XXX XXX XXX XXX XXX XXX XXX XXX
    -
    - - diff --git a/tests/wpt/web-platform-tests/css/README.md b/tests/wpt/web-platform-tests/css/README.md index 6ce0dd33303..20f1e60a8bb 100644 --- a/tests/wpt/web-platform-tests/css/README.md +++ b/tests/wpt/web-platform-tests/css/README.md @@ -22,41 +22,4 @@ this directory has a number of test requirements specific to it: `css` directory. -Importing Old Branches ----------------------- - -Given an old branch in git based against the old csswg-test -repository, it can be moved over to the merged repo in one of two -ways: - - * (Recommended:) Rebasing on top of web-platform-tests: with the old - branch checked out, run `git rebase -Xsubtree=css/ origin/master` - (or similar, depending on the name of the upstream remote). - - * Merging to web-platform-tests: with web-platform-tests' master - branch checked out, run `git merge -Xsubtree=css/ my_shiny_branch` - (or similar, depending on the name of your branch). - -If you have a branch/bookmark in Mercurial, the process is more -complicated: - - 1. From the Mercurial repo, run `hg export --git -r 'outgoing()' > - foo.patch`. This will export all the changeset shown in `hg log -r - 'outgoing()'`; it's recommended you check this is the right set of - changesets before continuing! - - 2. Move to the git repo, and create a new branch based on - web-platform-tests' master; e.g., `git checkout -b hg-import - origin/master` (or similar, depending on the name of the upstream - remote). - - 3. Download [hg-patch-to-git-patch][] and run `python2 - hg-patch-to-git-patch < foo.patch > bar.patch` (where `foo.patch` - is the path to the `foo.patch` you exported above). - - 4. Run `git am --directory=css/ < bar.patch`. - - -[harness]: https://test.csswg.org/harness/ [spec-link]: https://web-platform-tests.org/writing-tests/css-metadata.html#specification-links -[hg-patch-to-git-patch]: https://raw.githubusercontent.com/mozilla/moz-git-tools/master/hg-patch-to-git-patch diff --git a/tests/wpt/web-platform-tests/css/build-css-testsuites.sh b/tests/wpt/web-platform-tests/css/build-css-testsuites.sh deleted file mode 100755 index 5cb26179b8d..00000000000 --- a/tests/wpt/web-platform-tests/css/build-css-testsuites.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env sh -set -ex - -SCRIPT_DIR=$(cd $(dirname "$0") && pwd -P) -WPT_ROOT=$SCRIPT_DIR/.. -cd $WPT_ROOT - -main() { - cd $WPT_ROOT/css - - if [ -z $VENV ]; then - VENV=tools/_virtualenv - fi - - # Create the virtualenv - if [ ! -d $VENV ]; then - if [ -z $PYTHON ]; then - command -v python - if [ $? -eq 0 ]; then - if [ `python -c 'import sys; print(sys.version[0:3])'` == "2.7" ]; then - PYTHON=python - fi - fi - fi - - if [ -z $PYTHON ]; then - command -v python2 - if [ $? -eq 0 ]; then - PYTHON=python2 - fi - fi - - if [ -z $PYTHON ]; then - echo "Please ensure Python 2.7 is installed" - exit 1 - fi - - # The maximum Unicode code point is U+10FFFF = 1114111 - if [ `$PYTHON -c 'import sys; print(sys.maxunicode)'` != "1114111" ]; then - echo "UCS-4 support for Python is required" - exit 1 - fi - - virtualenv -p $PYTHON $VENV || { echo "Please ensure virtualenv is installed"; exit 2; } - fi - - # Install dependencies - $VENV/bin/pip install -r requirements.txt - - # Run the build script - $VENV/bin/python tools/build.py "$@" -} - -main "$@" diff --git a/tests/wpt/web-platform-tests/css/compositing/background-blending/background-blend-mode-plus-lighter.html b/tests/wpt/web-platform-tests/css/compositing/background-blending/background-blend-mode-plus-lighter.html index 0816dc691b7..bb237b38b31 100644 --- a/tests/wpt/web-platform-tests/css/compositing/background-blending/background-blend-mode-plus-lighter.html +++ b/tests/wpt/web-platform-tests/css/compositing/background-blending/background-blend-mode-plus-lighter.html @@ -3,6 +3,7 @@ +
    diff --git a/tests/wpt/web-platform-tests/css/compositing/opacity-and-transform-animation-crash.html b/tests/wpt/web-platform-tests/css/compositing/opacity-and-transform-animation-crash.html new file mode 100644 index 00000000000..294a823cd8e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/opacity-and-transform-animation-crash.html @@ -0,0 +1,27 @@ + + + +
    + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/compositing/root-element-filter-background-clip-text-crash.html b/tests/wpt/web-platform-tests/css/compositing/root-element-filter-background-clip-text-crash.html new file mode 100644 index 00000000000..e12e4bb80f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/root-element-filter-background-clip-text-crash.html @@ -0,0 +1,15 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/css/compositing/support/plus-lighter.js b/tests/wpt/web-platform-tests/css/compositing/support/plus-lighter.js index cadefa57282..a5d1a34d7ff 100644 --- a/tests/wpt/web-platform-tests/css/compositing/support/plus-lighter.js +++ b/tests/wpt/web-platform-tests/css/compositing/support/plus-lighter.js @@ -35,10 +35,10 @@ export const tests = [ ], // Test more than two elements [ - [0.5, 0, 0, 0.25], - [0.25, 0.25, 0, 0.25], - [0.25, 0, 0.1, 0.25], - [0, 0, 0.1, 0.25], + [1, 0, 0, 0.25], + [0, 0, 1, 0.25], + [0, 1, 0, 0.25], + [0.5, 0.4, 0.25, 0.25], ], // Test a single element [ diff --git a/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline-ref.html b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline-ref.html new file mode 100644 index 00000000000..a255bee30f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline-ref.html @@ -0,0 +1,33 @@ + + + +CSS Box Alignment Test: inline-block and inline-table baselines + + + + +
    +
    +
    aaa
    +
    bbb
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline-vert-rl-ref.html b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline-vert-rl-ref.html new file mode 100644 index 00000000000..37abf9d4af2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline-vert-rl-ref.html @@ -0,0 +1,33 @@ + + + +CSS Box Alignment Test: inline-block and inline-table baseline synthesis + + + + +
    +
    +
    aaa
    +
    bbb
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline-vert-rl.html b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline-vert-rl.html new file mode 100644 index 00000000000..c0a6e2f12cb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline-vert-rl.html @@ -0,0 +1,30 @@ + + + +CSS Box Alignment Test: inline-block and inline-table baseline synthesis + + + + + +
    +
    aaa
    +
    bbb
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline.html b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline.html new file mode 100644 index 00000000000..be9acc58cd5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-align/baseline-rules/inline-table-inline-block-baseline.html @@ -0,0 +1,29 @@ + + + +CSS Box Alignment Test: inline-block and inline-table baselines + + + + + +
    +
    aaa
    +
    bbb
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-001.html new file mode 100644 index 00000000000..f85c9248d93 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-001.html @@ -0,0 +1,38 @@ + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-002.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-002.html new file mode 100644 index 00000000000..88728f6f476 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-002.html @@ -0,0 +1,51 @@ + + + + + + + + +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-003.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-003.html new file mode 100644 index 00000000000..998e6433d23 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-003.html @@ -0,0 +1,136 @@ + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-basics.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-basics.html new file mode 100644 index 00000000000..1d88b941377 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-basics.html @@ -0,0 +1,40 @@ + +Tests basics of the 'anchor-name' property + + + + + + + + + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-cross-shadow.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-cross-shadow.html new file mode 100644 index 00000000000..cc494831a8b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-cross-shadow.html @@ -0,0 +1,54 @@ + +Tests that the anchor element can be in a different tree scope + + + + + + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-in-shadow.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-in-shadow.html new file mode 100644 index 00000000000..7e505ed5928 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-in-shadow.html @@ -0,0 +1,53 @@ + +anchor-name is a tree scoped reference + + + + +
    +
    +
    +
    + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-inline-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-inline-001.html new file mode 100644 index 00000000000..024225fecbb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-inline-001.html @@ -0,0 +1,55 @@ + + + + + + + + + +
    +
    +
    + + + 123 + 12 + + + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-001.html new file mode 100644 index 00000000000..13ff9524b7f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-001.html @@ -0,0 +1,54 @@ + +Anchors in a different containing block in multicol + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-002.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-002.html new file mode 100644 index 00000000000..292b6f295ac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-002.html @@ -0,0 +1,61 @@ + +Anchors in OOF in multicol + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-003.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-003.html new file mode 100644 index 00000000000..a343a732ad3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-003.html @@ -0,0 +1,65 @@ + +Anchor name resolution of OOF anchors in multicol + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-004.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-004.html new file mode 100644 index 00000000000..11287c0c60c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-name-multicol-004.html @@ -0,0 +1,59 @@ + +Anchor name resolution of OOF anchors in multicol + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-parse-invalid.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-parse-invalid.html new file mode 100644 index 00000000000..de4b0ffac45 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-parse-invalid.html @@ -0,0 +1,41 @@ + +Tests values that are invalid at parse time for the anchor() function + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-parse-valid.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-parse-valid.html new file mode 100644 index 00000000000..b6a11ad9a6d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-parse-valid.html @@ -0,0 +1,59 @@ + +Tests parsing of the anchor() function + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-001.html new file mode 100644 index 00000000000..a42db257444 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-001.html @@ -0,0 +1,52 @@ + +Tests `anchor` function for top/left/bottom/right properties + + + + + + + +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-002.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-002.html new file mode 100644 index 00000000000..0e4b2808d3d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-002.html @@ -0,0 +1,72 @@ + + + + + + + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-003.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-003.html new file mode 100644 index 00000000000..fe8ec3a8d6b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-003.html @@ -0,0 +1,58 @@ + + + + + + + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-borders-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-borders-001.html new file mode 100644 index 00000000000..5bbe3d79147 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-borders-001.html @@ -0,0 +1,135 @@ + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-borders-002.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-borders-002.html new file mode 100644 index 00000000000..a3813750bf8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-borders-002.html @@ -0,0 +1,85 @@ + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-001.html new file mode 100644 index 00000000000..5b5ee82990e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-001.html @@ -0,0 +1,65 @@ + +Tests `anchor` function when anchor positions are changed dynamically + + + + + + + +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-002.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-002.html new file mode 100644 index 00000000000..f70f93441d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-002.html @@ -0,0 +1,54 @@ + + + + + + + + +
    + +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-003.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-003.html new file mode 100644 index 00000000000..04ccd56c77c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-003.html @@ -0,0 +1,105 @@ + +Tests that anchor layout changes in another BFC cause relayout on the anchored element + + + + + + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-004.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-004.html new file mode 100644 index 00000000000..b818e23c7fa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-004.html @@ -0,0 +1,47 @@ + + + + + + + + +
    +
    +
    +
    +
    + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-grid-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-grid-001.html new file mode 100644 index 00000000000..8178f212fe4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-grid-001.html @@ -0,0 +1,82 @@ + + + + + + + + + +
    +
    +
    +
    +
    +
    1
    +
    2
    +
    3
    +
    + +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-001.html new file mode 100644 index 00000000000..09acf6be8b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-001.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    spacer
    +
    +
    + 012345678 +
    + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-002.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-002.html new file mode 100644 index 00000000000..c366db4b28f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-002.html @@ -0,0 +1,37 @@ + + + + + + + + + +
    +
    spacer
    +
    +
    + + 012345 789000 +
    + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-003.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-003.html new file mode 100644 index 00000000000..17ab5085834 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-003.html @@ -0,0 +1,37 @@ + + + + + + + + + +
    +
    spacer
    +
    +
    + + a1‮2‭z +
    + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-004.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-004.html new file mode 100644 index 00000000000..58da8be7c7a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-inline-004.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + +
    +
    spacer
    +
    + 0 + + 12 + a1 + 34 + + + + + +
    + + +
    + + +
    +
    + 0 + + 12 + a1 a1 a1 + 345 + + + + + +
    + + +
    + + +
    +
    + 0 + + 12 + a1
    a1
    + 345 + + +
    + + +
    + + +
    + + +
    +
    +
    + 0 + + 12 + a1 a1 a1 + 345 + + + + + +
    + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-001.html new file mode 100644 index 00000000000..777df1b84cb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-001.html @@ -0,0 +1,43 @@ + + + + + + + + + +
    +
    spacer
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-002.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-002.html new file mode 100644 index 00000000000..748f9ad2b55 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-002.html @@ -0,0 +1,109 @@ + + + + + + + + + + +

    The green box should be a union of blue boxes, + and the purple box should be at the right-bottom of the green box. +

    +
    +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-003.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-003.html new file mode 100644 index 00000000000..3685d0782cd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-003.html @@ -0,0 +1,66 @@ + +Tests anchors on out-of-flow boxes + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-004.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-004.html new file mode 100644 index 00000000000..dea289f07e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-004.html @@ -0,0 +1,83 @@ + +Tests resolving anchor-name conflicts in multicol + + + + + + + + + +

    The green box should be a union of blue boxes, + and the purple box should be at the right-bottom of the green box. +

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-005.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-005.html new file mode 100644 index 00000000000..92f468ceda9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-005.html @@ -0,0 +1,64 @@ + +Overflow pushing anchors to later fragmentainers than querying element in multicol + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-006.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-006.html new file mode 100644 index 00000000000..2b9f55c0241 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-006.html @@ -0,0 +1,71 @@ + +Tests two OOF anchors in different containing blocks in multicol. + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-colspan-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-colspan-001.html new file mode 100644 index 00000000000..705f872a796 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-colspan-001.html @@ -0,0 +1,100 @@ + +Anchors in column spanners in multicol + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-colspan-002.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-colspan-002.html new file mode 100644 index 00000000000..b6e720da184 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-colspan-002.html @@ -0,0 +1,76 @@ + +Anchors in column-spanner in multicol + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-fixed-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-fixed-001.html new file mode 100644 index 00000000000..4321c20defb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-fixed-001.html @@ -0,0 +1,77 @@ + +Anchors on fixed positioned objects in multicol + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-nested-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-nested-001.html new file mode 100644 index 00000000000..d83b8ddd952 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-multicol-nested-001.html @@ -0,0 +1,79 @@ + +Anchors in nested multicol + + + + + + + + + +

    The green box should be a union of blue boxes, + and the purple box should be at the right-bottom of the green box. +

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-principal-box.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-principal-box.html new file mode 100644 index 00000000000..9bb1fd4c4da --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-principal-box.html @@ -0,0 +1,32 @@ + +anchor-name only applies to elements which generate a principal box + + + + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-writing-modes-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-writing-modes-001.html new file mode 100644 index 00000000000..c75a7c1e393 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-writing-modes-001.html @@ -0,0 +1,101 @@ + +Tests `anchor` function for `writing-mode`/`direction`s + + + + + +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-query-custom-property-registration.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-query-custom-property-registration.html new file mode 100644 index 00000000000..af211a0ee5d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-query-custom-property-registration.html @@ -0,0 +1,50 @@ + +Tests using anchor queries in custom property initial value + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-query-fallback.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-query-fallback.html new file mode 100644 index 00000000000..8d413fd862d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-query-fallback.html @@ -0,0 +1,67 @@ + +Tests the fallback value in anchor queries + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-basics.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-basics.tentative.html new file mode 100644 index 00000000000..fa42e33d926 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-basics.tentative.html @@ -0,0 +1,71 @@ + +Basic of anchor-scroll: anchored elements should be "pinned" to the anchor when anchor is scrolled + + + + + + +
    +
    +
    +
    +
    + anchor +
    inner-anchored
    +
    +
    +
    outer-anchored
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-fixedpos.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-fixedpos.tentative.html new file mode 100644 index 00000000000..ee7d22608b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-fixedpos.tentative.html @@ -0,0 +1,38 @@ + +Tests that anchor-scroll adjusts location of fixed-positioned elements correctly + + + + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-js-expose.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-js-expose.tentative.html new file mode 100644 index 00000000000..f19d010d359 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-js-expose.tentative.html @@ -0,0 +1,89 @@ + +Tests that anchor element's actual rendered location is property exposed via JS APIs under anchor-scroll + + + + + + +
    +
    +
    +
    +
    Text
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-nested.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-nested.tentative.html new file mode 100644 index 00000000000..964b02a5b04 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-nested.tentative.html @@ -0,0 +1,90 @@ + + +Tests anchor-scroll with nested scroll containers + + + + + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-no-overflow-crash.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-no-overflow-crash.html new file mode 100644 index 00000000000..d8fa3821cf5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-no-overflow-crash.html @@ -0,0 +1,41 @@ + +Tests that anchor-scroll doesn't crash renderer when anchor is in a scroller whose content doesn't overflow + + + + +
    +
    +
    anchor
    +
    +
    anchored
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-001.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-001.tentative.html new file mode 100644 index 00000000000..9400136e982 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-001.tentative.html @@ -0,0 +1,83 @@ + + +Basic of anchor-scroll: anchored elements should keep "pinned" to the anchor during anchor scroll updates + + + + + + +
    +
    +
    +
    +
    + anchor +
    inner-anchored
    +
    +
    +
    outer-anchored
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-002.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-002.tentative.html new file mode 100644 index 00000000000..4e8fcbe295d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-002.tentative.html @@ -0,0 +1,84 @@ + + +Basic of anchor-scroll: anchored elements should update location on `anchor-scroll` property changes + + + + + + +
    +
    +
    +
    +
    + anchor +
    inner-anchored
    +
    +
    +
    outer-anchored
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-003.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-003.tentative.html new file mode 100644 index 00000000000..0d3ec2830cb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-003.tentative.html @@ -0,0 +1,81 @@ + + +Basic of anchor-scroll: anchored elements should update location on anchor's `anchor-name` property changes + + + + + + +
    +
    +
    +
    +
    + anchor +
    inner-anchored
    +
    +
    +
    outer-anchored
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-004.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-004.tentative.html new file mode 100644 index 00000000000..7d1aadc95db --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-004.tentative.html @@ -0,0 +1,93 @@ + + +Basic of anchor-scroll: anchored elements should update location on anchor's layout changes + + + + + + +
    +
    +
    +
    +
    + anchor +
    inner-anchored
    +
    +
    +
    outer-anchored
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-005.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-005.tentative.html new file mode 100644 index 00000000000..5675507a477 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-005.tentative.html @@ -0,0 +1,56 @@ + + +Tests that anchored element should update location after scroll offset changes caused by scroller resizing + + + + +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-006.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-006.tentative.html new file mode 100644 index 00000000000..7a8e675baa1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-update-006.tentative.html @@ -0,0 +1,56 @@ + + +Tests that anchored element should update location after scroll offset changes caused by scroll content resizing + + + + +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-vlr.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-vlr.tentative.html new file mode 100644 index 00000000000..82d167f48d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-vlr.tentative.html @@ -0,0 +1,81 @@ + +Tests that anchor-scroll works in vertical-lr writing mode + + + + + + +
    +
    +
    +
    +
    + anchor +
    inner-anchored
    +
    +
    +
    outer-anchored
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-vrl.tentative.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-vrl.tentative.html new file mode 100644 index 00000000000..55b73558974 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-scroll-vrl.tentative.html @@ -0,0 +1,81 @@ + +Tests that anchor-scroll works in vertical-rl writing mode + + + + + + +
    +
    +
    +
    +
    + anchor +
    inner-anchored
    +
    +
    +
    outer-anchored
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-001.html new file mode 100644 index 00000000000..e5a0dfde1f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-001.html @@ -0,0 +1,42 @@ + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-minmax-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-minmax-001.html new file mode 100644 index 00000000000..f7fb07b0af1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-minmax-001.html @@ -0,0 +1,44 @@ + + + + + + + + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-parse-invalid.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-parse-invalid.html new file mode 100644 index 00000000000..d13f21a5859 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-parse-invalid.html @@ -0,0 +1,42 @@ + +Tests values that are invalid at parse time for the anchor-size() function + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-parse-valid.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-parse-valid.html new file mode 100644 index 00000000000..2ea23f57f44 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-parse-valid.html @@ -0,0 +1,57 @@ + +Tests parsing of the anchor-size() function + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-replaced-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-replaced-001.html new file mode 100644 index 00000000000..e5d133acf7a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-replaced-001.html @@ -0,0 +1,74 @@ + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-writing-modes-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-writing-modes-001.html new file mode 100644 index 00000000000..c9e06197412 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-size-writing-modes-001.html @@ -0,0 +1,67 @@ + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/at-fallback-position-allowed-declarations.html b/tests/wpt/web-platform-tests/css/css-anchor-position/at-fallback-position-allowed-declarations.html new file mode 100644 index 00000000000..873fa131400 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/at-fallback-position-allowed-declarations.html @@ -0,0 +1,97 @@ + +Tests which properties are allowed in @fallback-position + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/at-fallback-position-parse.html b/tests/wpt/web-platform-tests/css/css-anchor-position/at-fallback-position-parse.html new file mode 100644 index 00000000000..942d9a29845 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/at-fallback-position-parse.html @@ -0,0 +1,39 @@ + +Tests parsing of @fallback-position rule + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/position-fallback-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/position-fallback-001.html new file mode 100644 index 00000000000..85f1d1d65ac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/position-fallback-001.html @@ -0,0 +1,108 @@ + + + + + + + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/position-fallback-basics.html b/tests/wpt/web-platform-tests/css/css-anchor-position/position-fallback-basics.html new file mode 100644 index 00000000000..bfeb921de1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/position-fallback-basics.html @@ -0,0 +1,40 @@ + +Tests basics of the 'position-fallback' property + + + + + + + + + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/position-fallback-custom-property.html b/tests/wpt/web-platform-tests/css/css-anchor-position/position-fallback-custom-property.html new file mode 100644 index 00000000000..ca709af3de1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/position-fallback-custom-property.html @@ -0,0 +1,68 @@ + +Variable substitution in @try rules + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-fixedpos-ref.html b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-fixedpos-ref.html new file mode 100644 index 00000000000..e73354df72d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-fixedpos-ref.html @@ -0,0 +1,32 @@ + + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-nested-ref.html b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-nested-ref.html new file mode 100644 index 00000000000..6190258f3cb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-nested-ref.html @@ -0,0 +1,74 @@ + +Tests anchor-scroll with nested scroll containers + + + + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-ref.html b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-ref.html new file mode 100644 index 00000000000..7935f3823fd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-ref.html @@ -0,0 +1,61 @@ + +Basic of anchor-scroll: anchored elements should be "pinned" to the anchor when anchor is scrolled + + + +
    +
    +
    +
    + anchor +
    +
    + +
    inner-anchored
    +
    outer-anchored
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-update-005-ref.html b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-update-005-ref.html new file mode 100644 index 00000000000..b0c3a820f8c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-update-005-ref.html @@ -0,0 +1,34 @@ + + +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-update-006-ref.html b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-update-006-ref.html new file mode 100644 index 00000000000..c7fbb57e762 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-update-006-ref.html @@ -0,0 +1,34 @@ + + +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-vlr-ref.html b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-vlr-ref.html new file mode 100644 index 00000000000..cbb249e150d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-vlr-ref.html @@ -0,0 +1,70 @@ + +Tests that anchor-scroll works in vertical-lr writing mode + + + + + +
    +
    +
    +
    +
    outer-anchored
    +
    + anchor +
    inner-anchored
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-vrl-ref.html b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-vrl-ref.html new file mode 100644 index 00000000000..746dfee0744 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/anchor-scroll-vrl-ref.html @@ -0,0 +1,70 @@ + +Tests that anchor-scroll works in vertical-rl writing mode + + + + + +
    +
    +
    +
    +
    inner-anchored
    +
    + anchor +
    outer-anchored
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/reference/sticky-anchor-position-invalid-ref.html b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/sticky-anchor-position-invalid-ref.html new file mode 100644 index 00000000000..3a487558744 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/reference/sticky-anchor-position-invalid-ref.html @@ -0,0 +1,28 @@ + +Anchor queries in sticky positioning is invalid + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/sticky-anchor-position-invalid.html b/tests/wpt/web-platform-tests/css/css-anchor-position/sticky-anchor-position-invalid.html new file mode 100644 index 00000000000..f7c1e1a374f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/sticky-anchor-position-invalid.html @@ -0,0 +1,32 @@ + +Anchor queries in sticky positioning is invalid + + + + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/support/green-16x16.png b/tests/wpt/web-platform-tests/css/css-anchor-position/support/green-16x16.png new file mode 100644 index 00000000000..e19a3ffddd2 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-anchor-position/support/green-16x16.png differ diff --git a/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-effect.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-effect.tentative.html index fadcaa129ab..04812d24e58 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-effect.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-effect.tentative.html @@ -131,6 +131,14 @@ promise_test(async t => { }, 'After replacing a finished animation\'s effect with a longer one ' + 'it fires an animationstart event'); +test(t => { + const div = addDiv(t); + div.style.animation = 'anim 100s'; + div.style.animationComposition = 'add'; + const animation = div.getAnimations()[0]; + assert_equals(animation.effect.composite, 'add'); +}, 'Setting animation-composition sets the composite property on the effect'); + test(t => { const div = addDiv(t); @@ -161,6 +169,7 @@ test(t => { div.style.animationDelay = '8s'; div.style.animationFillMode = 'both'; div.style.animationPlayState = 'paused'; + div.style.animationComposition = 'add'; // Update the keyframes keyframesRule.deleteRule(0); @@ -197,6 +206,11 @@ test(t => { '200px', 'keyframes should be the value set by the API' ); + assert_equals( + animation.effect.composite, + 'replace', + 'composite should be the value set by the API' + ); // Unlike the other properties animation-play-state maps to the Animation // not the KeyframeEffect so it should be overridden. diff --git a/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-getKeyframes-crash.html b/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-getKeyframes-crash.html new file mode 100644 index 00000000000..72eb5e88195 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-getKeyframes-crash.html @@ -0,0 +1,26 @@ + + + + + + + Crash test calling getKeyframes on an orphaned element + + + +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html index 1119d06d4a3..a716745c843 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html @@ -37,7 +37,7 @@ @keyframes anim-simple-timing { from { color: rgb(0, 0, 0); animation-timing-function: linear; } - 50% { color: rgb(0, 0, 255); animation-timing-function: ease-in-out; } + 50% { color: rgb(0, 0, 255); animation-timing-function: ease-in-out; } to { color: rgb(255, 255, 255); animation-timing-function: step-end; } } @@ -47,6 +47,18 @@ to { color: rgb(255, 255, 255); } } +@keyframes anim-simple-composite { + from { color: rgb(0, 0, 0); animation-composition: replace; } + 50% { color: rgb(0, 0, 255); animation-composition: add; } + to { color: rgb(255, 255, 255); animation-composition: accumulate; } +} + +@keyframes anim-simple-composite-some { + from { color: rgb(0, 0, 0); animation-composition: add; } + 50% { color: rgb(0, 0, 255); } + to { color: rgb(255, 255, 255); } +} + @keyframes anim-simple-shorthand { from { margin: 8px; } to { margin: 16px; } @@ -113,6 +125,28 @@ to { margin-top: 20px; margin-right: 20px; margin-bottom: 20px; } } +@keyframes anim-merge-offset-and-composite { + from { color: rgb(0, 0, 0); animation-composition: add; } + to { color: rgb(255, 255, 255); } + from { margin-top: 8px; animation-composition: accumulate; } + to { margin-top: 16px; } + from { font-size: 16px; animation-composition: add; } + to { font-size: 32px; } + from { padding-left: 2px; animation-composition: accumulate; } + to { padding-left: 4px; } +} + +@keyframes anim-merge-offset-easing-and-composite { + from { color: rgb(0, 0, 0); animation-composition: add; } + to { color: rgb(255, 255, 255); } + from { margin-top: 8px; animation-composition: accumulate; } + to { margin-top: 16px; } + from { font-size: 16px; animation-composition: add; animation-timing-function: linear; } + to { font-size: 32px; } + from { padding-left: 2px; animation-composition: accumulate; } + to { padding-left: 4px; } +} + @keyframes anim-overriding { from { padding-top: 50px } 50%, from { padding-top: 30px } /* wins: 0% */ @@ -156,6 +190,12 @@ from { transform: translate(100px, 0) } to { --not-used: 200px } } + +@keyframes anim-only-timing-function-for-from-and-to { + from, to { animation-timing-function: linear } + 50% { left: 10px } +} +
    @@ -182,6 +222,12 @@ const kTimingFunctionValues = [ "cubic-bezier(0, 0.25, 0.75, 1)" ]; +const kCompositeValues = [ + "replace", + "add", + "accumulate" +]; + test(t => { const div = addDiv(t); @@ -271,6 +317,58 @@ test(t => { }, 'KeyframeEffect.getKeyframes() returns frames with expected easing' + ' values, when the easing is specified on some keyframes'); +test(t => { + for (const composite of kCompositeValues) { + const div = addDiv(t); + + div.style.animation = 'anim-simple-three 100s'; + div.style.animationComposition = composite; + const frames = getKeyframes(div); + + assert_equals(frames.length, 3, "number of frames"); + + for (let i = 0; i < frames.length; i++) { + assert_equals(frames[i].composite, "auto", + "value for 'composite' on ComputedKeyframe #" + i); + } + } +}, 'KeyframeEffect.getKeyframes() returns frames with expected composite' + + ' values, when the composite is set on the effect using animation-composition on the' + + ' element'); + +test(t => { + const div = addDiv(t); + + div.style.animation = 'anim-simple-composite 100s'; + const frames = getKeyframes(div); + + assert_equals(frames.length, 3, "number of frames"); + assert_equals(frames[0].composite, "replace", + "value of 'composite' on ComputedKeyframe #0"); + assert_equals(frames[1].composite, "add", + "value of 'composite' on ComputedKeyframe #1"); + assert_equals(frames[2].composite, "accumulate", + "value of 'composite' on ComputedKeyframe #2"); +}, 'KeyframeEffect.getKeyframes() returns frames with expected composite' + + ' values, when the composite is specified on each keyframe'); + +test(t => { + const div = addDiv(t); + + div.style.animation = 'anim-simple-composite-some 100s'; + div.style.animationComposition = 'accumulate'; + const frames = getKeyframes(div); + + assert_equals(frames.length, 3, "number of frames"); + assert_equals(frames[0].composite, "add", + "value of 'composite' on ComputedKeyframe #0"); + assert_equals(frames[1].composite, "auto", + "value of 'composite' on ComputedKeyframe #1"); + assert_equals(frames[2].composite, "auto", + "value of 'composite' on ComputedKeyframe #2"); +}, 'KeyframeEffect.getKeyframes() returns frames with expected composite' + + ' values, when the composite is specified on some keyframes'); + test(t => { const div = addDiv(t); div.style.animation = 'anim-simple-shorthand 100s'; @@ -458,6 +556,48 @@ test(t => { 'animation with multiple keyframes for the same time and with ' + 'different but equivalent easing functions'); +test(t => { + const div = addDiv(t); + div.style.animation = 'anim-merge-offset-and-composite 100s'; + + const frames = getKeyframes(div); + + const expected = [ + { offset: 0, computedOffset: 0, easing: "ease", composite: "add", + color: "rgb(0, 0, 0)", fontSize: "16px" }, + { offset: 0, computedOffset: 0, easing: "ease", composite: "accumulate", + marginTop: "8px", paddingLeft: "2px" }, + { offset: 1, computedOffset: 1, easing: "ease", composite: "auto", + color: "rgb(255, 255, 255)", fontSize: "32px", marginTop: "16px", + paddingLeft: "4px" }, + ]; + assert_frame_lists_equal(frames, expected); +}, 'KeyframeEffect.getKeyframes() returns expected frames for an ' + + 'animation with multiple keyframes for the same time and with ' + + 'different composite operations'); + +test(t => { + const div = addDiv(t); + div.style.animation = 'anim-merge-offset-easing-and-composite 100s'; + + const frames = getKeyframes(div); + + const expected = [ + { offset: 0, computedOffset: 0, easing: "ease", composite: "add", + color: "rgb(0, 0, 0)" }, + { offset: 0, computedOffset: 0, easing: "ease", composite: "accumulate", + marginTop: "8px", paddingLeft: "2px" }, + { offset: 0, computedOffset: 0, easing: "linear", composite: "add", + fontSize: "16px" }, + { offset: 1, computedOffset: 1, easing: "ease", composite: "auto", + color: "rgb(255, 255, 255)", fontSize: "32px", marginTop: "16px", + paddingLeft: "4px" }, + ]; + assert_frame_lists_equal(frames, expected); +}, 'KeyframeEffect.getKeyframes() returns expected frames for an ' + + 'animation with multiple keyframes for the same time and with ' + + 'different easing functions and composite operations'); + test(t => { const div = addDiv(t); div.style.animation = 'anim-overriding 100s'; @@ -558,7 +698,7 @@ test(t => { { offset: 0, computedOffset: 0, easing: "ease", composite: "auto", backgroundSize: "auto" }, { offset: 1, computedOffset: 1, easing: "ease", composite: "auto", - backgroundSize: "50%, 6px, contain" }, + backgroundSize: "50% auto, 6px auto, contain" }, ]; for (let i = 0; i < frames.length; i++) { @@ -568,7 +708,7 @@ test(t => { // Test inheriting a background-size value expected[0].backgroundSize = div.style.backgroundSize = - "30px, 40%, auto"; + "30px auto, 40% auto, auto"; frames = getKeyframes(div); for (let i = 0; i < frames.length; i++) { @@ -696,5 +836,23 @@ test(t => { ); }, 'KeyframeEffect.getKeyframes() reflects changes to @keyframes rules'); +test(t => { + const div = addDiv(t); + div.style.animation = 'anim-only-timing-function-for-from-and-to 100s'; + + const frames = getKeyframes(div); + + const expected = [ + { offset: 0, computedOffset: 0, easing: "linear", composite: "auto" }, + { offset: 0, computedOffset: 0, easing: "ease", composite: "auto", left: "auto" }, + { offset: 0.5, computedOffset: 0.5, easing: "ease", composite: "auto", left: "10px" }, + { offset: 1, computedOffset: 1, easing: "linear", composite: "auto" }, + { offset: 1, computedOffset: 1, easing: "ease", composite: "auto", left: "auto" } + ]; + assert_frame_lists_equal(frames, expected); +}, 'KeyframeEffect.getKeyframes() returns expected values for ' + + 'animations with implicit values and a non-default timing' + + 'function specified for 0% and 100%'); + diff --git a/tests/wpt/web-platform-tests/css/css-animations/animation-multiple-from-to-keyframes-with-only-timing-function.html b/tests/wpt/web-platform-tests/css/css-animations/animation-multiple-from-to-keyframes-with-only-timing-function.html new file mode 100644 index 00000000000..d389b2b9624 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/animation-multiple-from-to-keyframes-with-only-timing-function.html @@ -0,0 +1,27 @@ + + +Multiple from and to keyframes + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-animations/animation-play-state-005.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/animation-play-state-005.tentative.html new file mode 100644 index 00000000000..bb65ce3a419 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/animation-play-state-005.tentative.html @@ -0,0 +1,44 @@ + + +CSS animations shouldn't restart after resetting its play state + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/animation-style-element-replaced-with-keyframes-rule-of-same-name.html b/tests/wpt/web-platform-tests/css/css-animations/animation-style-element-replaced-with-keyframes-rule-of-same-name.html new file mode 100644 index 00000000000..285442c95b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/animation-style-element-replaced-with-keyframes-rule-of-same-name.html @@ -0,0 +1,36 @@ + + +Changes to @keyframes rules + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-animations/crashtests/replace-keyframes-animating-filter-001.html b/tests/wpt/web-platform-tests/css/css-animations/crashtests/replace-keyframes-animating-filter-001.html new file mode 100644 index 00000000000..e6355376f72 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/crashtests/replace-keyframes-animating-filter-001.html @@ -0,0 +1,42 @@ + + +CSS Test (Animations): Changing an @keyframes that animates filter + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-animations/dialog-animation.html b/tests/wpt/web-platform-tests/css/css-animations/dialog-animation.html new file mode 100644 index 00000000000..f6c8f6f0fa4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/dialog-animation.html @@ -0,0 +1,44 @@ + + +CSS Animations on a <dialog> + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-animations/dialog-backdrop-animation.html b/tests/wpt/web-platform-tests/css/css-animations/dialog-backdrop-animation.html new file mode 100644 index 00000000000..cc61c2e3809 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/dialog-backdrop-animation.html @@ -0,0 +1,44 @@ + + +CSS Animations on a <dialog> ::backdrop + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-animations/inheritance-pseudo-element-ref.html b/tests/wpt/web-platform-tests/css/css-animations/inheritance-pseudo-element-ref.html new file mode 100644 index 00000000000..a25f465fdf9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/inheritance-pseudo-element-ref.html @@ -0,0 +1,26 @@ + +CSS Test Reference + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-animations/inheritance-pseudo-element.html b/tests/wpt/web-platform-tests/css/css-animations/inheritance-pseudo-element.html new file mode 100644 index 00000000000..4ebcbc95dea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/inheritance-pseudo-element.html @@ -0,0 +1,49 @@ + +@keyframes + pseudo-element inherits from the right style. + + + + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-animations/keyframes-zero-angle-crash.html b/tests/wpt/web-platform-tests/css/css-animations/keyframes-zero-angle-crash.html new file mode 100644 index 00000000000..593e4a6a1c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/keyframes-zero-angle-crash.html @@ -0,0 +1,13 @@ + + +CSS Animations Test: Chrome crash when using zero angles in keyframes + + +
    + Output does not matter, only check that we do not crash with zero angles. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-composition-computed.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-composition-computed.tentative.html new file mode 100644 index 00000000000..535a40c9ca9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-composition-computed.tentative.html @@ -0,0 +1,18 @@ + + + + +CSS Animations: getComputedStyle().animationComposition + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-composition-invalid.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-composition-invalid.tentative.html new file mode 100644 index 00000000000..a08b33c84d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-composition-invalid.tentative.html @@ -0,0 +1,21 @@ + + + + +CSS Animations: parsing animation-composition with invalid values + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-composition-valid.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-composition-valid.tentative.html new file mode 100644 index 00000000000..8dca8dbabe7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-composition-valid.tentative.html @@ -0,0 +1,20 @@ + + + + +CSS Animations: parsing animation-composition with valid values + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-computed.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-computed.html index 467f4357f10..f8d34b889ba 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-computed.html +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-computed.html @@ -16,6 +16,11 @@ // || || // || || // [ none | ] + +test(() => { + assert_equals(getComputedStyle(document.getElementById('target')).animation, "0s ease 0s 1 normal none running none"); +}, "Default animation value"); + test_computed_value("animation", "1s", "1s ease 0s 1 normal none running none"); test_computed_value("animation", "cubic-bezier(0, -2, 1, 3)", "0s cubic-bezier(0, -2, 1, 3) 0s 1 normal none running none"); test_computed_value("animation", "1s -3s", "1s ease -3s 1 normal none running none"); diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-computed.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-computed.html new file mode 100644 index 00000000000..9e0326b387c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-computed.html @@ -0,0 +1,23 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-invalid.html new file mode 100644 index 00000000000..bff31f3789a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-invalid.html @@ -0,0 +1,29 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-valid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-valid.html new file mode 100644 index 00000000000..22ab9fe3b73 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-valid.html @@ -0,0 +1,26 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-computed.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-computed.html new file mode 100644 index 00000000000..9e0326b387c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-computed.html @@ -0,0 +1,23 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-invalid.html new file mode 100644 index 00000000000..bff31f3789a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-invalid.html @@ -0,0 +1,29 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-valid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-valid.html new file mode 100644 index 00000000000..22ab9fe3b73 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-valid.html @@ -0,0 +1,26 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-computed.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-computed.html index a20aa7d9989..f05dd8b013c 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-computed.html +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-computed.html @@ -20,8 +20,9 @@ test_computed_value("animation-name", 'ease-in'); test_computed_value("animation-name", 'infinite'); test_computed_value("animation-name", 'paused'); test_computed_value("animation-name", 'first, second, third'); +test_computed_value("animation-name", '"something"', ["something", '"something"']); -// TODO: Test strings, after https://github.com/w3c/csswg-drafts/issues/2435 +// TODO: Test more strings, after https://github.com/w3c/csswg-drafts/issues/2435 // is resolved. // Examples that need testing either here or in animation-name-invalid.html : // '"Initial"', '"initial"', '"None"', '"Default"', '" x "', "1", '" "', '""', diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-invalid.html index 77d53f990b1..739641a51d8 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-invalid.html @@ -18,6 +18,8 @@ test_invalid_value("animation-name", 'one, initial'); test_invalid_value("animation-name", 'one, inherit'); test_invalid_value("animation-name", 'one, unset'); test_invalid_value("animation-name", 'default, two'); +test_invalid_value("animation-name", 'revert, three'); +test_invalid_value("animation-name", 'revert-layer, four'); diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-valid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-valid.html index 9ed73d4d15f..1906f9bdb76 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-valid.html +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-name-valid.html @@ -20,10 +20,10 @@ test_valid_value("animation-name", 'infinite'); test_valid_value("animation-name", 'paused'); test_valid_value("animation-name", 'first, second, third'); -test_valid_value("animation-name", '"string"'); -test_valid_value("animation-name", '"multi word string"'); +test_valid_value("animation-name", '"string"', ['"string"', "string"]); +test_valid_value("animation-name", '"multi word string"', ['"multi word string"', "multi\\ word\\ string"]); test_valid_value("animation-name", '"initial"'); -test_valid_value("animation-name", '"---\\22---"', '\"---\\\"---\"'); +test_valid_value("animation-name", '"---\\22---"', ['\"---\\\"---\"', '---\\\"---']); diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-computed.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-computed.html deleted file mode 100644 index 99bc12ccaa8..00000000000 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-computed.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - -CSS Animations: getComputedStyle().animationTimingFunction - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-invalid.html deleted file mode 100644 index 621145b0e00..00000000000 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-invalid.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - -CSS Animations: parsing animation-timing-function with invalid values - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-valid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-valid.html deleted file mode 100644 index 7ab823ea1da..00000000000 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-valid.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - -CSS Animations: parsing animation-timing-function with valid values - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/keyframes-allowed-properties.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/keyframes-allowed-properties.html new file mode 100644 index 00000000000..f682920b357 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/keyframes-allowed-properties.html @@ -0,0 +1,35 @@ + +Tests which properties are allowed in @keyframes + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/keyframes-name-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/keyframes-name-invalid.html new file mode 100644 index 00000000000..f14dff3e2c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/keyframes-name-invalid.html @@ -0,0 +1,46 @@ + + + + + CSS Animations: parsing @keyframes name with invalid values + + + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/keyframes-name-valid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/keyframes-name-valid.html new file mode 100644 index 00000000000..f44540e924c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/keyframes-name-valid.html @@ -0,0 +1,70 @@ + + + + + CSS Animations: parsing @keyframes name with valid values + + + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-animations/support/testcommon.js b/tests/wpt/web-platform-tests/css/css-animations/support/testcommon.js index 7d3392a54f6..654aaa51c55 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/support/testcommon.js +++ b/tests/wpt/web-platform-tests/css/css-animations/support/testcommon.js @@ -86,6 +86,32 @@ function assert_frame_lists_equal(actual, expected) { } } +/** + * Appends an element to the document body. + * + * @param t The testharness.js Test object. If provided, this will be used + * to register a cleanup callback to remove the div when the test + * finishes. + * + * @param name A string specifying the element name. + * + * @param attrs A dictionary object with attribute names and values to set on + * the div. + */ +function addElement(t, name, attrs) { + var element = document.createElement(name); + if (attrs) { + for (var attrName in attrs) { + element.setAttribute(attrName, attrs[attrName]); + } + } + document.body.appendChild(element); + if (t && typeof t.add_cleanup === 'function') { + t.add_cleanup(() => element.remove()); + } + return element; +} + /** * Appends a div to the document body. * @@ -97,21 +123,7 @@ function assert_frame_lists_equal(actual, expected) { * the div. */ function addDiv(t, attrs) { - var div = document.createElement('div'); - if (attrs) { - for (var attrName in attrs) { - div.setAttribute(attrName, attrs[attrName]); - } - } - document.body.appendChild(div); - if (t && typeof t.add_cleanup === 'function') { - t.add_cleanup(function() { - if (div.parentNode) { - div.remove(); - } - }); - } - return div; + return addElement(t, "div", attrs); } /** diff --git a/tests/wpt/web-platform-tests/css/css-animations/translation-animation-on-important-property-ref.html b/tests/wpt/web-platform-tests/css/css-animations/translation-animation-on-important-property-ref.html new file mode 100644 index 00000000000..97110dd54e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/translation-animation-on-important-property-ref.html @@ -0,0 +1,12 @@ + +Translation animation on important property + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-animations/translation-animation-on-important-property.html b/tests/wpt/web-platform-tests/css/css-animations/translation-animation-on-important-property.html new file mode 100644 index 00000000000..4f029427645 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/translation-animation-on-important-property.html @@ -0,0 +1,18 @@ + +Translation animation on important property + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-backdrop-infinite-duration-crash.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-backdrop-infinite-duration-crash.html new file mode 100644 index 00000000000..40aa54debcc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-backdrop-infinite-duration-crash.html @@ -0,0 +1,28 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-pseudo-element-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-pseudo-element-ref.html new file mode 100644 index 00000000000..d82d28782b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-pseudo-element-ref.html @@ -0,0 +1,41 @@ + + + + + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-pseudo-element.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-pseudo-element.html new file mode 100644 index 00000000000..e5066281d9b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-pseudo-element.html @@ -0,0 +1,67 @@ + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-will-change-contents-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-will-change-contents-ref.html new file mode 100644 index 00000000000..d980a29ff7f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-will-change-contents-ref.html @@ -0,0 +1,11 @@ + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-will-change-contents.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-will-change-contents.html new file mode 100644 index 00000000000..a218098721c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-will-change-contents.html @@ -0,0 +1,45 @@ + + + + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-blur-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-blur-ref.html new file mode 100644 index 00000000000..31418d093cf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-blur-ref.html @@ -0,0 +1,20 @@ + + + + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-blur.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-blur.html new file mode 100644 index 00000000000..0685e5a7c2a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-blur.html @@ -0,0 +1,55 @@ + + + + + + + + +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-mask-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-mask-ref.html new file mode 100644 index 00000000000..6cb20f12d13 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-mask-ref.html @@ -0,0 +1,18 @@ + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-mask.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-mask.html new file mode 100644 index 00000000000..9001121edc5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-mask.html @@ -0,0 +1,34 @@ + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-scroll-into-viewport-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-scroll-into-viewport-ref.html new file mode 100644 index 00000000000..e5bbf67dfeb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-scroll-into-viewport-ref.html @@ -0,0 +1,43 @@ + + + + + +
    +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-scroll-into-viewport.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-scroll-into-viewport.html new file mode 100644 index 00000000000..24b22b43e4d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-scroll-into-viewport.html @@ -0,0 +1,50 @@ + + + + + + + +
    +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-transition-currentcolor-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-transition-currentcolor-ref.html new file mode 100644 index 00000000000..b9104786566 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-transition-currentcolor-ref.html @@ -0,0 +1,20 @@ + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-transition-currentcolor.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-transition-currentcolor.html new file mode 100644 index 00000000000..7d12b440511 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-color-transition-currentcolor.html @@ -0,0 +1,45 @@ + + + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation.html index d6c438737d1..4ed55abc9e6 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation.html @@ -174,6 +174,20 @@ test_interpolation({ {at: 1.5, expect: 'rgba(0, 0, 0, 0) -5px -10px 0px 0px, rgba(0, 0, 0, 0) -2.5px -15px 0px 0px inset'}, ]); +// Test calc with comparison functions +test_interpolation({ + property: 'box-shadow', + from: 'inset 0 0 0 0 black', + to: 'inset 0 0 0 calc(max(10em, 20px) / 2) black', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) 0px 0px 0px -4.5px inset'}, + {at: 0, expect: 'rgb(0, 0, 0) 0px 0px 0px 0px inset'}, + {at: 0.3, expect: 'rgb(0, 0, 0) 0px 0px 0px 4.5px inset'}, + {at: 0.6, expect: 'rgb(0, 0, 0) 0px 0px 0px 9px inset'}, + {at: 1, expect: 'rgb(0, 0, 0) 0px 0px 0px 15px inset'}, + {at: 1.5, expect: 'rgb(0, 0, 0) 0px 0px 0px 22.5px inset'}, +]); + // Test unmatched inset test_no_interpolation({ property: 'box-shadow', diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex-ref.html new file mode 100644 index 00000000000..0bcbc0bc13f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex-ref.html @@ -0,0 +1,16 @@ + + + +
    flex
    +
    inline-flex
    diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex.html new file mode 100644 index 00000000000..618c8c1dbc5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip/clip-text-flex.html @@ -0,0 +1,21 @@ + +background-clip:text with display:flex + + + + +
    flex
    +
    inline-flex
    diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-position-calc-minmax-001.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-position-calc-minmax-001.html new file mode 100644 index 00000000000..4e71f55623b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-position-calc-minmax-001.html @@ -0,0 +1,85 @@ + + + + + CSS Background and Borders Test: background-position with min and max percentages + + + + + + + + + + + + + + +

    Test passes if there is a filled green square and no red. + +

    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-repeat-space-10.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-repeat-space-10.html index 00205a938b8..cb1c7821163 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/background-repeat-space-10.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-repeat-space-10.html @@ -8,6 +8,7 @@ + + + +

    There should be a black line below and no red.

    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-bottom-width-thick.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-bottom-width-thick.html new file mode 100644 index 00000000000..91f2c4884c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-bottom-width-thick.html @@ -0,0 +1,25 @@ + + + +CSS Borders: border-bottom-width: thick equals 5px + + + + + + +

    There should be a black line below and no red.

    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-bottom-width-thin.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-bottom-width-thin.html new file mode 100644 index 00000000000..bbc82f4f14b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-bottom-width-thin.html @@ -0,0 +1,25 @@ + + + +CSS Borders: border-bottom-width: thin equals 1px + + + + + + +

    There should be a black line below and no red.

    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-image-repeat-round-1.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-image-repeat-round-1.html index 832126ef3df..c4dc17cf7df 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/border-image-repeat-round-1.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-image-repeat-round-1.html @@ -8,6 +8,7 @@ + + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-left-width-medium.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-left-width-medium.html new file mode 100644 index 00000000000..b7bd80a8338 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-left-width-medium.html @@ -0,0 +1,26 @@ + + + +CSS Borders: border-left-width: medium equals 3px + + + + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-left-width-thick.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-left-width-thick.html new file mode 100644 index 00000000000..c4787cac8ad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-left-width-thick.html @@ -0,0 +1,26 @@ + + + +CSS Borders: border-right-width: thick equals 5px + + + + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-left-width-thin.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-left-width-thin.html new file mode 100644 index 00000000000..1b8da56a34f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-left-width-thin.html @@ -0,0 +1,26 @@ + + + +CSS Borders: border-left-width: thin equals 1px + + + + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-radius-013.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-radius-013.html new file mode 100644 index 00000000000..090f6a28b3b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-radius-013.html @@ -0,0 +1,12 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-right-width-medium.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-right-width-medium.html new file mode 100644 index 00000000000..47de799e54f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-right-width-medium.html @@ -0,0 +1,26 @@ + + + +CSS Borders: border-right-width: medium equals 3px + + + + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-right-width-thick.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-right-width-thick.html new file mode 100644 index 00000000000..af518a79f51 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-right-width-thick.html @@ -0,0 +1,26 @@ + + + +CSS Borders: border-right-width: thick equals 5px + + + + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-right-width-thin.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-right-width-thin.html new file mode 100644 index 00000000000..d8483a87ca0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-right-width-thin.html @@ -0,0 +1,26 @@ + + + +CSS Borders: border-right-width: thin equals 1px + + + + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-top-left-radius-004.xht b/tests/wpt/web-platform-tests/css/css-backgrounds/border-top-left-radius-004.xht index 39e636db6bb..71c98832404 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/border-top-left-radius-004.xht +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-top-left-radius-004.xht @@ -3,6 +3,7 @@ border-top-left-radius using one percentage + + + +

    There should be a black line below and no red.

    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-top-width-thick.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-top-width-thick.html new file mode 100644 index 00000000000..f67c5e22ed3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-top-width-thick.html @@ -0,0 +1,25 @@ + + + +CSS Borders: border-top-width: thick equals 5px + + + + + + +

    There should be a black line below and no red.

    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-top-width-thin.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-top-width-thin.html new file mode 100644 index 00000000000..38597f5a22d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-top-width-thin.html @@ -0,0 +1,25 @@ + + + +CSS Borders: border-top-width: thin equals 1px + + + + + + +

    There should be a black line below and no red.

    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/border-width-cssom.html b/tests/wpt/web-platform-tests/css/css-backgrounds/border-width-cssom.html new file mode 100644 index 00000000000..a1276e5362c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/border-width-cssom.html @@ -0,0 +1,32 @@ + + + +CSS Borders: CSSOM for border-*-width: thin, medium, thick + + + + + + + +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-radius-000-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-radius-000-ref.html index aa70cf25780..8e31ec5266f 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-radius-000-ref.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-radius-000-ref.html @@ -92,7 +92,7 @@ border-width: 14px; } .half.trap > .ref { - border-width: 18px; + border-width: 20px; } .fourth > .test { @@ -109,7 +109,7 @@ border-width: 18px; } .fourth.trap > .ref { - border-width: 22px; + border-width: 23px; } .eighth > .test { diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-radius-000.html b/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-radius-000.html index 69474d1a5d2..08822b4ce58 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-radius-000.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-radius-000.html @@ -3,6 +3,8 @@ + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/fieldset-inset-shadow.html b/tests/wpt/web-platform-tests/css/css-backgrounds/fieldset-inset-shadow.html new file mode 100644 index 00000000000..cb13cd805d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/fieldset-inset-shadow.html @@ -0,0 +1,18 @@ + +inset box shadow works on fieldset + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/gradient-wrong-interpolation-crash.html b/tests/wpt/web-platform-tests/css/css-backgrounds/gradient-wrong-interpolation-crash.html new file mode 100644 index 00000000000..5aefb642971 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/gradient-wrong-interpolation-crash.html @@ -0,0 +1,7 @@ + + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/linear-gradient-currentcolor-first-line.html b/tests/wpt/web-platform-tests/css/css-backgrounds/linear-gradient-currentcolor-first-line.html index 981aa8db921..737618fb666 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/linear-gradient-currentcolor-first-line.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/linear-gradient-currentcolor-first-line.html @@ -3,6 +3,7 @@ + + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-right-width-1px-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-right-width-1px-ref.html new file mode 100644 index 00000000000..b725d6ea0f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-right-width-1px-ref.html @@ -0,0 +1,13 @@ + + + +CSS Borders: border-right-width: 1px, reference + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-right-width-3px-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-right-width-3px-ref.html new file mode 100644 index 00000000000..068da127d49 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-right-width-3px-ref.html @@ -0,0 +1,13 @@ + + + +CSS Borders: border-right-width: 3px, reference + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-right-width-5px-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-right-width-5px-ref.html new file mode 100644 index 00000000000..29706fa4f55 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-right-width-5px-ref.html @@ -0,0 +1,13 @@ + + + +CSS Borders: border-right-width: 5px, reference + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-top-width-1px-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-top-width-1px-ref.html new file mode 100644 index 00000000000..15b19482264 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-top-width-1px-ref.html @@ -0,0 +1,13 @@ + + + +CSS Borders: border-top-width: 1px, reference + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-top-width-3px-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-top-width-3px-ref.html new file mode 100644 index 00000000000..3fea5943cfe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-top-width-3px-ref.html @@ -0,0 +1,13 @@ + + + +CSS Borders: border-top-width: 3px, reference + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-top-width-5px-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-top-width-5px-ref.html new file mode 100644 index 00000000000..fa6db4a8434 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-top-width-5px-ref.html @@ -0,0 +1,13 @@ + + + +CSS Borders: border-top-width: 5px, reference + + + +

    There should be a black line below and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/ref-filled-green-100px-square.xht b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/ref-filled-green-100px-square.xht new file mode 100644 index 00000000000..05a13794482 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/ref-filled-green-100px-square.xht @@ -0,0 +1,19 @@ + + + + CSS Reftest Reference + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/support/9-colored-areas.png b/tests/wpt/web-platform-tests/css/css-backgrounds/support/9-colored-areas.png new file mode 100644 index 00000000000..93f56619478 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-backgrounds/support/9-colored-areas.png differ diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-gr-rr-200x200.png b/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-gr-rr-200x200.png new file mode 100644 index 00000000000..5fe3651bd53 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-gr-rr-200x200.png differ diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-rg-rr-200x200.png b/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-rg-rr-200x200.png new file mode 100644 index 00000000000..2474cc0f5ae Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-rg-rr-200x200.png differ diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-rr-gr-200x200.png b/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-rr-gr-200x200.png new file mode 100644 index 00000000000..599fbd30289 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-rr-gr-200x200.png differ diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-rr-rg-200x200.png b/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-rr-rg-200x200.png new file mode 100644 index 00000000000..1333efafd32 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-backgrounds/support/pattern-rr-rg-200x200.png differ diff --git a/tests/wpt/web-platform-tests/css/css-borders/border-width-rounding.tentative.html b/tests/wpt/web-platform-tests/css/css-borders/border-width-rounding.tentative.html new file mode 100644 index 00000000000..04c4ddf40bd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-borders/border-width-rounding.tentative.html @@ -0,0 +1,53 @@ + + + + + CSS Border: width rounding + + + + + + + + + + + +

    + Test passes if border widths are rounded up + when they are greater than 0 and less than 1, + and rounded down when they are greater than 1. +

    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-borders/reference/subpixel-border-width-ref.tentative.html b/tests/wpt/web-platform-tests/css/css-borders/reference/subpixel-border-width-ref.tentative.html new file mode 100644 index 00000000000..3ba8ac5754e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-borders/reference/subpixel-border-width-ref.tentative.html @@ -0,0 +1,44 @@ + + + + + CSS Border: width computed value + + + + + + + + +

    + Test passes if border widths are rounded up + when they are greater than 0 and less than 1, + and rounded down when they are greater than 1. +

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-borders/subpixel-border-width.tentative.html b/tests/wpt/web-platform-tests/css/css-borders/subpixel-border-width.tentative.html new file mode 100644 index 00000000000..d056c01c914 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-borders/subpixel-border-width.tentative.html @@ -0,0 +1,48 @@ + + + + + CSS Border: width computed value + + + + + + + + + + + + +

    + Test passes if border widths are rounded up + when they are greater than 0 and less than 1, + and rounded down when they are greater than 1. +

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-break/abspos-inside-relpos-inside-monolithic.html b/tests/wpt/web-platform-tests/css/css-break/abspos-inside-relpos-inside-monolithic.html new file mode 100644 index 00000000000..879097f3fc2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/abspos-inside-relpos-inside-monolithic.html @@ -0,0 +1,13 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/area-in-inline-crash.html b/tests/wpt/web-platform-tests/css/css-break/area-in-inline-crash.html new file mode 100644 index 00000000000..d409457b214 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/area-in-inline-crash.html @@ -0,0 +1,18 @@ + + + +
    +
    +
    + + +
    +
    + +
    +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/block-in-inline-000.html b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-000.html new file mode 100644 index 00000000000..ae9ee3421b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-000.html @@ -0,0 +1,17 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + +
    +
    + +
    +
    + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/block-in-inline-001.html b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-001.html new file mode 100644 index 00000000000..de967599fe3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-001.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/block-in-inline-002.html b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-002.html new file mode 100644 index 00000000000..c5e44c901c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-002.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/block-in-inline-003.html b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-003.html new file mode 100644 index 00000000000..a276fde5839 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-003.html @@ -0,0 +1,14 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/block-in-inline-004-crash.html b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-004-crash.html new file mode 100644 index 00000000000..41731a98657 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-004-crash.html @@ -0,0 +1,14 @@ + + + +
    + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/block-in-inline-005-crash.html b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-005-crash.html new file mode 100644 index 00000000000..599ac2226fa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-005-crash.html @@ -0,0 +1,14 @@ + + + +
    + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/block-in-inline-006-crash.html b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-006-crash.html new file mode 100644 index 00000000000..5bc5276a314 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-006-crash.html @@ -0,0 +1,14 @@ + + + +
    + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/block-in-inline-007-crash.html b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-007-crash.html new file mode 100644 index 00000000000..a8ab0078429 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/block-in-inline-007-crash.html @@ -0,0 +1,14 @@ + + + +
    + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-001.html b/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-001.html new file mode 100644 index 00000000000..c247c9dbe09 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-001.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-002.html b/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-002.html new file mode 100644 index 00000000000..8aff0d4a947 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-002.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-003.html b/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-003.html new file mode 100644 index 00000000000..702f01b4cb3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-003.html @@ -0,0 +1,41 @@ + + + + + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-004.html b/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-004.html new file mode 100644 index 00000000000..d1840bfe962 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/box-decoration-break-clone-004.html @@ -0,0 +1,37 @@ + + + + + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/box-shadow-ref.html b/tests/wpt/web-platform-tests/css/css-break/box-shadow-001-ref.html similarity index 100% rename from tests/wpt/web-platform-tests/css/css-break/box-shadow-ref.html rename to tests/wpt/web-platform-tests/css/css-break/box-shadow-001-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/box-shadow-001.html b/tests/wpt/web-platform-tests/css/css-break/box-shadow-001.html new file mode 100644 index 00000000000..d35aeb682dc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/box-shadow-001.html @@ -0,0 +1,21 @@ + + + + +

    There should be 6 identical cyan rectangles below, all with a box shadow.

    + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/box-shadow-002-ref.html b/tests/wpt/web-platform-tests/css/css-break/box-shadow-002-ref.html new file mode 100644 index 00000000000..a55abfbb99e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/box-shadow-002-ref.html @@ -0,0 +1,14 @@ + + +

    Box shadows should not be painted at column breaks.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/box-shadow-002.html b/tests/wpt/web-platform-tests/css/css-break/box-shadow-002.html new file mode 100644 index 00000000000..d26bb8c72e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/box-shadow-002.html @@ -0,0 +1,9 @@ + + + + + +

    Box shadows should not be painted at column breaks.

    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/box-shadow-003-ref.html b/tests/wpt/web-platform-tests/css/css-break/box-shadow-003-ref.html new file mode 100644 index 00000000000..1c9451d8079 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/box-shadow-003-ref.html @@ -0,0 +1,14 @@ + + +

    Box shadows should not be painted at column breaks.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/box-shadow-003.html b/tests/wpt/web-platform-tests/css/css-break/box-shadow-003.html new file mode 100644 index 00000000000..ba8fedfe1b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/box-shadow-003.html @@ -0,0 +1,9 @@ + + + + + +

    Box shadows should not be painted at column breaks.

    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/box-shadow-004-ref.html b/tests/wpt/web-platform-tests/css/css-break/box-shadow-004-ref.html new file mode 100644 index 00000000000..29156878c0b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/box-shadow-004-ref.html @@ -0,0 +1,14 @@ + + +

    Box shadows should not be painted at column breaks.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/box-shadow-004.html b/tests/wpt/web-platform-tests/css/css-break/box-shadow-004.html new file mode 100644 index 00000000000..bdf66fcddd3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/box-shadow-004.html @@ -0,0 +1,9 @@ + + + + + +

    Box shadows should not be painted at column breaks.

    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/box-shadow.html b/tests/wpt/web-platform-tests/css/css-break/box-shadow.html deleted file mode 100644 index afc28d03c6f..00000000000 --- a/tests/wpt/web-platform-tests/css/css-break/box-shadow.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - -

    There should be 6 identical cyan rectangles below, all with a box shadow.

    - -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-after-in-parallel-flow-crash.html b/tests/wpt/web-platform-tests/css/css-break/break-after-in-parallel-flow-crash.html new file mode 100644 index 00000000000..b5956329502 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-after-in-parallel-flow-crash.html @@ -0,0 +1,10 @@ + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-after-oof-before-preceding-pushed-float-crash.html b/tests/wpt/web-platform-tests/css/css-break/break-after-oof-before-preceding-pushed-float-crash.html new file mode 100644 index 00000000000..8c4355c22d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-after-oof-before-preceding-pushed-float-crash.html @@ -0,0 +1,16 @@ + + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-before-float-after-line-after-floats-crash.html b/tests/wpt/web-platform-tests/css/css-break/break-before-float-after-line-after-floats-crash.html new file mode 100644 index 00000000000..9066cd77ecd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-before-float-after-line-after-floats-crash.html @@ -0,0 +1,9 @@ + + + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-009.html b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-009.html new file mode 100644 index 00000000000..d2e84f210a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-009.html @@ -0,0 +1,16 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-010.html b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-010.html new file mode 100644 index 00000000000..f07017a64ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-010.html @@ -0,0 +1,29 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-011.html b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-011.html new file mode 100644 index 00000000000..201677a2eac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-011.html @@ -0,0 +1,20 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-012.html b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-012.html new file mode 100644 index 00000000000..e92f6a98643 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-012.html @@ -0,0 +1,19 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-013.html b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-013.html new file mode 100644 index 00000000000..236b99e94ee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-013.html @@ -0,0 +1,20 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-014.html b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-014.html new file mode 100644 index 00000000000..91da7644835 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-between-avoid-014.html @@ -0,0 +1,20 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-between-force-000.html b/tests/wpt/web-platform-tests/css/css-break/break-between-force-000.html new file mode 100644 index 00000000000..9bccf7395e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-between-force-000.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-between-force-001.html b/tests/wpt/web-platform-tests/css/css-break/break-between-force-001.html new file mode 100644 index 00000000000..8ea340b1223 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-between-force-001.html @@ -0,0 +1,13 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/break-between-force-002.html b/tests/wpt/web-platform-tests/css/css-break/break-between-force-002.html new file mode 100644 index 00000000000..7e3b79e4f1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/break-between-force-002.html @@ -0,0 +1,13 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/change-break-after.html b/tests/wpt/web-platform-tests/css/css-break/change-break-after.html new file mode 100644 index 00000000000..752a84ae7b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/change-break-after.html @@ -0,0 +1,16 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/change-break-after2.html b/tests/wpt/web-platform-tests/css/css-break/change-break-after2.html new file mode 100644 index 00000000000..b35a187a29c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/change-break-after2.html @@ -0,0 +1,17 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/change-break-before.html b/tests/wpt/web-platform-tests/css/css-break/change-break-before.html new file mode 100644 index 00000000000..303a1fb00d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/change-break-before.html @@ -0,0 +1,16 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/change-break-inside.html b/tests/wpt/web-platform-tests/css/css-break/change-break-inside.html new file mode 100644 index 00000000000..e7b7047984a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/change-break-inside.html @@ -0,0 +1,16 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1288769-000-crash.html b/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1288769-000-crash.html new file mode 100644 index 00000000000..884c92f0852 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1288769-000-crash.html @@ -0,0 +1,14 @@ + +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1288769-001-crash.html b/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1288769-001-crash.html new file mode 100644 index 00000000000..bf7ab3b7e61 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1288769-001-crash.html @@ -0,0 +1,12 @@ + +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1289999-crash.https.html b/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1289999-crash.https.html new file mode 100644 index 00000000000..fab89f06d95 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1289999-crash.https.html @@ -0,0 +1,9 @@ + + + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1318455-crash.html b/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1318455-crash.html new file mode 100644 index 00000000000..f18a166e8cd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/chrome-bug-1318455-crash.html @@ -0,0 +1,30 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-000.html b/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-000.html new file mode 100644 index 00000000000..46880977bbb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-000.html @@ -0,0 +1,16 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-001.html b/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-001.html new file mode 100644 index 00000000000..be675ccf487 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-001.html @@ -0,0 +1,14 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-002.html b/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-002.html new file mode 100644 index 00000000000..110b4e7e1af --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-002.html @@ -0,0 +1,16 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-003.html b/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-003.html new file mode 100644 index 00000000000..0923e1ac9e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-003.html @@ -0,0 +1,16 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-004.html b/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-004.html new file mode 100644 index 00000000000..30cdc56db7d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/class-c-breakpoint-after-float-004.html @@ -0,0 +1,16 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/clear-br-in-size-containment-crash.html b/tests/wpt/web-platform-tests/css/css-break/clear-br-in-size-containment-crash.html new file mode 100644 index 00000000000..118e9a79016 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/clear-br-in-size-containment-crash.html @@ -0,0 +1,10 @@ + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/clear-float-in-size-containment-crash.html b/tests/wpt/web-platform-tests/css/css-break/clear-float-in-size-containment-crash.html new file mode 100644 index 00000000000..13d0200ec53 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/clear-float-in-size-containment-crash.html @@ -0,0 +1,9 @@ + + + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/clear-past-float-with-oof-twice-crash.html b/tests/wpt/web-platform-tests/css/css-break/clear-past-float-with-oof-twice-crash.html new file mode 100644 index 00000000000..82317ca85bb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/clear-past-float-with-oof-twice-crash.html @@ -0,0 +1,10 @@ + + + +
    +
    +
    +
    +
    +

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/clearance-parallel-flow-001.html b/tests/wpt/web-platform-tests/css/css-break/clearance-parallel-flow-001.html new file mode 100644 index 00000000000..f7acd7f4f08 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/clearance-parallel-flow-001.html @@ -0,0 +1,19 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/clearance-parallel-flow-002.html b/tests/wpt/web-platform-tests/css/css-break/clearance-parallel-flow-002.html new file mode 100644 index 00000000000..a2367e0dde3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/clearance-parallel-flow-002.html @@ -0,0 +1,28 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/clearance-self-collapsing-past-fragmented-float.html b/tests/wpt/web-platform-tests/css/css-break/clearance-self-collapsing-past-fragmented-float.html new file mode 100644 index 00000000000..14445edc463 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/clearance-self-collapsing-past-fragmented-float.html @@ -0,0 +1,12 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/column-balancing-with-oofs-crash.html b/tests/wpt/web-platform-tests/css/css-break/column-balancing-with-oofs-crash.html new file mode 100644 index 00000000000..a74e651dc28 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/column-balancing-with-oofs-crash.html @@ -0,0 +1,31 @@ + + + +
    +
    +
    +

    + text +

    +
    +
    +
    +
    +

    + text +

    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/empty-fieldset-tall-bottom-padding-crash.html b/tests/wpt/web-platform-tests/css/css-break/empty-fieldset-tall-bottom-padding-crash.html new file mode 100644 index 00000000000..170a744b287 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/empty-fieldset-tall-bottom-padding-crash.html @@ -0,0 +1,6 @@ + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/firefox-bug1693616-001-crash.html b/tests/wpt/web-platform-tests/css/css-break/firefox-bug1693616-001-crash.html new file mode 100644 index 00000000000..5aadb70037c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/firefox-bug1693616-001-crash.html @@ -0,0 +1,25 @@ + + + + + + + + + + +Hopefully this doesn't hang. +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/firefox-bug1693616-002-crash.html b/tests/wpt/web-platform-tests/css/css-break/firefox-bug1693616-002-crash.html new file mode 100644 index 00000000000..01f836c805d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/firefox-bug1693616-002-crash.html @@ -0,0 +1,24 @@ + + + + + + + + + + +Hopefully this doesn't hang. +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print-ref.html b/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print-ref.html new file mode 100644 index 00000000000..f12d31acd9d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print-ref.html @@ -0,0 +1,10 @@ + + + + diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print.html b/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print.html new file mode 100644 index 00000000000..694e5376cbf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print.html @@ -0,0 +1,12 @@ + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/button-in-multicol-crash.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/button-in-multicol-crash.html new file mode 100644 index 00000000000..30e373542a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/button-in-multicol-crash.html @@ -0,0 +1,7 @@ + + +

    PASS if no crash or DCHECK failure.

    +
    + x + +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-container-fragmentation-009.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-container-fragmentation-009.html new file mode 100644 index 00000000000..f4032458c99 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-container-fragmentation-009.html @@ -0,0 +1,33 @@ + + + OOF static pos in fragmented flex container with multicol CB. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-container-fragmentation-010.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-container-fragmentation-010.html new file mode 100644 index 00000000000..9a1f4026ec9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-container-fragmentation-010.html @@ -0,0 +1,38 @@ + + + OOF static pos in fragmented flex container with multicol CB, with align end. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-container-fragmentation-011.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-container-fragmentation-011.html new file mode 100644 index 00000000000..b4058558ff4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-container-fragmentation-011.html @@ -0,0 +1,48 @@ + + + OOF static pos in fragmented flex container with multicol CB, with align center. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/float-in-webkit-box-in-multicol-crash.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/float-in-webkit-box-in-multicol-crash.html new file mode 100644 index 00000000000..e93974994bf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/float-in-webkit-box-in-multicol-crash.html @@ -0,0 +1,7 @@ + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/image-in-fragmented-flexbox-crash-001.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/image-in-fragmented-flexbox-crash-001.html new file mode 100644 index 00000000000..3c8a6c52944 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/image-in-fragmented-flexbox-crash-001.html @@ -0,0 +1,7 @@ + + +
    +
    + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/image-in-fragmented-flexbox-crash-002.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/image-in-fragmented-flexbox-crash-002.html new file mode 100644 index 00000000000..a63c5be6c3e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/image-in-fragmented-flexbox-crash-002.html @@ -0,0 +1,8 @@ + + +
    +
    + text text + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/monolithic-item-in-fragmented-flexbox-crash.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/monolithic-item-in-fragmented-flexbox-crash.html new file mode 100644 index 00000000000..edf13244e1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/monolithic-item-in-fragmented-flexbox-crash.html @@ -0,0 +1,7 @@ + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-001.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-001.html new file mode 100644 index 00000000000..9f064d4ae40 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-001.html @@ -0,0 +1,35 @@ + + + Simple multi-line column flex fragmentation. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-002.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-002.html new file mode 100644 index 00000000000..ea8190173f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-002.html @@ -0,0 +1,51 @@ + + + Multi-line column flex fragmentation with item overflow. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-003.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-003.html new file mode 100644 index 00000000000..eb00937ea41 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-003.html @@ -0,0 +1,34 @@ + + + Multi-line column flex fragmentation intrinsic block size. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-004.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-004.html new file mode 100644 index 00000000000..71e29df7f3d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-004.html @@ -0,0 +1,36 @@ + + + Multi-line column flex fragmentation. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-005.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-005.html new file mode 100644 index 00000000000..a713943ee71 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-005.html @@ -0,0 +1,46 @@ + + + Multi-line column flex fragmentation with nested OOFs. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-006.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-006.html new file mode 100644 index 00000000000..f3936040bb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-006.html @@ -0,0 +1,35 @@ + + + Multi-line column flex fragmentation with items that stretch. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-007.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-007.html new file mode 100644 index 00000000000..e5602f0bb60 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-007.html @@ -0,0 +1,38 @@ + + + Multi-line column flex fragmentation with items that stretch. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-008.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-008.html new file mode 100644 index 00000000000..9d4f0a6f615 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-008.html @@ -0,0 +1,38 @@ + + + Multi-line column flex fragmentation. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-009.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-009.html new file mode 100644 index 00000000000..8e4ae4e1961 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-009.html @@ -0,0 +1,15 @@ + + + Tests that a flex-item grows due to fragmentation. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-010.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-010.html new file mode 100644 index 00000000000..98008eec4e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-010.html @@ -0,0 +1,18 @@ + + + Tests that a flex-item with a fixed block-size container grows due to fragmentation. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-011.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-011.html new file mode 100644 index 00000000000..c3fbd41fcaa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-011.html @@ -0,0 +1,15 @@ + + + Multi-line column flex fragmentation: Percentage height decendant. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-012.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-012.html new file mode 100644 index 00000000000..7552a741857 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-012.html @@ -0,0 +1,18 @@ + + + Tests that a flexbox expands its intrinsic block-size, due to a + flex item fragmenting. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-013.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-013.html new file mode 100644 index 00000000000..ed739947e3d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-013.html @@ -0,0 +1,24 @@ + + + Tests that flex-items get pushed down due to a previous flex-item expanding as + a result of fragmentation. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-014.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-014.html new file mode 100644 index 00000000000..bcc32dd9ba9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-014.html @@ -0,0 +1,21 @@ + + + Tests that flex-items *don't* get pushed down when there is no expansion. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-015.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-015.html new file mode 100644 index 00000000000..563f3663c38 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-015.html @@ -0,0 +1,44 @@ + + + Tests that flex-items get pushed down due to a previous flex-item expanding as + a result of fragmentation. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-016.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-016.html new file mode 100644 index 00000000000..e81ad10e037 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-016.html @@ -0,0 +1,55 @@ + + + Tests that flex-items get pushed down due to a previous flex row expanding as + a result of fragmentation with margin-top. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-017.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-017.html new file mode 100644 index 00000000000..070b0d6e854 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-017.html @@ -0,0 +1,45 @@ + + + Multi-line column flex fragmentation with break-inside: avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-018.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-018.html new file mode 100644 index 00000000000..a491dfac810 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-018.html @@ -0,0 +1,49 @@ + + + Multi-line column flex fragmentation with break-before: avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-019.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-019.html new file mode 100644 index 00000000000..414326a5815 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-019.html @@ -0,0 +1,49 @@ + + + Multi-line column flex fragmentation with break-before: avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-020.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-020.html new file mode 100644 index 00000000000..18030dd0025 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-020.html @@ -0,0 +1,49 @@ + + + Multi-line column flex fragmentation with break-after: avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-021.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-021.html new file mode 100644 index 00000000000..833da1afce4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-021.html @@ -0,0 +1,46 @@ + + + Multi-line column flex fragmentation with break-before: column. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-022.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-022.html new file mode 100644 index 00000000000..60f543b5d12 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-022.html @@ -0,0 +1,46 @@ + + + Multi-line column flex fragmentation with break-after: column. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-023.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-023.html new file mode 100644 index 00000000000..626d2679ea4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-023.html @@ -0,0 +1,48 @@ + + + Multi-line column flex fragmentation: break-before values on the first item + are propagated to the flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-024.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-024.html new file mode 100644 index 00000000000..4cd53adf6d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-024.html @@ -0,0 +1,44 @@ + + + Multi-line column flex fragmentation: break-after values on the first item + are propagated to the flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-025.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-025.html new file mode 100644 index 00000000000..93dd9b4a621 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-025.html @@ -0,0 +1,48 @@ + + + Multi-line column flex fragmentation: break-before values on the first item + are propagated to the flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-026.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-026.html new file mode 100644 index 00000000000..204cc15a2d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-026.html @@ -0,0 +1,44 @@ + + + Multi-line column flex fragmentation: break-after values on the first item + are propagated to the flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-027.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-027.html new file mode 100644 index 00000000000..95b73907b86 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-027.html @@ -0,0 +1,45 @@ + + + Multi-line column flex fragmentation: early break inside columns. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-028.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-028.html new file mode 100644 index 00000000000..d96cd56d692 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-028.html @@ -0,0 +1,48 @@ + + + Multi-line column flex fragmentation: early break inside columns. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-029.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-029.html new file mode 100644 index 00000000000..ec47c9f3af5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-029.html @@ -0,0 +1,27 @@ + + + Multi-line column flex fragmentation: we shouldn't insert a forced break if + there's no preceding content at the start of a fragmentainer. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-030.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-030.html new file mode 100644 index 00000000000..443984588b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-030.html @@ -0,0 +1,27 @@ + + + Multi-line column flex fragmentation: the flex container consumes the + remaining fragmentainer space if an item breaks before. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-031.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-031.html new file mode 100644 index 00000000000..fc88e70a9cd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-031.html @@ -0,0 +1,48 @@ + + + Multi-line column flex fragmentation with break-inside: avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-032.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-032.html new file mode 100644 index 00000000000..978dbd1fa2f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-032.html @@ -0,0 +1,40 @@ + + + Multi-line column flex fragmentation with forced break and negative margin. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-033.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-033.html new file mode 100644 index 00000000000..5e511bdf553 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-033.html @@ -0,0 +1,60 @@ + + + Multi-line column flex fragmentation: column balancing with forced break. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-034.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-034.html new file mode 100644 index 00000000000..0a2e0367f22 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-034.html @@ -0,0 +1,39 @@ + + + Multi-line column flex fragmentation: break-before:avoid/break-inside:avoid + and column balancing. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-035.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-035.html new file mode 100644 index 00000000000..c26d055c34b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-035.html @@ -0,0 +1,31 @@ + + + Multi-line column flex fragmentation: nested column balancing. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-036.tentative.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-036.tentative.html new file mode 100644 index 00000000000..7c6a55feee6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-036.tentative.html @@ -0,0 +1,35 @@ + + + Multi-line column flex fragmentation: tall content inside constrained block. + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-037.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-037.html new file mode 100644 index 00000000000..5fd1fa283bc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-037.html @@ -0,0 +1,46 @@ + + + Tests that flex-items get pushed down due to a previous flex row expanding as + a result of fragmentation with margin-top. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-038.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-038.html new file mode 100644 index 00000000000..c970d4a69b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-038.html @@ -0,0 +1,31 @@ + + + Multi-line column flex fragmentation: Tall margins. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-039.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-039.html new file mode 100644 index 00000000000..30c8983d20f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-039.html @@ -0,0 +1,33 @@ + + + Multi-line column flex fragmentation: Tall margins with forced break. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-040.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-040.html new file mode 100644 index 00000000000..ce99ab6889e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-040.html @@ -0,0 +1,51 @@ + + + Multi-line column flex fragmentation: Negative margins. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-041-ref.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-041-ref.html new file mode 100644 index 00000000000..4924a792b73 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-041-ref.html @@ -0,0 +1,15 @@ + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-041.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-041.html new file mode 100644 index 00000000000..e81a37429d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-041.html @@ -0,0 +1,19 @@ + + + Multi-line column flex fragmentation: column-reverse. + + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-042-ref.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-042-ref.html new file mode 100644 index 00000000000..ad7d3c78ecb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-042-ref.html @@ -0,0 +1,15 @@ + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-042.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-042.html new file mode 100644 index 00000000000..90c93834e2e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-042.html @@ -0,0 +1,19 @@ + + + Multi-line column flex fragmentation: wrap-reverse. + + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-043-ref.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-043-ref.html new file mode 100644 index 00000000000..f6f933a9c54 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-043-ref.html @@ -0,0 +1,15 @@ + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-043.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-043.html new file mode 100644 index 00000000000..37b30691368 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-043.html @@ -0,0 +1,19 @@ + + + Multi-line column flex fragmentation: wrap-reverse and column-reverse. + + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-044-ref.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-044-ref.html new file mode 100644 index 00000000000..20710e8c292 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-044-ref.html @@ -0,0 +1,16 @@ + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-044.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-044.html new file mode 100644 index 00000000000..676cb28c818 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-044.html @@ -0,0 +1,20 @@ + + + Multi-line column flex fragmentation: wrap-reverse and column-reverse with break-rules. + + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-045.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-045.html new file mode 100644 index 00000000000..b445a15113c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-045.html @@ -0,0 +1,37 @@ + + + Multi-line column flex fragmentation: OOF static position and alignment. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-046.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-046.html new file mode 100644 index 00000000000..f009b1a3e79 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-046.html @@ -0,0 +1,51 @@ + + + Multi-line column flex fragmentation: early break inside columns w/ vertical + writing-mode. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-047.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-047.html new file mode 100644 index 00000000000..a09eaea6b5c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-047.html @@ -0,0 +1,36 @@ + + + Multi-line column flex fragmentation: Tall margins with forced break and + vertical writing-mode. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-048.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-048.html new file mode 100644 index 00000000000..82800413950 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-048.html @@ -0,0 +1,21 @@ + + + Tests that a flex-item that shrinks *doesn't* expand. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-049.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-049.html new file mode 100644 index 00000000000..0ede74a118c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-049.html @@ -0,0 +1,16 @@ + + + Tests that a flex-item with an indefinite flex-basis expands if the + container hieght is auto. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-050.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-050.html new file mode 100644 index 00000000000..b0467d5b805 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-050.html @@ -0,0 +1,21 @@ + + + Tests that the margin-bottom of the last flex item is taken into account + when fragmenting. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-051.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-051.html new file mode 100644 index 00000000000..f886bcc7bee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-051.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-052.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-052.html new file mode 100644 index 00000000000..9496418e857 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-052.html @@ -0,0 +1,19 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-053.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-053.html new file mode 100644 index 00000000000..aa1f1debce9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-column-flex-fragmentation-053.html @@ -0,0 +1,18 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-010.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-010.html index 5723fbfb77a..18cd9d7ee75 100644 --- a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-010.html +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-010.html @@ -16,7 +16,7 @@ }

    Test passes if there is a filled green square and no red.

    -
    +
    @@ -27,17 +27,17 @@
    -
    +
    -
    -
    +
    -
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-015.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-015.html index 0620a419d56..64c32c0692e 100644 --- a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-015.html +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-015.html @@ -35,6 +35,6 @@
    -
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-016.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-016.html index fbd557cc3c3..f723663ac8d 100644 --- a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-016.html +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-016.html @@ -12,27 +12,26 @@ } #flex > div { background: green; - width: 10px; + width: 20px; }

    Test passes if there is a filled green square and no red.

    -
    +
    +
    -
    +
    -
    -
    +
    -
    +
    -
    -
    -
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-018.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-018.html new file mode 100644 index 00000000000..f12e6519a75 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-018.html @@ -0,0 +1,25 @@ + + + Multi-line row flex fragmentation with break-inside: avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-019.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-019.html new file mode 100644 index 00000000000..3c85a703f99 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-019.html @@ -0,0 +1,34 @@ + + + Multi-line row flex fragmentation with break-inside: avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-020.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-020.html new file mode 100644 index 00000000000..334e53468e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-020.html @@ -0,0 +1,29 @@ + + + Multi-line row flex fragmentation with break-inside: avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-021.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-021.html new file mode 100644 index 00000000000..74890bea913 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-021.html @@ -0,0 +1,25 @@ + + + Multi-line row flex fragmentation with break-inside: avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-022.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-022.html new file mode 100644 index 00000000000..2122609a0ec --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-022.html @@ -0,0 +1,30 @@ + + + Multi-line row flex fragmentation with break-before. A forced break should + trump break-before:avoid and break-after:avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-023.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-023.html new file mode 100644 index 00000000000..32f7d31c18a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-023.html @@ -0,0 +1,28 @@ + + + Multi-line row flex fragmentation with break-after. A forced break should + trump break-before:avoid and break-after:avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-024.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-024.html new file mode 100644 index 00000000000..372b3e170d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-024.html @@ -0,0 +1,21 @@ + + + Multi-line row flex fragmentation: the flex container consumes the + remaining fragmentainer space if a row breaks before. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-025.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-025.html new file mode 100644 index 00000000000..8ea8803651b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-025.html @@ -0,0 +1,25 @@ + + + Multi-line row flex fragmentation: break-before values on the first row + are propagated to the flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-026.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-026.html new file mode 100644 index 00000000000..b83375e249e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-026.html @@ -0,0 +1,25 @@ + + + Multi-line row flex fragmentation: break-after values on the last row + are propagated to the flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-027.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-027.html new file mode 100644 index 00000000000..45e4a1452ff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-027.html @@ -0,0 +1,27 @@ + + + Multi-line row flex fragmentation: break-before values on the first row + are propagated to the nested flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-028.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-028.html new file mode 100644 index 00000000000..5abb90c9a40 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-028.html @@ -0,0 +1,26 @@ + + + Multi-line row flex fragmentation: break-after values on the last row + are propagated to the nested flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-029.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-029.html new file mode 100644 index 00000000000..23f9defb557 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-029.html @@ -0,0 +1,31 @@ + + + Multi-line row flex fragmentation: row offset with break-before and alignment. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-030.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-030.html new file mode 100644 index 00000000000..52ac3bf2162 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-030.html @@ -0,0 +1,27 @@ + + + Multi-line row flex fragmentation: row offset with break-inside:avoid + and alignment. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-031.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-031.html new file mode 100644 index 00000000000..e5780d254e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-031.html @@ -0,0 +1,39 @@ + + + Multi-line row flex fragmentation: column balancing with forced break. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-032.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-032.html new file mode 100644 index 00000000000..274f88a794f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-032.html @@ -0,0 +1,29 @@ + + + Multi-line row flex fragmentation: break-before:avoid on the first + row is propagated to the container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-033.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-033.html new file mode 100644 index 00000000000..eaf1aefc4a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-033.html @@ -0,0 +1,28 @@ + + + Multi-line row flex fragmentation: break-before:avoid between rows. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-034.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-034.html new file mode 100644 index 00000000000..0fb81034688 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-034.html @@ -0,0 +1,27 @@ + + + Multi-line row flex fragmentation: break-after:avoid on the last + row is propagated to the container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-035.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-035.html new file mode 100644 index 00000000000..43653071aea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-035.html @@ -0,0 +1,28 @@ + + + Multi-line row flex fragmentation: break-after:avoid between rows. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-036.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-036.html new file mode 100644 index 00000000000..013c9e20137 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-036.html @@ -0,0 +1,25 @@ + + + Multi-line row flex fragmentation: empty rows with alignment. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-037.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-037.html new file mode 100644 index 00000000000..62bf337d850 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-037.html @@ -0,0 +1,28 @@ + + + Multi-line row flex fragmentation: break-before:avoid and column balancing. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-038.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-038.html new file mode 100644 index 00000000000..e745987aec8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-038.html @@ -0,0 +1,28 @@ + + + Multi-line row flex fragmentation: break-before:avoid and column balancing. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-039.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-039.html new file mode 100644 index 00000000000..6ef65db744f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-039.html @@ -0,0 +1,30 @@ + + + Multi-line row flex fragmentation: nested column balancing. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-040.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-040.html new file mode 100644 index 00000000000..0eaff879c53 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-040.html @@ -0,0 +1,31 @@ + + + Multi-line row flex fragmentation: nested column balancing. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-041.tentative.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-041.tentative.html new file mode 100644 index 00000000000..028051c0590 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-041.tentative.html @@ -0,0 +1,28 @@ + + + Multi-line row flex fragmentation: tall content inside constrained block. + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-042.tentative.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-042.tentative.html new file mode 100644 index 00000000000..725d1f97f37 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-042.tentative.html @@ -0,0 +1,28 @@ + + + Multi-line row flex fragmentation: tall content inside constrained block. + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-043.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-043.html new file mode 100644 index 00000000000..7d0500ad05d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-043.html @@ -0,0 +1,29 @@ + + + Multi-line row flex fragmentation: Tall margins. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-044.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-044.html new file mode 100644 index 00000000000..8262b0e32f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-044.html @@ -0,0 +1,30 @@ + + + Multi-line row flex fragmentation: Tall margins with forced break. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-045.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-045.html new file mode 100644 index 00000000000..f5a43339478 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-045.html @@ -0,0 +1,31 @@ + + + Multi-line row flex fragmentation: Negative margins. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-046.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-046.html new file mode 100644 index 00000000000..99e25337920 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-046.html @@ -0,0 +1,15 @@ + + + Multi-line row flex fragmentation: Percentage height decendant. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-047-ref.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-047-ref.html new file mode 100644 index 00000000000..d669603858d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-047-ref.html @@ -0,0 +1,10 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-047.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-047.html new file mode 100644 index 00000000000..f5947287853 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-047.html @@ -0,0 +1,14 @@ + + + Multi-line row flex fragmentation: row-reverse. + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-048-ref.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-048-ref.html new file mode 100644 index 00000000000..1ffc07387d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-048-ref.html @@ -0,0 +1,10 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-048.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-048.html new file mode 100644 index 00000000000..5c32606312d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-048.html @@ -0,0 +1,14 @@ + + + Multi-line row flex fragmentation: wrap-reverse. + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-049-ref.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-049-ref.html new file mode 100644 index 00000000000..ffbedaada1e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-049-ref.html @@ -0,0 +1,10 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-049.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-049.html new file mode 100644 index 00000000000..e36c48c1594 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-049.html @@ -0,0 +1,14 @@ + + + Multi-line row flex fragmentation: wrap-reverse and row-reverse. + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-050-ref.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-050-ref.html new file mode 100644 index 00000000000..d0e574022b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-050-ref.html @@ -0,0 +1,15 @@ + + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-050.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-050.html new file mode 100644 index 00000000000..a96268df0f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-050.html @@ -0,0 +1,19 @@ + + + Multi-line row flex fragmentation: wrap-reverse and row-reverse with break-rules. + + + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-051.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-051.html new file mode 100644 index 00000000000..0f826cf3c58 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-051.html @@ -0,0 +1,33 @@ + + + Multi-line row flex fragmentation: OOF static position and alignment. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-052.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-052.html new file mode 100644 index 00000000000..8f5a612f5d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-052.html @@ -0,0 +1,33 @@ + + + Multi-line row flex fragmentation: Row expansion and stretching. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-053.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-053.html new file mode 100644 index 00000000000..f42d5784830 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-053.html @@ -0,0 +1,37 @@ + + + Multi-line row flex fragmentation: Row expansion and stretching with item overflow. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-054.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-054.html new file mode 100644 index 00000000000..9752217ba43 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-054.html @@ -0,0 +1,32 @@ + + + Multi-line row flex fragmentation: Row expansion and stretching. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-055.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-055.html new file mode 100644 index 00000000000..39d2c6434d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-055.html @@ -0,0 +1,27 @@ + + + Multi-line row flex fragmentation: Item overflow and stretching. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-056.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-056.html new file mode 100644 index 00000000000..0b71c13cce9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-056.html @@ -0,0 +1,30 @@ + + + Multi-line row flex fragmentation: Item overflow and stretching w/ vertical + writing-mode. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-057.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-057.html new file mode 100644 index 00000000000..c20e684b452 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-057.html @@ -0,0 +1,40 @@ + + + Multi-line row flex fragmentation with items in the same row ending layout + in different fragmentainers w/ vertical writing-mode. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-058.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-058.html new file mode 100644 index 00000000000..4746c8f93d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-058.html @@ -0,0 +1,33 @@ + + + Multi-line row flex fragmentation: OOF static position and alignment. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-059.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-059.html new file mode 100644 index 00000000000..fd77f0fd44c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-059.html @@ -0,0 +1,31 @@ + + + Multi-line row flex fragmentation: nested multicols and break-inside:avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-060.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-060.html new file mode 100644 index 00000000000..3dcf3c888c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-060.html @@ -0,0 +1,30 @@ + + + Multi-line row flex fragmentation: row-gap and item expansion. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-061.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-061.html new file mode 100644 index 00000000000..10f8a666e4f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-061.html @@ -0,0 +1,22 @@ + + + Tests that the margin-bottom of the last flex item is taken into account + when fragmenting. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-062.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-062.html new file mode 100644 index 00000000000..1d9d8739a91 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-062.html @@ -0,0 +1,19 @@ + + + Tests that the margin-bottom is taken into account when fragmenting with expansion. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/quirks-flex-in-multicol-crash.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/quirks-flex-in-multicol-crash.html new file mode 100644 index 00000000000..6b6f2505684 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/quirks-flex-in-multicol-crash.html @@ -0,0 +1,8 @@ + + + + +
    two words
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-029.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-029.html index a24f735f773..e6f7f8a5fb0 100644 --- a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-029.html +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-029.html @@ -18,9 +18,9 @@
    -
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-032.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-032.html new file mode 100644 index 00000000000..c78169725a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-032.html @@ -0,0 +1,31 @@ + + + Single-line column flex fragmentation: column balancing with forced break. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-033.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-033.html new file mode 100644 index 00000000000..0a7e423e116 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-033.html @@ -0,0 +1,27 @@ + + + Single-line column flex fragmentation: Tall margins. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-034.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-034.html new file mode 100644 index 00000000000..e84e633878d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-034.html @@ -0,0 +1,27 @@ + + + Single-line column flex fragmentation: Tall margins with forced break. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-035.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-035.html new file mode 100644 index 00000000000..317336fa2c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-035.html @@ -0,0 +1,21 @@ + + + Single-line column flex fragmentation: Negative margins. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-036.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-036.html new file mode 100644 index 00000000000..41f9f93277e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-036.html @@ -0,0 +1,14 @@ + + + Single-line column flex fragmentation: Percentage height decendant. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-037.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-037.html new file mode 100644 index 00000000000..f4ce7620853 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-037.html @@ -0,0 +1,17 @@ + + + Single-line column flex fragmentation: nested forced break with overflow. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-038.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-038.html new file mode 100644 index 00000000000..a537ee7282e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-038.html @@ -0,0 +1,17 @@ + + + Single-line column flex fragmentation: forced breaks with overflow. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-039.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-039.html new file mode 100644 index 00000000000..c5820951b54 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-039.html @@ -0,0 +1,38 @@ + + + Single-line column flex fragmentation: column balancing with forced break. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-040-ref.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-040-ref.html new file mode 100644 index 00000000000..3d20cb44e49 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-040-ref.html @@ -0,0 +1,10 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-040.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-040.html new file mode 100644 index 00000000000..bc4fa7b01cb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-040.html @@ -0,0 +1,14 @@ + + + Single-line column flex fragmentation: column-reverse. + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-041.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-041.html new file mode 100644 index 00000000000..66a6b0660f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-041.html @@ -0,0 +1,28 @@ + + + Single-line column flex fragmentation: OOF static position and alignment. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-042.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-042.html new file mode 100644 index 00000000000..be5732c24d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-042.html @@ -0,0 +1,31 @@ + + + Single-line column flex fragmentation: OOF static position with alignment + and expansion. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-043.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-043.html new file mode 100644 index 00000000000..decca1369e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-043.html @@ -0,0 +1,33 @@ + + + Single-line column flex fragmentation: OOF static position with alignment + and expansion. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-044.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-044.html new file mode 100644 index 00000000000..2ef4c988ec5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-044.html @@ -0,0 +1,20 @@ + + + Tests that flex-items get pushed down due to a previous multicol flex-item + expanding as a result of fragmentation w/ vertical writing-mode. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-045.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-045.html new file mode 100644 index 00000000000..f2d4d745fa2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-045.html @@ -0,0 +1,41 @@ + + + Single-line column flex fragmentation: column balancing with forced break + w/ vertical writing-mode. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-046.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-046.html new file mode 100644 index 00000000000..c2eee20a4e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-046.html @@ -0,0 +1,13 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-047.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-047.html new file mode 100644 index 00000000000..1f47cb1b6dc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-047.html @@ -0,0 +1,13 @@ + + + Single-line column flex fragmentation: auto margin end alignment. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-048.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-048.html new file mode 100644 index 00000000000..bb1725665ce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-048.html @@ -0,0 +1,14 @@ + + + Single-line column flex fragmentation: auto margin center alignment. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-049.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-049.html new file mode 100644 index 00000000000..888fb2bb91e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-049.html @@ -0,0 +1,16 @@ + + + Single-line column flex fragmentation: flex property and item expansion. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-050.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-050.html new file mode 100644 index 00000000000..ae683e938c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-050.html @@ -0,0 +1,16 @@ + + + Tests that a flex-item with an indefinite flex-basis expands if the + container height is auto. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-051.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-051.html new file mode 100644 index 00000000000..9fc2a6e4426 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-051.html @@ -0,0 +1,16 @@ + + + Tests that a flex-item with a definite flex-basis *doesn't* expand. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-052.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-052.html new file mode 100644 index 00000000000..faa0d130555 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-052.html @@ -0,0 +1,15 @@ + + + Tests that a flex-item with an definite flex-basis but an indefinite height expands. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-053.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-053.html new file mode 100644 index 00000000000..524870e4fc9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-053.html @@ -0,0 +1,18 @@ + + + Tests that a flex-item that can't shrink and has a definite flex-basis, an + indefinite height, and a non-auto min-height *doesn't* expand. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-054.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-054.html new file mode 100644 index 00000000000..60c130ed39f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-054.html @@ -0,0 +1,16 @@ + + + Tests that a flex-item with an definite flex-basis, an indefinite height, and + a non-auto min-height does expand. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-055.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-055.html new file mode 100644 index 00000000000..2958e6167ab --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-055.html @@ -0,0 +1,16 @@ + + + Tests that a flex-item with an definite flex-basis, an indefinite height, and + can't shrink does expand. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-056.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-056.html new file mode 100644 index 00000000000..87091a423a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-056.html @@ -0,0 +1,18 @@ + + + Tests that the margin-bottom of the last flex item is taken into account + when fragmenting. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-057.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-057.html new file mode 100644 index 00000000000..9261477e7dc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-057.html @@ -0,0 +1,17 @@ + + + Tests that the margin-bottom of the last flex item is taken into account + when fragmenting with expansion. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-058.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-058.html new file mode 100644 index 00000000000..ec00e47436b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-058.html @@ -0,0 +1,16 @@ + + + Tests that the margin-bottom of the last flex item is taken into account + when fragmenting. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-008.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-008.html index 562cb61fa5d..dfade0ff4b9 100644 --- a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-008.html +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-008.html @@ -1,6 +1,7 @@ - Tests that a flex-item with a fixed block-size container grows due to fragmentation. + Tests that a flex-item with a fixed block-size container *doesn't* grow due to fragmentation + if stretched. @@ -12,4 +13,5 @@
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-009.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-009.html index b51c7883a64..8dbaa6925fa 100644 --- a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-009.html +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-009.html @@ -8,7 +8,7 @@

    Test passes if there is a filled green square and no red.

    -
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-014.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-014.html new file mode 100644 index 00000000000..00f9afa701b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-014.html @@ -0,0 +1,24 @@ + + + Single-line row flex fragmentation with break-inside: avoid. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-015.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-015.html new file mode 100644 index 00000000000..6cb5ce0a311 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-015.html @@ -0,0 +1,23 @@ + + + Single-line row flex fragmentation: break-before values on the first row + are propagated to the flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-016.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-016.html new file mode 100644 index 00000000000..343dbc45d11 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-016.html @@ -0,0 +1,23 @@ + + + Single-line row flex fragmentation: break-after values on the last row + are propagated to the flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-017.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-017.html new file mode 100644 index 00000000000..0c0cd4ac2b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-017.html @@ -0,0 +1,25 @@ + + + Single-line row flex fragmentation: break-before values on the first row + are propagated to the nested flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-018.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-018.html new file mode 100644 index 00000000000..9e62460cb24 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-018.html @@ -0,0 +1,24 @@ + + + Single-line row flex fragmentation: break-after values on the last row + are propagated to the nested flex container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-019.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-019.html new file mode 100644 index 00000000000..149338a7e18 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-019.html @@ -0,0 +1,26 @@ + + + Single-line row flex fragmentation: break-before:avoid on the first + row is propagated to the container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-020.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-020.html new file mode 100644 index 00000000000..3fe75a4e431 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-020.html @@ -0,0 +1,26 @@ + + + Single-line row flex fragmentation: break-after:avoid on the last + row is propagated to the container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-021.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-021.html new file mode 100644 index 00000000000..d4e29dd8156 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-021.html @@ -0,0 +1,20 @@ + + + Single-line row flex fragmentation: If the fragmentainer is out of space + but the flexbox and flex row have zero block-size, not additional + fragmentainers should be created to hold this content. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-022.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-022.html new file mode 100644 index 00000000000..4d64641e4c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-022.html @@ -0,0 +1,19 @@ + + + Single-line row flex fragmentation: If the fragmentainer is out of space + but a flex row should break before if it has content. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-023.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-023.html new file mode 100644 index 00000000000..d344e91f540 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-023.html @@ -0,0 +1,26 @@ + + + Single-line row flex fragmentation: Tall margins. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-024.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-024.html new file mode 100644 index 00000000000..7e5e3f206b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-024.html @@ -0,0 +1,26 @@ + + + Single-line row flex fragmentation: Tall margins with forced break. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-025.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-025.html new file mode 100644 index 00000000000..dd753039c1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-025.html @@ -0,0 +1,23 @@ + + + Single-line row flex fragmentation: Negative margins. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-026.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-026.html new file mode 100644 index 00000000000..9a78bf503b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-026.html @@ -0,0 +1,14 @@ + + + Single-line row flex fragmentation: Percentage height decendant. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-027-ref.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-027-ref.html new file mode 100644 index 00000000000..e1079de13fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-027-ref.html @@ -0,0 +1,11 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-027.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-027.html new file mode 100644 index 00000000000..85550f18a4a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-027.html @@ -0,0 +1,15 @@ + + + Single-line row flex fragmentation: row-reverse. + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-028.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-028.html new file mode 100644 index 00000000000..4d0b5e52cd3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-028.html @@ -0,0 +1,27 @@ + + + Single-line row flex fragmentation: OOF static position and alignment. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-029.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-029.html new file mode 100644 index 00000000000..5d7e72ddf00 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-029.html @@ -0,0 +1,27 @@ + + + Single-line row flex fragmentation: Row expansion, stretching and column balancing. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-030.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-030.html new file mode 100644 index 00000000000..a70ad1473ea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-030.html @@ -0,0 +1,22 @@ + + + Single-line row flex fragmentation: If the fragmentainer is out of space + but a flex row should break before if it has content w/ vertical + writing-mode. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-031.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-031.html new file mode 100644 index 00000000000..1bda683312e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-031.html @@ -0,0 +1,30 @@ + + + Single-line row flex fragmentation: OOF static position and alignment + w/ vertical writing-mode. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-032.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-032.html new file mode 100644 index 00000000000..5cdafeb15cc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-032.html @@ -0,0 +1,13 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-033.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-033.html new file mode 100644 index 00000000000..8d3d8f002ed --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-033.html @@ -0,0 +1,29 @@ + + + Single-line row flex fragmentation: OOF static position and alignment. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-034.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-034.html new file mode 100644 index 00000000000..a274219ed9e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-034.html @@ -0,0 +1,32 @@ + + + Single-line row flex fragmentation: baseline alignment. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-035.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-035.html new file mode 100644 index 00000000000..77313e67d49 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-035.html @@ -0,0 +1,13 @@ + + + Single-line row flex fragmentation: auto margin end alignment. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-036.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-036.html new file mode 100644 index 00000000000..5881e058bce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-036.html @@ -0,0 +1,14 @@ + + + Single-line row flex fragmentation: auto margin center alignment. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-037.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-037.html new file mode 100644 index 00000000000..c7895af92a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-037.html @@ -0,0 +1,15 @@ + + + Single-line row flex fragmentation: the container gets pushed to next fragmentainer + if content doesn't fit in the current fragmentainer. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-038.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-038.html new file mode 100644 index 00000000000..d9ea2acc4c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-038.html @@ -0,0 +1,18 @@ + + + Tests that the margin-bottom of the last flex item is taken into account + when fragmenting. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-039.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-039.html new file mode 100644 index 00000000000..5c3a039d473 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-039.html @@ -0,0 +1,19 @@ + + + Tests that the margin-bottom of the last flex item is taken into account + when fragmenting with expansion. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-040.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-040.html new file mode 100644 index 00000000000..90d86129640 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-040.html @@ -0,0 +1,17 @@ + + + Tests that the margin-bottom of the last flex item extending beyond the fragmentainer + size. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-041.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-041.html new file mode 100644 index 00000000000..112e963a225 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-row-flex-fragmentation-041.html @@ -0,0 +1,20 @@ + + + Tests that the margin-bottom of the last flex item is taken into account + when fragmenting with expansion and a stretched item. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/slider-in-multicol-crash.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/slider-in-multicol-crash.html new file mode 100644 index 00000000000..8cc2ec62421 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/slider-in-multicol-crash.html @@ -0,0 +1,7 @@ + + +

    PASS if no crash or DCHECK failure.

    +
    + x + +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/float-005.html b/tests/wpt/web-platform-tests/css/css-break/float-005.html new file mode 100644 index 00000000000..ae515e20638 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-005.html @@ -0,0 +1,10 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/float-006.html b/tests/wpt/web-platform-tests/css/css-break/float-006.html new file mode 100644 index 00000000000..28be2dcc28d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-006.html @@ -0,0 +1,10 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/float-007.html b/tests/wpt/web-platform-tests/css/css-break/float-007.html new file mode 100644 index 00000000000..10fc1217fc8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-007.html @@ -0,0 +1,10 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/float-008.html b/tests/wpt/web-platform-tests/css/css-break/float-008.html new file mode 100644 index 00000000000..8685bf925d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-008.html @@ -0,0 +1,10 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/float-009-ref.html b/tests/wpt/web-platform-tests/css/css-break/float-009-ref.html new file mode 100644 index 00000000000..9e117c49c2b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-009-ref.html @@ -0,0 +1,20 @@ + + + + + + + + +
    +
    AX
    +
    BX
    +
    CX
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/float-009.html b/tests/wpt/web-platform-tests/css/css-break/float-009.html new file mode 100644 index 00000000000..8f76c75bd88 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-009.html @@ -0,0 +1,23 @@ + + + + + + + + + + + +
    +
    A
    X
    +
    B
    X
    +
    C
    X
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/float-010.html b/tests/wpt/web-platform-tests/css/css-break/float-010.html new file mode 100644 index 00000000000..68eef4a6d26 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-010.html @@ -0,0 +1,16 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/float-011-crash.html b/tests/wpt/web-platform-tests/css/css-break/float-011-crash.html new file mode 100644 index 00000000000..5838050a83c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-011-crash.html @@ -0,0 +1,11 @@ + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/float-012.html b/tests/wpt/web-platform-tests/css/css-break/float-012.html new file mode 100644 index 00000000000..6896817443d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-012.html @@ -0,0 +1,18 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/float-after-self-collapsing-block-in-inline-crash.html b/tests/wpt/web-platform-tests/css/css-break/float-after-self-collapsing-block-in-inline-crash.html new file mode 100644 index 00000000000..1ab512748ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-after-self-collapsing-block-in-inline-crash.html @@ -0,0 +1,10 @@ + + + +
    + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-001-print-ref.html b/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-001-print-ref.html new file mode 100644 index 00000000000..dd78a266f42 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-001-print-ref.html @@ -0,0 +1,23 @@ + + + + + + + + + +
    + +
    +
    +
    + +TEXT diff --git a/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-001-print.html b/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-001-print.html new file mode 100644 index 00000000000..cd1026faf64 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-001-print.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + +
    + +
    +
    + +
    +TEXT diff --git a/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-002-print-ref.html b/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-002-print-ref.html new file mode 100644 index 00000000000..cb1701418d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-002-print-ref.html @@ -0,0 +1,18 @@ + + + + + + + + +
    + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-002-print.html b/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-002-print.html new file mode 100644 index 00000000000..e2c6b7711ae --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/float-with-large-margin-bottom-cross-page-002-print.html @@ -0,0 +1,22 @@ + + + + + + + + + + + +
    + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/floated-multicol-in-multicol-crash.html b/tests/wpt/web-platform-tests/css/css-break/floated-multicol-in-multicol-crash.html new file mode 100644 index 00000000000..ba4ae29b12a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/floated-multicol-in-multicol-crash.html @@ -0,0 +1,11 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/fragmented-autowidth-fc-root-beside-floats-ref.html b/tests/wpt/web-platform-tests/css/css-break/fragmented-autowidth-fc-root-beside-floats-ref.html new file mode 100644 index 00000000000..5effc82452d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/fragmented-autowidth-fc-root-beside-floats-ref.html @@ -0,0 +1,30 @@ + + + +

    There should be (from left to right) a hotpink square, a thin hotpink + rectangle, then a wider hotpink rectangle.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/fragmented-autowidth-fc-root-beside-floats.html b/tests/wpt/web-platform-tests/css/css-break/fragmented-autowidth-fc-root-beside-floats.html new file mode 100644 index 00000000000..348019aaf09 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/fragmented-autowidth-fc-root-beside-floats.html @@ -0,0 +1,11 @@ + + + + +

    There should be (from left to right) a hotpink square, a thin hotpink + rectangle, then a wider hotpink rectangle.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/fragmented-float-overflowing-container.html b/tests/wpt/web-platform-tests/css/css-break/fragmented-float-overflowing-container.html new file mode 100644 index 00000000000..789c30bce73 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/fragmented-float-overflowing-container.html @@ -0,0 +1,12 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/fragmented-oof-in-inline-crash.html b/tests/wpt/web-platform-tests/css/css-break/fragmented-oof-in-inline-crash.html new file mode 100644 index 00000000000..8428f324178 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/fragmented-oof-in-inline-crash.html @@ -0,0 +1,13 @@ + + +
    + +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-container-fragmentation-010.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-container-fragmentation-010.html new file mode 100644 index 00000000000..d3e87d062b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-container-fragmentation-010.html @@ -0,0 +1,13 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-container-fragmentation-011.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-container-fragmentation-011.html new file mode 100644 index 00000000000..8615244bf5b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-container-fragmentation-011.html @@ -0,0 +1,13 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-008.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-008.html new file mode 100644 index 00000000000..b9caacc4af2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-008.html @@ -0,0 +1,10 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-009.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-009.html new file mode 100644 index 00000000000..dc095fd4eee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-009.html @@ -0,0 +1,13 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-040.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-040.html new file mode 100644 index 00000000000..8733073741a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-040.html @@ -0,0 +1,15 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-041.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-041.html new file mode 100644 index 00000000000..f26c7265539 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-041.html @@ -0,0 +1,12 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-042.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-042.html new file mode 100644 index 00000000000..67e2d405205 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-042.html @@ -0,0 +1,17 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-043.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-043.html new file mode 100644 index 00000000000..7a4ddc54e21 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-043.html @@ -0,0 +1,14 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-044.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-044.html new file mode 100644 index 00000000000..8c028479bc8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-044.html @@ -0,0 +1,14 @@ + + + +Tests that break precedence for a grid row is correctly calculated. +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-045.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-045.html new file mode 100644 index 00000000000..e4010b421ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-045.html @@ -0,0 +1,17 @@ + + + +Tests that break precedence for a grid row is correctly calculated. +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-046.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-046.html new file mode 100644 index 00000000000..ffdc94efba3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-046.html @@ -0,0 +1,15 @@ + + + +Tests that break precedence for a grid row is correctly calculated. +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-047.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-047.html new file mode 100644 index 00000000000..ac6d137cb27 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-047.html @@ -0,0 +1,15 @@ + + + +Tests that break precedence for a grid row is correctly calculated. +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-048.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-048.html new file mode 100644 index 00000000000..5eed6b9184b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-fragmentation-048.html @@ -0,0 +1,16 @@ + + + +Tests that break precedence for a grid row is correctly calculated. +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-infinite-expansion.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-infinite-expansion.html new file mode 100644 index 00000000000..ec27d0cc3f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-infinite-expansion.html @@ -0,0 +1,12 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-001.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-001.html new file mode 100644 index 00000000000..e94889228a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-001.html @@ -0,0 +1,11 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-002.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-002.html new file mode 100644 index 00000000000..b1ced43ab80 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-002.html @@ -0,0 +1,10 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-003.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-003.html new file mode 100644 index 00000000000..59235f9245d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-003.html @@ -0,0 +1,11 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-004.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-004.html new file mode 100644 index 00000000000..f73d91a1927 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-004.html @@ -0,0 +1,11 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-005.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-005.html new file mode 100644 index 00000000000..3536b30a96e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-005.html @@ -0,0 +1,15 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-006.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-006.html new file mode 100644 index 00000000000..63a14e5cff8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-006.html @@ -0,0 +1,12 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-007.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-007.html new file mode 100644 index 00000000000..6802973edb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-007.html @@ -0,0 +1,16 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-008.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-008.html new file mode 100644 index 00000000000..a8ef5622a3b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-008.html @@ -0,0 +1,10 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-009.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-009.html new file mode 100644 index 00000000000..6b50367b160 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-009.html @@ -0,0 +1,13 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-010.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-010.html new file mode 100644 index 00000000000..9b12550e6b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-010.html @@ -0,0 +1,19 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-011.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-011.html new file mode 100644 index 00000000000..81bf627587f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-011.html @@ -0,0 +1,11 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-crash.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-crash.html new file mode 100644 index 00000000000..fae587dc8e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-oof-crash.html @@ -0,0 +1,7 @@ + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-large-end-border-crash.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-large-end-border-crash.html new file mode 100644 index 00000000000..d2705f04f44 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-large-end-border-crash.html @@ -0,0 +1,7 @@ + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-nested-columns-crash.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-nested-columns-crash.html new file mode 100644 index 00000000000..8b636ae7fa4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-nested-columns-crash.html @@ -0,0 +1,11 @@ + + + + +
    a
    +
    + content diff --git a/tests/wpt/web-platform-tests/css/css-break/hit-test-hidden-overflow.html b/tests/wpt/web-platform-tests/css/css-break/hit-test-hidden-overflow.html new file mode 100644 index 00000000000..ec766e09484 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/hit-test-hidden-overflow.html @@ -0,0 +1,23 @@ + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-break/hit-test-transformed-inline.html b/tests/wpt/web-platform-tests/css/css-break/hit-test-transformed-inline.html new file mode 100644 index 00000000000..239b2b23956 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/hit-test-transformed-inline.html @@ -0,0 +1,43 @@ + + + + + +
    + + xx
    + xx +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-break/line-and-fragmentainer-break-before-float-crash.html b/tests/wpt/web-platform-tests/css/css-break/line-and-fragmentainer-break-before-float-crash.html new file mode 100644 index 00000000000..14bce6b80c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/line-and-fragmentainer-break-before-float-crash.html @@ -0,0 +1,11 @@ + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/max-height-with-margin-pushed-below-fragmentation-line-crash.html b/tests/wpt/web-platform-tests/css/css-break/max-height-with-margin-pushed-below-fragmentation-line-crash.html new file mode 100644 index 00000000000..a1b3139bd53 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/max-height-with-margin-pushed-below-fragmentation-line-crash.html @@ -0,0 +1,8 @@ + + + +
    +
    +


    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/monolithic-content-with-forced-break-001.html b/tests/wpt/web-platform-tests/css/css-break/monolithic-content-with-forced-break-001.html new file mode 100644 index 00000000000..75b676d0ba0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/monolithic-content-with-forced-break-001.html @@ -0,0 +1,10 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/monolithic-content-with-forced-break-002.html b/tests/wpt/web-platform-tests/css/css-break/monolithic-content-with-forced-break-002.html new file mode 100644 index 00000000000..1df3078aa1a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/monolithic-content-with-forced-break-002.html @@ -0,0 +1,10 @@ + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/monolithic-content-with-forced-break-003.html b/tests/wpt/web-platform-tests/css/css-break/monolithic-content-with-forced-break-003.html new file mode 100644 index 00000000000..deabd8fde26 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/monolithic-content-with-forced-break-003.html @@ -0,0 +1,10 @@ + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/nested-fixedpos-in-inline-crash-000.html b/tests/wpt/web-platform-tests/css/css-break/nested-fixedpos-in-inline-crash-000.html new file mode 100644 index 00000000000..8d1d395e35c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/nested-fixedpos-in-inline-crash-000.html @@ -0,0 +1,13 @@ + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/nested-fixedpos-in-inline-crash-001.html b/tests/wpt/web-platform-tests/css/css-break/nested-fixedpos-in-inline-crash-001.html new file mode 100644 index 00000000000..dc4e8fba67f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/nested-fixedpos-in-inline-crash-001.html @@ -0,0 +1,13 @@ + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/nested-fixedpos-in-inline-crash-002.html b/tests/wpt/web-platform-tests/css/css-break/nested-fixedpos-in-inline-crash-002.html new file mode 100644 index 00000000000..15a5a963326 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/nested-fixedpos-in-inline-crash-002.html @@ -0,0 +1,15 @@ + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/nested-float-in-multicol-crash.html b/tests/wpt/web-platform-tests/css/css-break/nested-float-in-multicol-crash.html new file mode 100644 index 00000000000..6878d384e54 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/nested-float-in-multicol-crash.html @@ -0,0 +1,20 @@ + + + +
    +
    + text +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-004.html b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-004.html new file mode 100644 index 00000000000..5db9163398a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-004.html @@ -0,0 +1,14 @@ + + +

    PASS if no crash or DCHECK failure.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-005.html b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-005.html new file mode 100644 index 00000000000..f7b56c1c985 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-005.html @@ -0,0 +1,16 @@ + + +

    PASS if no crash or DCHECK failure.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-006.html b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-006.html new file mode 100644 index 00000000000..b969f925d3f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-006.html @@ -0,0 +1,14 @@ + + +

    PASS if no crash or DCHECK failure.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-007.html b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-007.html new file mode 100644 index 00000000000..861aac2bc3d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-007.html @@ -0,0 +1,13 @@ + + +

    PASS if no crash or DCHECK failure.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-008.html b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-008.html new file mode 100644 index 00000000000..a8d0f3e77ea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanner-and-oof-crash-008.html @@ -0,0 +1,15 @@ + + +

    PASS if no crash or DCHECK failure.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanners-and-oofs-crash.html b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanners-and-oofs-crash.html new file mode 100644 index 00000000000..d2e8ebb6219 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/nested-multicol-with-spanners-and-oofs-crash.html @@ -0,0 +1,19 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/offset-top-block-in-inline.html b/tests/wpt/web-platform-tests/css/css-break/offset-top-block-in-inline.html new file mode 100644 index 00000000000..72b35087e42 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/offset-top-block-in-inline.html @@ -0,0 +1,16 @@ + + + +
    + +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-inline-with-negative-offset-crash.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-inline-with-negative-offset-crash.html new file mode 100644 index 00000000000..1b589092925 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-inline-with-negative-offset-crash.html @@ -0,0 +1,11 @@ + + +
    +
    +
    + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-082.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-082.html new file mode 100644 index 00000000000..64080738706 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-082.html @@ -0,0 +1,14 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-083.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-083.html new file mode 100644 index 00000000000..d238720ad0c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-083.html @@ -0,0 +1,13 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-084.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-084.html new file mode 100644 index 00000000000..d3fef2ee2ba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-084.html @@ -0,0 +1,12 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-085.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-085.html new file mode 100644 index 00000000000..eb8314c2d86 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-085.html @@ -0,0 +1,43 @@ + + + Nested fixedpos static position in a multicol with inline container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-086.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-086.html new file mode 100644 index 00000000000..17073077e21 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-086.html @@ -0,0 +1,44 @@ + + + Nested fixedpos in multicol with inline container. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-087.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-087.html new file mode 100644 index 00000000000..bd1c941f870 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-087.html @@ -0,0 +1,53 @@ + + + + Nested fixedpos static position in a nested multicol with inline container + in outer multicol. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-088.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-088.html new file mode 100644 index 00000000000..9adffb15d48 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-088.html @@ -0,0 +1,52 @@ + + + Nested fixedpos in a nested multicol with inline container in outer multicol. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-089.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-089.html new file mode 100644 index 00000000000..a13aad886d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-089.html @@ -0,0 +1,43 @@ + + + Nested fixedpos in a multicol with same inline container as its abspos + parent. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-090.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-090.html new file mode 100644 index 00000000000..e6cf192dd35 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-090.html @@ -0,0 +1,44 @@ + + + Nested fixedpos in inline should be affected by relative positioned offset. + + + + +

    Test passes if there is a filled green square and no red.

    +
    + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-091.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-091.html new file mode 100644 index 00000000000..4049412545c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-091.html @@ -0,0 +1,38 @@ + + + Nested fixedpos in a where the multicol is the containing block. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-092.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-092.html new file mode 100644 index 00000000000..b21bbee6eaa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-092.html @@ -0,0 +1,46 @@ + + + Nested fixedpos in a nested fragmentation context where the outer + multicol is the containing block. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-093-ref.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-093-ref.html new file mode 100644 index 00000000000..a2fdde0cd91 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-093-ref.html @@ -0,0 +1,10 @@ + + +

    There should be a bullet to the left of the word "Bullet".

    +
      +
    • Bullet
    • +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-093.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-093.html new file mode 100644 index 00000000000..7cd94c10b38 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-093.html @@ -0,0 +1,13 @@ + + + + +

    There should be a bullet to the left of the word "Bullet".

    +
      +
    • Bullet
    • +
    • Bullet
    • +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-094.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-094.html new file mode 100644 index 00000000000..1cb04aefea0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-094.html @@ -0,0 +1,16 @@ + + + OOFs and column balancing. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-095.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-095.html new file mode 100644 index 00000000000..3811791d096 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-095.html @@ -0,0 +1,18 @@ + + + OOFs and column balancing. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-096.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-096.html new file mode 100644 index 00000000000..f5382d6d3d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-096.html @@ -0,0 +1,18 @@ + + + OOFs and nested column balancing. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-097.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-097.html new file mode 100644 index 00000000000..faac60705b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-097.html @@ -0,0 +1,18 @@ + + + OOFs and column balancing with a spanner. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-098.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-098.html new file mode 100644 index 00000000000..390e86995d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-098.html @@ -0,0 +1,18 @@ + + + OOFs and column balancing with a spanner and the CB breaks across the spanner. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-099.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-099.html new file mode 100644 index 00000000000..8c75b2bf5db --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-099.html @@ -0,0 +1,15 @@ + + + OOFs and column balancing with a nested break-inside:avoid. + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-nested-spanner-multicol-crash.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-nested-spanner-multicol-crash.html new file mode 100644 index 00000000000..8c8e3eefad3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-nested-spanner-multicol-crash.html @@ -0,0 +1,11 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-new-column-crash.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-new-column-crash.html new file mode 100644 index 00000000000..0571af7a979 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-new-column-crash.html @@ -0,0 +1,10 @@ + + +
    +
    +
    +
    +
    x
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-with-negative-offset-crash.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-with-negative-offset-crash.html new file mode 100644 index 00000000000..202b33f813b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-with-negative-offset-crash.html @@ -0,0 +1,13 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/overflow-auto-height-with-bottom-padding-crash.html b/tests/wpt/web-platform-tests/css/css-break/overflow-auto-height-with-bottom-padding-crash.html new file mode 100644 index 00000000000..e25c8e3f2c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/overflow-auto-height-with-bottom-padding-crash.html @@ -0,0 +1,10 @@ + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/overflow-clip-013.html b/tests/wpt/web-platform-tests/css/css-break/overflow-clip-013.html new file mode 100644 index 00000000000..31137b58fbc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/overflow-clip-013.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/parallel-flow-trailing-margin-001.html b/tests/wpt/web-platform-tests/css/css-break/parallel-flow-trailing-margin-001.html new file mode 100644 index 00000000000..a6391cd9d47 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/parallel-flow-trailing-margin-001.html @@ -0,0 +1,12 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/parallel-flow-trailing-margin-002.html b/tests/wpt/web-platform-tests/css/css-break/parallel-flow-trailing-margin-002.html new file mode 100644 index 00000000000..a308ede37dc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/parallel-flow-trailing-margin-002.html @@ -0,0 +1,12 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/parallel-flow-trailing-margin-003-crash.html b/tests/wpt/web-platform-tests/css/css-break/parallel-flow-trailing-margin-003-crash.html new file mode 100644 index 00000000000..899683d792d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/parallel-flow-trailing-margin-003-crash.html @@ -0,0 +1,11 @@ + + + + +
    +
    +
    +

    +
    +

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/svg-with-transform.html b/tests/wpt/web-platform-tests/css/css-break/svg-with-transform.html new file mode 100644 index 00000000000..3aa7facf2d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/svg-with-transform.html @@ -0,0 +1,11 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/border-spacing-at-breaks.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/border-spacing-at-breaks.tentative.html new file mode 100644 index 00000000000..67588f28b02 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/border-spacing-at-breaks.tentative.html @@ -0,0 +1,22 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/border-spacing.html b/tests/wpt/web-platform-tests/css/css-break/table/border-spacing.html new file mode 100644 index 00000000000..fc5e87e35dd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/border-spacing.html @@ -0,0 +1,34 @@ + + + + +

    No red should be seen below.

    +
    +
    +
    +
    1
    +
    2
    +
    3
    +
    4
    +
    5
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-break/table/bottom-padding-repeated-header-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/bottom-padding-repeated-header-crash.html new file mode 100644 index 00000000000..e9c567d3b6d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/bottom-padding-repeated-header-crash.html @@ -0,0 +1,9 @@ + + + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-after-table-cell-child.html b/tests/wpt/web-platform-tests/css/css-break/table/break-after-table-cell-child.html new file mode 100644 index 00000000000..60e09248923 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-after-table-cell-child.html @@ -0,0 +1,13 @@ + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-after-table-cell.html b/tests/wpt/web-platform-tests/css/css-break/table/break-after-table-cell.html new file mode 100644 index 00000000000..8f7e1ba1f30 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-after-table-cell.html @@ -0,0 +1,11 @@ + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-001.html b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-001.html new file mode 100644 index 00000000000..6dc765c82a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-001.html @@ -0,0 +1,16 @@ + + + +

    Test passes if there is a filled green square and no red.

    + +
    + + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-002.html b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-002.html new file mode 100644 index 00000000000..25c4496e92d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-002.html @@ -0,0 +1,20 @@ + + + +

    Test passes if there is a filled green square and no red.

    + +
    + + + + + + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-003.html b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-003.html new file mode 100644 index 00000000000..e09eaccfa42 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-003.html @@ -0,0 +1,15 @@ + + + +

    Test passes if there is a filled green square and no red.

    + +
    + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-004.html b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-004.html new file mode 100644 index 00000000000..e8eb516fec6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-004.html @@ -0,0 +1,16 @@ + + + +

    Test passes if there is a filled green square and no red.

    + +
    + + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-005.html b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-005.html new file mode 100644 index 00000000000..a9d53e24558 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-005.html @@ -0,0 +1,20 @@ + + + +

    Test passes if there is a filled green square and no red.

    + +
    + + + + + + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-006.html b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-006.html new file mode 100644 index 00000000000..b8dc0f41442 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-006.html @@ -0,0 +1,15 @@ + + + +

    Test passes if there is a filled green square and no red.

    + +
    + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-007.html b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-007.html new file mode 100644 index 00000000000..4429edb2c88 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-007.html @@ -0,0 +1,16 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-in-table-in-grid.html b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-in-table-in-grid.html new file mode 100644 index 00000000000..6250ea7e6d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-avoidance-in-table-in-grid.html @@ -0,0 +1,20 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-before-expansion-001.html b/tests/wpt/web-platform-tests/css/css-break/table/break-before-expansion-001.html new file mode 100644 index 00000000000..1f10eb59f52 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-before-expansion-001.html @@ -0,0 +1,14 @@ + + + +

    Test passes if there is a filled green square and no red.

    + +
    + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-before-expansion-002.html b/tests/wpt/web-platform-tests/css/css-break/table/break-before-expansion-002.html new file mode 100644 index 00000000000..6c413caa7ee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-before-expansion-002.html @@ -0,0 +1,14 @@ + + + +

    Test passes if there is a filled green square and no red.

    + +
    + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-before-repeated-footer-instead-of-border-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/break-before-repeated-footer-instead-of-border-crash.html new file mode 100644 index 00000000000..b277001f4d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-before-repeated-footer-instead-of-border-crash.html @@ -0,0 +1,10 @@ + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-before-second-row.html b/tests/wpt/web-platform-tests/css/css-break/table/break-before-second-row.html new file mode 100644 index 00000000000..3a8d307aa50 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-before-second-row.html @@ -0,0 +1,19 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-before-table-cell-child.html b/tests/wpt/web-platform-tests/css/css-break/table/break-before-table-cell-child.html new file mode 100644 index 00000000000..3f07edf9ae9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-before-table-cell-child.html @@ -0,0 +1,13 @@ + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-before-table-cell.html b/tests/wpt/web-platform-tests/css/css-break/table/break-before-table-cell.html new file mode 100644 index 00000000000..1d50080f760 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-before-table-cell.html @@ -0,0 +1,11 @@ + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-inside-cell-000.html b/tests/wpt/web-platform-tests/css/css-break/table/break-inside-cell-000.html new file mode 100644 index 00000000000..2982eed1e86 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-inside-cell-000.html @@ -0,0 +1,24 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/break-inside-cell-001.html b/tests/wpt/web-platform-tests/css/css-break/table/break-inside-cell-001.html new file mode 100644 index 00000000000..cd55f468899 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/break-inside-cell-001.html @@ -0,0 +1,32 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/caption-bottom-margin-at-boundary-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/caption-bottom-margin-at-boundary-crash.html new file mode 100644 index 00000000000..edca6635675 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/caption-bottom-margin-at-boundary-crash.html @@ -0,0 +1,8 @@ + + + +
    +
    +

    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-001.html b/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-001.html new file mode 100644 index 00000000000..cb2746ef158 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-001.html @@ -0,0 +1,14 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-002.html b/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-002.html new file mode 100644 index 00000000000..3bb06bde1dc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-002.html @@ -0,0 +1,16 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-003.html b/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-003.html new file mode 100644 index 00000000000..e591c9e058e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-003.html @@ -0,0 +1,11 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-004.html b/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-004.html new file mode 100644 index 00000000000..5c70c70728c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/caption-margin-004.html @@ -0,0 +1,11 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/dynamic-caption-child-change-001.html b/tests/wpt/web-platform-tests/css/css-break/table/dynamic-caption-child-change-001.html new file mode 100644 index 00000000000..c57f4120166 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/dynamic-caption-child-change-001.html @@ -0,0 +1,19 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    + +
    +
    +
    +   +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/table/dynamic-caption-child-change-002-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/dynamic-caption-child-change-002-crash.html new file mode 100644 index 00000000000..983f8bb95bb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/dynamic-caption-child-change-002-crash.html @@ -0,0 +1,18 @@ + + + +
    +
    + +
    +
    +
    +
    + x +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/table/final-border-spacing-at-fragmentainer-boundary.html b/tests/wpt/web-platform-tests/css/css-break/table/final-border-spacing-at-fragmentainer-boundary.html new file mode 100644 index 00000000000..2e0540d7458 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/final-border-spacing-at-fragmentainer-boundary.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/overflow-scroll-row.html b/tests/wpt/web-platform-tests/css/css-break/table/overflow-scroll-row.html new file mode 100644 index 00000000000..8ed379e5dd2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/overflow-scroll-row.html @@ -0,0 +1,15 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/overflow-scroll-section.html b/tests/wpt/web-platform-tests/css/css-break/table/overflow-scroll-section.html new file mode 100644 index 00000000000..62b3071ae96 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/overflow-scroll-section.html @@ -0,0 +1,15 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-in-monolithic.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-in-monolithic.tentative.html new file mode 100644 index 00000000000..6ec70d030d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-in-monolithic.tentative.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-uncontained-text-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-uncontained-text-ref.html new file mode 100644 index 00000000000..a7c2eeb5b8e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-uncontained-text-ref.html @@ -0,0 +1,4 @@ + + +

    The word PASS should be seen once below.

    +PASS diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-uncontained-text.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-uncontained-text.html new file mode 100644 index 00000000000..e0485816bfa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-uncontained-text.html @@ -0,0 +1,15 @@ + + + + +

    The word PASS should be seen once below.

    +
    +
    +
    +
    +
    PASS
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-uncontained.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-uncontained.tentative.html new file mode 100644 index 00000000000..d8b84ce72e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos-uncontained.tentative.html @@ -0,0 +1,14 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos.tentative.html new file mode 100644 index 00000000000..a7297f1dd55 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/abspos.tentative.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/balanced-inner-multicol-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/balanced-inner-multicol-ref.html new file mode 100644 index 00000000000..ab2dcebc415 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/balanced-inner-multicol-ref.html @@ -0,0 +1,23 @@ + + +

    There should be 6 small blue squares below.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/balanced-inner-multicol.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/balanced-inner-multicol.html new file mode 100644 index 00000000000..78340661eda --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/balanced-inner-multicol.html @@ -0,0 +1,15 @@ + + + + +

    There should be 6 small blue squares below.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/block-in-inline.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/block-in-inline.tentative.html new file mode 100644 index 00000000000..1a94c697f15 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/block-in-inline.tentative.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-001-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-001-crash.html new file mode 100644 index 00000000000..dc87e5dd4fa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-001-crash.html @@ -0,0 +1,9 @@ + + + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-002-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-002-crash.html new file mode 100644 index 00000000000..778c1c61c16 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-002-crash.html @@ -0,0 +1,11 @@ + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-003-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-003-crash.html new file mode 100644 index 00000000000..ce7a13282b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-003-crash.html @@ -0,0 +1,9 @@ + + + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/break-avoidance-in-bottom-caption.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/break-avoidance-in-bottom-caption.tentative.html new file mode 100644 index 00000000000..fe676fd0c11 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/break-avoidance-in-bottom-caption.tentative.html @@ -0,0 +1,28 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/captions.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/captions.tentative.html new file mode 100644 index 00000000000..1f28d56802c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/captions.tentative.html @@ -0,0 +1,18 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/footer.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/footer.tentative.html new file mode 100644 index 00000000000..8789ef2915f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/footer.tentative.html @@ -0,0 +1,13 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/header-after-break.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/header-after-break.tentative.html new file mode 100644 index 00000000000..6a5abc011fa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/header-after-break.tentative.html @@ -0,0 +1,24 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/header-footer.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/header-footer.tentative.html new file mode 100644 index 00000000000..7a1e956a8da --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/header-footer.tentative.html @@ -0,0 +1,16 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/header.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/header.tentative.html new file mode 100644 index 00000000000..6f4ad01097e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/header.tentative.html @@ -0,0 +1,13 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/hit-test-relative-in-transform.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/hit-test-relative-in-transform.tentative.html new file mode 100644 index 00000000000..43a36f1853c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/hit-test-relative-in-transform.tentative.html @@ -0,0 +1,29 @@ + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/hit-test-relative.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/hit-test-relative.tentative.html new file mode 100644 index 00000000000..348bb0dbc48 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/hit-test-relative.tentative.html @@ -0,0 +1,27 @@ + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/hit-test.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/hit-test.tentative.html new file mode 100644 index 00000000000..9b462887c3f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/hit-test.tentative.html @@ -0,0 +1,26 @@ + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/image.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/image.tentative.html new file mode 100644 index 00000000000..72fea010d0e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/image.tentative.html @@ -0,0 +1,38 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/inline-block.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/inline-block.tentative.html new file mode 100644 index 00000000000..6dee47e3757 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/inline-block.tentative.html @@ -0,0 +1,13 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/multicol.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/multicol.tentative.html new file mode 100644 index 00000000000..6dcd51bfe3e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/multicol.tentative.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/multiple-row-groups.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/multiple-row-groups.tentative.html new file mode 100644 index 00000000000..96e6173249c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/multiple-row-groups.tentative.html @@ -0,0 +1,24 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/nested-repeated-header-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/nested-repeated-header-crash.html new file mode 100644 index 00000000000..1dffcf821a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/nested-repeated-header-crash.html @@ -0,0 +1,33 @@ + + + +

    PASS if no freeze.

    +
    + + + + + + + + +
    +
    + + + + + + + + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-header-border-spacing.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-header-border-spacing.tentative.html new file mode 100644 index 00000000000..7471c342a90 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-header-border-spacing.tentative.html @@ -0,0 +1,19 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/special-elements-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/special-elements-crash.html new file mode 100644 index 00000000000..469e53460ef --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/special-elements-crash.html @@ -0,0 +1,105 @@ + + + + +
    +
    +
    + + + + + + + + + + + +
    +
    +
    + + + + + + + + + + +
    epic
    + + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/tall-monolithic-after-repeated-header.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/tall-monolithic-after-repeated-header.tentative.html new file mode 100644 index 00000000000..8ded5f5f17e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/tall-monolithic-after-repeated-header.tentative.html @@ -0,0 +1,17 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001-ref.html new file mode 100644 index 00000000000..bea1ace1c37 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001-ref.html @@ -0,0 +1,17 @@ + + +

    There should be three blue squares and three hotpink ones.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001.html new file mode 100644 index 00000000000..f75a8cf216e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001.html @@ -0,0 +1,20 @@ + + + + +

    There should be three blue squares and three hotpink ones.

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002-ref.html new file mode 100644 index 00000000000..b457b1f7ac8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002-ref.html @@ -0,0 +1,12 @@ + + +

    There should be one blue square and one hotpink one.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002.html new file mode 100644 index 00000000000..c3aceac5aea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002.html @@ -0,0 +1,21 @@ + + + + +

    There should be one blue square and one hotpink one.

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-003-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-003-crash.html new file mode 100644 index 00000000000..90834c806b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-003-crash.html @@ -0,0 +1,23 @@ + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-004-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-004-crash.html new file mode 100644 index 00000000000..9c4699da93f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-004-crash.html @@ -0,0 +1,22 @@ + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-005-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-005-crash.html new file mode 100644 index 00000000000..b17d0cc8100 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-005-crash.html @@ -0,0 +1,22 @@ + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-006-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-006-crash.html new file mode 100644 index 00000000000..1345c6eca8d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/variable-fragmentainer-size-006-crash.html @@ -0,0 +1,22 @@ + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/section-with-overflow-000.html b/tests/wpt/web-platform-tests/css/css-break/table/section-with-overflow-000.html new file mode 100644 index 00000000000..909052765b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/section-with-overflow-000.html @@ -0,0 +1,24 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/section-with-overflow-001.html b/tests/wpt/web-platform-tests/css/css-break/table/section-with-overflow-001.html new file mode 100644 index 00000000000..665f5247ad2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/section-with-overflow-001.html @@ -0,0 +1,22 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/section-with-overflow-002.html b/tests/wpt/web-platform-tests/css/css-break/table/section-with-overflow-002.html new file mode 100644 index 00000000000..c6c63abe0e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/section-with-overflow-002.html @@ -0,0 +1,41 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/sections-and-captions-mixed-order-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/sections-and-captions-mixed-order-ref.html new file mode 100644 index 00000000000..b3265c92c6a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/sections-and-captions-mixed-order-ref.html @@ -0,0 +1,42 @@ + + + +

    There should be four columns with the numbers from 1 to 20 in ascending + order. No red should be seen.

    +
    +
    + 1
    + 2
    + 3
    + 4
    + 5
    +
    +
    + 6
    + 7
    + 8
    + 9
    + 10
    +
    +
    + 11
    + 12
    + 13
    + 14
    + 15
    +
    +
    + 16
    + 17
    + 18
    + 19
    + 20
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/sections-and-captions-mixed-order.html b/tests/wpt/web-platform-tests/css/css-break/table/sections-and-captions-mixed-order.html new file mode 100644 index 00000000000..67d20e3a464 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/sections-and-captions-mixed-order.html @@ -0,0 +1,25 @@ + + + + + + +

    There should be four columns with the numbers from 1 to 20 in ascending + order. No red should be seen.

    +
    +
    +
    14
    +
    1
    +
    8
    9
    10
    11
    12
    13
    +
    4
    +
    5
    6
    +
    7
    +
    3
    +
    15
    16
    17
    18
    19
    20
    +
    2
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-001.html b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-001.html new file mode 100644 index 00000000000..ad235534be4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-001.html @@ -0,0 +1,10 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-002.html b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-002.html new file mode 100644 index 00000000000..9605abe343f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-002.html @@ -0,0 +1,9 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-003.html b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-003.html new file mode 100644 index 00000000000..694ef40e3ef --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-003.html @@ -0,0 +1,10 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-004.html b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-004.html new file mode 100644 index 00000000000..ca436aba67d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-004.html @@ -0,0 +1,10 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-005.html b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-005.html new file mode 100644 index 00000000000..b1528509def --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-005.html @@ -0,0 +1,11 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-006.html b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-006.html new file mode 100644 index 00000000000..a78af3faf59 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-006.html @@ -0,0 +1,11 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-007-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-007-ref.html new file mode 100644 index 00000000000..28fcfd0a351 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-007-ref.html @@ -0,0 +1,8 @@ + + +

    There should be four columns. The first one should be yellow, the three + others should be cyan. No red should be seen.

    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-007.html b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-007.html new file mode 100644 index 00000000000..f342e2a8fad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-007.html @@ -0,0 +1,16 @@ + + + + +

    There should be four columns. The first one should be yellow, the three + others should be cyan. No red should be seen.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-008.html b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-008.html new file mode 100644 index 00000000000..6b4cd116374 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/specified-block-size-008.html @@ -0,0 +1,10 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-border-000.html b/tests/wpt/web-platform-tests/css/css-break/table/table-border-000.html new file mode 100644 index 00000000000..1ec0efa2990 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-border-000.html @@ -0,0 +1,10 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-border-001.html b/tests/wpt/web-platform-tests/css/css-break/table/table-border-001.html new file mode 100644 index 00000000000..97e4ba8dafc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-border-001.html @@ -0,0 +1,20 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-border-002.html b/tests/wpt/web-platform-tests/css/css-break/table/table-border-002.html new file mode 100644 index 00000000000..16c2a50395c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-border-002.html @@ -0,0 +1,18 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-border-003.html b/tests/wpt/web-platform-tests/css/css-break/table/table-border-003.html new file mode 100644 index 00000000000..26b01599ad9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-border-003.html @@ -0,0 +1,18 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-border-004.html b/tests/wpt/web-platform-tests/css/css-break/table/table-border-004.html new file mode 100644 index 00000000000..ed8314f1d29 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-border-004.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-border-005.html b/tests/wpt/web-platform-tests/css/css-break/table/table-border-005.html new file mode 100644 index 00000000000..3f8efe9d0aa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-border-005.html @@ -0,0 +1,17 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-border-006.html b/tests/wpt/web-platform-tests/css/css-break/table/table-border-006.html new file mode 100644 index 00000000000..f0ebf25c08e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-border-006.html @@ -0,0 +1,17 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-border-007-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-border-007-ref.html new file mode 100644 index 00000000000..6f994082e20 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-border-007-ref.html @@ -0,0 +1,6 @@ + + +

    There should be a pink table with a black border. The table should be split + into two columns.

    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-border-007.html b/tests/wpt/web-platform-tests/css/css-break/table/table-border-007.html new file mode 100644 index 00000000000..66363cd0aef --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-border-007.html @@ -0,0 +1,9 @@ + + + + +

    There should be a pink table with a black border. The table should be split + into two columns.

    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-border-008-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-border-008-ref.html new file mode 100644 index 00000000000..01253d3026e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-border-008-ref.html @@ -0,0 +1,15 @@ + + + +

    There should be a pink table box with a black border. The table box should be + split into three columns.

    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-border-008.html b/tests/wpt/web-platform-tests/css/css-break/table/table-border-008.html new file mode 100644 index 00000000000..6140df16749 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-border-008.html @@ -0,0 +1,12 @@ + + + + +

    There should be a pink table box with a black border. The table box should be + split into three columns.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells-fixed-width-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells-fixed-width-ref.html new file mode 100644 index 00000000000..c41a4a515a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells-fixed-width-ref.html @@ -0,0 +1,7 @@ + +

    Check that a table caption at a column boundary is properly pushed to the next column.

    +

    The word "PASS" should be seen below, fully visible and unbroken.

    +
    + PASS
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells-fixed-width.html b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells-fixed-width.html new file mode 100644 index 00000000000..11984c3ea3f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells-fixed-width.html @@ -0,0 +1,14 @@ + + + +

    Check that a table caption at a column boundary is properly pushed to the next column.

    +

    The word "PASS" should be seen below, fully visible and unbroken.

    +
    +
    + + + + + +
    PASS
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells-ref.html new file mode 100644 index 00000000000..1ca93e64f7f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells-ref.html @@ -0,0 +1,7 @@ + +

    Check that a table caption at a column boundary is properly pushed to the next column.

    +

    The word "PASS" should be seen below, fully visible and unbroken.

    +
    + PASS
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells.html b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells.html new file mode 100644 index 00000000000..365786f49ef --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-and-cells.html @@ -0,0 +1,14 @@ + + + +

    Check that a table caption at a column boundary is properly pushed to the next column.

    +

    The word "PASS" should be seen below, fully visible and unbroken.

    +
    +
    + + + + + +
    PASS
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-caption-with-block-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-with-block-ref.html new file mode 100644 index 00000000000..ca210636a94 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-with-block-ref.html @@ -0,0 +1,6 @@ + +

    Check that a table caption with a block at a column boundary is properly pushed to the next column.

    +

    The word "PASS" should be seen below, fully visible and unbroken.

    +
    + PASS +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-caption-with-block.html b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-with-block.html new file mode 100644 index 00000000000..1d3aa3317eb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-caption-with-block.html @@ -0,0 +1,13 @@ + + + +

    Check that a table caption with a block at a column boundary is properly pushed to the next column.

    +

    The word "PASS" should be seen below, fully visible and unbroken.

    +
    +
    + + +
    +
    PASS
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-001.html b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-001.html new file mode 100644 index 00000000000..b10d516787a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-001.html @@ -0,0 +1,10 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-002.html b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-002.html new file mode 100644 index 00000000000..6df44aa7636 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-002.html @@ -0,0 +1,9 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-003.html b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-003.html new file mode 100644 index 00000000000..32e12012ac8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-003.html @@ -0,0 +1,12 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-004.html b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-004.html new file mode 100644 index 00000000000..2390e218c9e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-004.html @@ -0,0 +1,21 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + + + + + + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-005.html b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-005.html new file mode 100644 index 00000000000..23fcc73e166 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-005.html @@ -0,0 +1,21 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + + + + + + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-006.html b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-006.html new file mode 100644 index 00000000000..10286647745 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-006.html @@ -0,0 +1,11 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    + + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-007.html b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-007.html new file mode 100644 index 00000000000..bafe31200d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-007.html @@ -0,0 +1,14 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    + + + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-008.html b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-008.html new file mode 100644 index 00000000000..7e4cf169700 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-008.html @@ -0,0 +1,23 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-009.html b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-009.html new file mode 100644 index 00000000000..ec34d0b7072 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-009.html @@ -0,0 +1,23 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-010.html b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-010.html new file mode 100644 index 00000000000..0e6b849c9b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-cell-expansion-010.html @@ -0,0 +1,25 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-htb-ltr-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-htb-ltr-ref.html new file mode 100644 index 00000000000..df7b50c84e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-htb-ltr-ref.html @@ -0,0 +1,25 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-htb-ltr.html b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-htb-ltr.html new file mode 100644 index 00000000000..ea066d13544 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-htb-ltr.html @@ -0,0 +1,35 @@ + + + + + +
    + + + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vlr-rtl-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vlr-rtl-ref.html new file mode 100644 index 00000000000..4c005072498 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vlr-rtl-ref.html @@ -0,0 +1,29 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vlr-rtl.html b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vlr-rtl.html new file mode 100644 index 00000000000..ab45d314042 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vlr-rtl.html @@ -0,0 +1,39 @@ + + + + + +
    + + + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vrl-rtl-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vrl-rtl-ref.html new file mode 100644 index 00000000000..0fde8bacc51 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vrl-rtl-ref.html @@ -0,0 +1,29 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vrl-rtl.html b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vrl-rtl.html new file mode 100644 index 00000000000..e31d1d4dc60 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-col-paint-vrl-rtl.html @@ -0,0 +1,39 @@ + + + + + +
    + + + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-at-boundary-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-at-boundary-ref.html new file mode 100644 index 00000000000..04d643437fe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-at-boundary-ref.html @@ -0,0 +1,22 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-at-boundary.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-at-boundary.tentative.html new file mode 100644 index 00000000000..0227b571a24 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-at-boundary.tentative.html @@ -0,0 +1,39 @@ + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr-ref.html new file mode 100644 index 00000000000..1841ff58212 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr-ref.html @@ -0,0 +1,19 @@ + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr.html b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr.html new file mode 100644 index 00000000000..60e146296b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr.html @@ -0,0 +1,36 @@ + + + + + +
    + + + + + + + + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl-ref.html new file mode 100644 index 00000000000..e17497a2702 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl-ref.html @@ -0,0 +1,23 @@ + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl.html b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl.html new file mode 100644 index 00000000000..d03968ec4d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl.html @@ -0,0 +1,40 @@ + + + + + +
    + + + + + + + + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr-ref.html new file mode 100644 index 00000000000..2721bc0af0b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr-ref.html @@ -0,0 +1,22 @@ + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr.html b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr.html new file mode 100644 index 00000000000..6dff501fec7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr.html @@ -0,0 +1,39 @@ + + + + + +
    + + + + + + + + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-htb-ltr-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-htb-ltr-ref.html new file mode 100644 index 00000000000..5830aa5fd51 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-htb-ltr-ref.html @@ -0,0 +1,18 @@ + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-htb-ltr.html b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-htb-ltr.html new file mode 100644 index 00000000000..e2be9ce16c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-htb-ltr.html @@ -0,0 +1,23 @@ + + + + + +
    + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vlr-rtl-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vlr-rtl-ref.html new file mode 100644 index 00000000000..5f069ea0536 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vlr-rtl-ref.html @@ -0,0 +1,22 @@ + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vlr-rtl.html b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vlr-rtl.html new file mode 100644 index 00000000000..b26363056be --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vlr-rtl.html @@ -0,0 +1,27 @@ + + + + + +
    + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vrl-rtl-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vrl-rtl-ref.html new file mode 100644 index 00000000000..2080a4e4501 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vrl-rtl-ref.html @@ -0,0 +1,22 @@ + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vrl-rtl.html b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vrl-rtl.html new file mode 100644 index 00000000000..0d83c6c402a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-grid-paint-vrl-rtl.html @@ -0,0 +1,27 @@ + + + + + +
    + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-in-abspos-multicol-with-nested-meter-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/table-in-abspos-multicol-with-nested-meter-crash.html new file mode 100644 index 00000000000..363324b225b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-in-abspos-multicol-with-nested-meter-crash.html @@ -0,0 +1,10 @@ + + +

    PASS if no crash or DCHECK failure.

    +
    + + +
    + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsetheight.html b/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsetheight.html new file mode 100644 index 00000000000..5bdc33b521a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsetheight.html @@ -0,0 +1,29 @@ + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-row-end-border-1-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/table-row-end-border-1-crash.html new file mode 100644 index 00000000000..3947dbdadaa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-row-end-border-1-crash.html @@ -0,0 +1,11 @@ + + +
    + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-row-end-border-2-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/table-row-end-border-2-crash.html new file mode 100644 index 00000000000..e5c37cbdcf6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-row-end-border-2-crash.html @@ -0,0 +1,11 @@ + + +
    + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-row-end-padding-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/table-row-end-padding-crash.html new file mode 100644 index 00000000000..2fd7feb15de --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-row-end-padding-crash.html @@ -0,0 +1,11 @@ + + +
    + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-htb-ltr-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-htb-ltr-ref.html new file mode 100644 index 00000000000..74e99b0143a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-htb-ltr-ref.html @@ -0,0 +1,22 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-htb-ltr.html b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-htb-ltr.html new file mode 100644 index 00000000000..ecc156bd38b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-htb-ltr.html @@ -0,0 +1,30 @@ + + + + + +
    + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vlr-rtl-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vlr-rtl-ref.html new file mode 100644 index 00000000000..587b6c1ee44 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vlr-rtl-ref.html @@ -0,0 +1,26 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vlr-rtl.html b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vlr-rtl.html new file mode 100644 index 00000000000..f3d32c9df66 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vlr-rtl.html @@ -0,0 +1,34 @@ + + + + + +
    + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vrl-rtl-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vrl-rtl-ref.html new file mode 100644 index 00000000000..ea81d9bcff8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vrl-rtl-ref.html @@ -0,0 +1,26 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vrl-rtl.html b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vrl-rtl.html new file mode 100644 index 00000000000..a74a952b4b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-row-paint-vrl-rtl.html @@ -0,0 +1,34 @@ + + + + + +
    + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-htb-ltr-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-htb-ltr-ref.html new file mode 100644 index 00000000000..75b2078c146 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-htb-ltr-ref.html @@ -0,0 +1,22 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-htb-ltr.html b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-htb-ltr.html new file mode 100644 index 00000000000..ff0eda1be83 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-htb-ltr.html @@ -0,0 +1,32 @@ + + + + + +
    + + + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vlr-rtl-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vlr-rtl-ref.html new file mode 100644 index 00000000000..a2e65520ec6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vlr-rtl-ref.html @@ -0,0 +1,26 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vlr-rtl.html b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vlr-rtl.html new file mode 100644 index 00000000000..1dbdb212ace --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vlr-rtl.html @@ -0,0 +1,36 @@ + + + + + +
    + + + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vrl-rtl-ref.html b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vrl-rtl-ref.html new file mode 100644 index 00000000000..bc860a560ff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vrl-rtl-ref.html @@ -0,0 +1,26 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vrl-rtl.html b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vrl-rtl.html new file mode 100644 index 00000000000..d079c35818e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-section-paint-vrl-rtl.html @@ -0,0 +1,36 @@ + + + + + +
    + + + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/tall-bottom-aligned-cell-with-bottom-padding.html b/tests/wpt/web-platform-tests/css/css-break/table/tall-bottom-aligned-cell-with-bottom-padding.html new file mode 100644 index 00000000000..1e7ff9b12e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/tall-bottom-aligned-cell-with-bottom-padding.html @@ -0,0 +1,14 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/table/truncated-border-spacing-at-fragmentainer-end.html b/tests/wpt/web-platform-tests/css/css-break/table/truncated-border-spacing-at-fragmentainer-end.html new file mode 100644 index 00000000000..0a93b642754 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/truncated-border-spacing-at-fragmentainer-end.html @@ -0,0 +1,14 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/table/zero-height-repeated-footer-crash.html b/tests/wpt/web-platform-tests/css/css-break/table/zero-height-repeated-footer-crash.html new file mode 100644 index 00000000000..4feca8344b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/zero-height-repeated-footer-crash.html @@ -0,0 +1,10 @@ + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-003.tentative.html b/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-003.tentative.html index bc20950dac2..78148780a94 100644 --- a/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-003.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-003.tentative.html @@ -8,7 +8,7 @@
    -
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-004.tentative.html b/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-004.tentative.html index 567d4ccf3bc..c44a65841cd 100644 --- a/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-004.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-004.tentative.html @@ -7,7 +7,7 @@
    -
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-005.tentative.html b/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-005.tentative.html new file mode 100644 index 00000000000..6e834e78dae --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-005.tentative.html @@ -0,0 +1,20 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-006.tentative.html b/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-006.tentative.html new file mode 100644 index 00000000000..f907e38a2a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/tall-content-inside-constrained-block-006.tentative.html @@ -0,0 +1,20 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-break/truncated-margin-at-fragmentainer-end-001.html b/tests/wpt/web-platform-tests/css/css-break/truncated-margin-at-fragmentainer-end-001.html new file mode 100644 index 00000000000..cfb8590f902 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/truncated-margin-at-fragmentainer-end-001.html @@ -0,0 +1,14 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-break/truncated-margin-at-fragmentainer-end-002.html b/tests/wpt/web-platform-tests/css/css-break/truncated-margin-at-fragmentainer-end-002.html new file mode 100644 index 00000000000..1539927dc26 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/truncated-margin-at-fragmentainer-end-002.html @@ -0,0 +1,15 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/all-prop-revert-layer-noop.html b/tests/wpt/web-platform-tests/css/css-cascade/all-prop-revert-layer-noop.html new file mode 100644 index 00000000000..66aa2b9c736 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/all-prop-revert-layer-noop.html @@ -0,0 +1,55 @@ + + +CSS Cascade: "all: revert-layer" + + + + + + +
    +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/all-prop-revert-layer.html b/tests/wpt/web-platform-tests/css/css-cascade/all-prop-revert-layer.html new file mode 100644 index 00000000000..b031e76c1a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/all-prop-revert-layer.html @@ -0,0 +1,457 @@ + + +CSS Cascade: "all: revert-layer" + + + + + +
    + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/all-prop-revert-noop.html b/tests/wpt/web-platform-tests/css/css-cascade/all-prop-revert-noop.html new file mode 100644 index 00000000000..d70fa53022e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/all-prop-revert-noop.html @@ -0,0 +1,54 @@ + + +CSS Cascade: "all: revert" + + + + + + + +
    +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/at-scope-parsing.html b/tests/wpt/web-platform-tests/css/css-cascade/at-scope-parsing.html new file mode 100644 index 00000000000..13fe94fe897 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/at-scope-parsing.html @@ -0,0 +1,58 @@ + +@scope: parsing + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/import-conditions.html b/tests/wpt/web-platform-tests/css/css-cascade/import-conditions.html new file mode 100644 index 00000000000..d4a0918a5b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/import-conditions.html @@ -0,0 +1,56 @@ + +CSS Cascade Test: import conditions + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/import-removal.html b/tests/wpt/web-platform-tests/css/css-cascade/import-removal.html new file mode 100644 index 00000000000..6fb1ea34581 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/import-removal.html @@ -0,0 +1,18 @@ + + + + + + + + +

    Test passes if there is a filled green square.

    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/important-vs-inline-001.html b/tests/wpt/web-platform-tests/css/css-cascade/important-vs-inline-001.html new file mode 100644 index 00000000000..33b33bf9438 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/important-vs-inline-001.html @@ -0,0 +1,40 @@ + + + + + CSS Cascade: inline style loses to !important + + + + + + + +

    Test passes if this text is semi-transparent.

    + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/important-vs-inline-002.html b/tests/wpt/web-platform-tests/css/css-cascade/important-vs-inline-002.html new file mode 100644 index 00000000000..e16aedc5bb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/important-vs-inline-002.html @@ -0,0 +1,42 @@ + + + + + CSS Cascade: inline style loses to !important + + + + + + + +

    Test passes if the line-height is twice the font size.

    + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/important-vs-inline-003.html b/tests/wpt/web-platform-tests/css/css-cascade/important-vs-inline-003.html new file mode 100644 index 00000000000..b1103abbf22 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/important-vs-inline-003.html @@ -0,0 +1,27 @@ + + + + + CSS Cascade: inline style loses to !important + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/layer-cssom-order-reverse-at-property.html b/tests/wpt/web-platform-tests/css/css-cascade/layer-cssom-order-reverse-at-property.html new file mode 100644 index 00000000000..dfa6bbfcfbd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/layer-cssom-order-reverse-at-property.html @@ -0,0 +1,94 @@ + +CSS Cascade Layers: @property rule invalidation on layer order changes + + + + + + + +
    Lorem ipsum
    +
    Lorem ipsum
    + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/layer-cssom-order-reverse.html b/tests/wpt/web-platform-tests/css/css-cascade/layer-cssom-order-reverse.html index 0bc05c2142a..ddc5977d42c 100644 --- a/tests/wpt/web-platform-tests/css/css-cascade/layer-cssom-order-reverse.html +++ b/tests/wpt/web-platform-tests/css/css-cascade/layer-cssom-order-reverse.html @@ -10,7 +10,6 @@ color: green; font: 20px/1 ahem; width: max-content; - --foo: green; } @@ -113,58 +112,6 @@ const testCases = [ }, property: 'width', }, - { - title: 'Insert layer invalidates @property', - sheets: [ - '', - ` - @layer first { - @property --foo { - syntax: ''; - inherits: false; - initial-value: green; - } - } - @layer second { - @property --foo { - syntax: ''; - inherits: false; - initial-value: red; - } - } - `, - ], - update: function(sheets) { - sheets[0].insertRule('@layer second {}', 0); - }, - property: '--foo', - }, - { - title: 'Delete layer invalidates @property', - sheets: [ - '@layer second {}', - ` - @layer first { - @property --foo { - syntax: ''; - inherits: false; - initial-value: red; - } - } - @layer second { - @property --foo { - syntax: ''; - inherits: false; - initial-value: green; - } - } - `, - ], - update: function(sheets) { - sheets[0].deleteRule(0); - }, - property: '--foo', - }, ]; for (let testCase of testCases) { diff --git a/tests/wpt/web-platform-tests/css/css-cascade/layer-important.html b/tests/wpt/web-platform-tests/css/css-cascade/layer-important.html new file mode 100644 index 00000000000..23bfd167fd2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/layer-important.html @@ -0,0 +1,107 @@ + + + +CSS Cascade Layers: !important + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/layer-media-toggle.html b/tests/wpt/web-platform-tests/css/css-cascade/layer-media-toggle.html new file mode 100644 index 00000000000..83a037a2bda --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/layer-media-toggle.html @@ -0,0 +1,30 @@ + +CSS Cascade Layers: Tests against a Chrome bug that modifying a sheet affects existing layers + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/layer-replaceSync-clears-stale.html b/tests/wpt/web-platform-tests/css/css-cascade/layer-replaceSync-clears-stale.html new file mode 100644 index 00000000000..c9d88681bd2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/layer-replaceSync-clears-stale.html @@ -0,0 +1,56 @@ + +CSS Cascade Layers: CSSStyleSheet.replaceSync clears stale statements + + + + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/layer-rules-cssom.html b/tests/wpt/web-platform-tests/css/css-cascade/layer-rules-cssom.html index 3e0b613a9fd..b81960df6f6 100644 --- a/tests/wpt/web-platform-tests/css/css-cascade/layer-rules-cssom.html +++ b/tests/wpt/web-platform-tests/css/css-cascade/layer-rules-cssom.html @@ -74,14 +74,25 @@ const testCases = [ ]; for (let testCase of testCases) { - const style = document.createElement('style'); - style.appendChild(document.createTextNode(testCase.style)); - document.head.appendChild(style); - - test(function () { + promise_test(async function (t) { assert_implements(window.CSSLayerBlockRule); assert_implements(window.CSSLayerStatementRule); + const style = document.createElement('style'); + t.add_cleanup(() => style.remove()); + + const isLoadAsync = testCase.style.includes("@import"); + const load = new Promise(resolve => { + style.addEventListener("load", resolve, { once: true }); + }); + + style.appendChild(document.createTextNode(testCase.style)); + document.head.appendChild(style); + + if (isLoadAsync) { + await load; + } + let index = 0; function compareNames(ruleOrSheet) { if (ruleOrSheet instanceof CSSLayerBlockRule) @@ -98,7 +109,5 @@ for (let testCase of testCases) { compareNames(style.sheet); assert_equals(index, testCase.expectedNames.length); }, testCase.title); - - style.remove(); } diff --git a/tests/wpt/web-platform-tests/css/css-cascade/layer-scroll-timeline-override.html b/tests/wpt/web-platform-tests/css/css-cascade/layer-scroll-timeline-override.html deleted file mode 100644 index 59b8590b5f1..00000000000 --- a/tests/wpt/web-platform-tests/css/css-cascade/layer-scroll-timeline-override.html +++ /dev/null @@ -1,183 +0,0 @@ - -Resolving @scroll-timeline name conflicts with cascade layers - - - - - - - -
    -
    -
    -
    -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-cascade/layer-statement-before-import.html b/tests/wpt/web-platform-tests/css/css-cascade/layer-statement-before-import.html index 7d099368d86..fcde9605325 100644 --- a/tests/wpt/web-platform-tests/css/css-cascade/layer-statement-before-import.html +++ b/tests/wpt/web-platform-tests/css/css-cascade/layer-statement-before-import.html @@ -130,29 +130,6 @@ const testCases = [ sheet.deleteRule(4); } }, - { - title: 'replaceSync clears stale layer statements', - style: ` - @layer second, first; - @layer second { - #target { color: green; } - } - @layer first { - #target { color: red; } - } - `, - operations: function(sheet) { - sheet.replaceSync(` - @layer first { - #target { color: red; } - } - @layer second { - #target { color: green; } - } - `); - }, - constructedStyleSheet: true - } ]; const target = document.getElementById('target'); @@ -160,30 +137,20 @@ const reference = document.getElementById('reference'); for (let testCase of testCases) { promise_test(async t => { - let styleElement; - let sheet; - if (!testCase.constructedStyleSheet) { - styleElement = document.createElement('style'); - styleElement.textContent = testCase.style; - await new Promise(resolve => { - styleElement.onload = resolve; - styleElement.onerror = resolve; - document.head.append(styleElement); - }); - sheet = styleElement.sheet; - } else { - sheet = new CSSStyleSheet(); - sheet.replaceSync(testCase.style); - document.adoptedStyleSheets = [sheet]; - } + let styleElement = document.createElement('style'); + styleElement.textContent = testCase.style; + await new Promise(resolve => { + styleElement.onload = resolve; + styleElement.onerror = resolve; + document.head.append(styleElement); + }); + let sheet = styleElement.sheet; try { testCase.operations(sheet); assert_equals(getComputedStyle(target).color, getComputedStyle(reference).color); } finally { - if (styleElement) - styleElement.remove(); - document.adoptedStyleSheets = []; + styleElement.remove(); } }, testCase.title); } diff --git a/tests/wpt/web-platform-tests/css/css-cascade/layer-statement-copy-crash.html b/tests/wpt/web-platform-tests/css/css-cascade/layer-statement-copy-crash.html new file mode 100644 index 00000000000..f183ab30ab7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/layer-statement-copy-crash.html @@ -0,0 +1,10 @@ + +Chromium bug: Crash when copying layer statement rule from memory cache + + + + + + +

    Test passes if it does not crash.

    + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/presentational-hints-rollback.html b/tests/wpt/web-platform-tests/css/css-cascade/presentational-hints-rollback.html new file mode 100644 index 00000000000..8178daf60c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/presentational-hints-rollback.html @@ -0,0 +1,125 @@ + + +CSS Cascade: rolling back the cascade with presentation hints + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-013.html b/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-013.html new file mode 100644 index 00000000000..862ee72746b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-013.html @@ -0,0 +1,28 @@ + +CSS Cascade Layers: 'revert-layer' to host context + + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-014.html b/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-014.html new file mode 100644 index 00000000000..6b968625628 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-014.html @@ -0,0 +1,29 @@ + +CSS Cascade Layers: 'revert-layer' in slotted context + + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-015-ref.html b/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-015-ref.html new file mode 100644 index 00000000000..661016619c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-015-ref.html @@ -0,0 +1,5 @@ + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-015.html b/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-015.html new file mode 100644 index 00000000000..a60f5d78f5e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/revert-layer-015.html @@ -0,0 +1,14 @@ + +CSS Cascade Layers: 'revert-layer' with shadow pseudo-element + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/revert-val-011.html b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-011.html new file mode 100644 index 00000000000..9c034084c5b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-011.html @@ -0,0 +1,35 @@ + + + + + CSS Cascade: 'revert' from mutating inline style + + + + + + + +

    Test passes if the text is black (not red).

    + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/scope-deep.html b/tests/wpt/web-platform-tests/css/css-cascade/scope-deep.html new file mode 100644 index 00000000000..e7dd96c5ac7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/scope-deep.html @@ -0,0 +1,52 @@ + +@scope - deeply nested + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/scope-evaluation.html b/tests/wpt/web-platform-tests/css/css-cascade/scope-evaluation.html new file mode 100644 index 00000000000..bd20712c7f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/scope-evaluation.html @@ -0,0 +1,402 @@ + +@scope - evaluation + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/scope-invalidation.html b/tests/wpt/web-platform-tests/css/css-cascade/scope-invalidation.html new file mode 100644 index 00000000000..6f8abfd79c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/scope-invalidation.html @@ -0,0 +1,171 @@ + +@scope - invalidation + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/scope-proximity.html b/tests/wpt/web-platform-tests/css/css-cascade/scope-proximity.html new file mode 100644 index 00000000000..c133a71e9a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/scope-proximity.html @@ -0,0 +1,123 @@ + +@scope - proximity to root + + + + + +
    +
    + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-cascade/scope-specificity.html b/tests/wpt/web-platform-tests/css/css-cascade/scope-specificity.html new file mode 100644 index 00000000000..b39ce9e7b96 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-cascade/scope-specificity.html @@ -0,0 +1,38 @@ + +@scope - added specificty + + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/parsing/color-scheme-invalid.html b/tests/wpt/web-platform-tests/css/css-color-adjust/parsing/color-scheme-invalid.html index 89c17e32466..e2eb0098dca 100644 --- a/tests/wpt/web-platform-tests/css/css-color-adjust/parsing/color-scheme-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/parsing/color-scheme-invalid.html @@ -14,6 +14,7 @@ test_invalid_value("color-scheme", "light initial"); test_invalid_value("color-scheme", "light unset"); test_invalid_value("color-scheme", "light revert"); + test_invalid_value("color-scheme", "light revert-layer"); test_invalid_value("color-scheme", "default"); test_invalid_value("color-scheme", "light default"); test_invalid_value("color-scheme", "only"); diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-mismatch-used-preferred-ref.html b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-mismatch-used-preferred-ref.html new file mode 100644 index 00000000000..4eb06f35fd2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-mismatch-used-preferred-ref.html @@ -0,0 +1,3 @@ + +CSS Test Reference +
    diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-mismatch-used-preferred.html b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-mismatch-used-preferred.html new file mode 100644 index 00000000000..fb774c35642 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-mismatch-used-preferred.html @@ -0,0 +1,9 @@ + + +Used (not preferred) color-scheme is used for iframe backplate decisions + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/prefers-color-scheme-blue-purple.html b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/prefers-color-scheme-blue-purple.html new file mode 100644 index 00000000000..99d687b47f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/support/prefers-color-scheme-blue-purple.html @@ -0,0 +1,7 @@ + + diff --git a/tests/wpt/web-platform-tests/css/css-color/animation/color-interpolation.html b/tests/wpt/web-platform-tests/css/css-color/animation/color-interpolation.html index 4b39fdcf796..7bda888a0b4 100644 --- a/tests/wpt/web-platform-tests/css/css-color/animation/color-interpolation.html +++ b/tests/wpt/web-platform-tests/css/css-color/animation/color-interpolation.html @@ -91,4 +91,43 @@ test_interpolation({ {at: 1, expect: 'rgb(255, 165, 0)'}, {at: 1.5, expect: 'rgb(255, 248, 0)'}, ]); + +test_interpolation({ + property: 'color', + from: 'rgb(0 0 0)', + to: 'color(srgb 1 1 1)', +}, [ + {at: -0.3, expect: 'oklab(0 0 0)'}, + {at: 0, expect: 'oklab(0 0 0)'}, + {at: 0.3, expect: 'oklab(0.3 0 0)'}, + {at: 0.6, expect: 'oklab(0.6 0 0)'}, + {at: 1, expect: 'oklab(1 0 0)'}, + {at: 1.5, expect: 'oklab(1.5 0 0)'}, +]); + +test_interpolation({ + property: 'color', + from: 'color(srgb 0 0 0)', + to: 'rgb(255 255 255)', +}, [ + {at: -0.3, expect: 'oklab(0 0 0)'}, + {at: 0, expect: 'oklab(0 0 0)'}, + {at: 0.3, expect: 'oklab(0.3 0 0)'}, + {at: 0.6, expect: 'oklab(0.6 0 0)'}, + {at: 1, expect: 'oklab(1 0 0)'}, + {at: 1.5, expect: 'oklab(1.5 0 0)'}, +]); + +test_interpolation({ + property: 'color', + from: 'color(srgb 0 0 0)', + to: 'color(srgb 1 1 1)', +}, [ + {at: -0.3, expect: 'oklab(0 0 0)'}, + {at: 0, expect: 'oklab(0 0 0)'}, + {at: 0.3, expect: 'oklab(0.3 0 0)'}, + {at: 0.6, expect: 'oklab(0.6 0 0)'}, + {at: 1, expect: 'oklab(1 0 0)'}, + {at: 1.5, expect: 'oklab(1.5 0 0)'}, +]); diff --git a/tests/wpt/web-platform-tests/css/css-color/animation/opacity-animation-ending-correctly-001-ref.html b/tests/wpt/web-platform-tests/css/css-color/animation/opacity-animation-ending-correctly-001-ref.html new file mode 100644 index 00000000000..ca55dc66f30 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/animation/opacity-animation-ending-correctly-001-ref.html @@ -0,0 +1,24 @@ + + +CSS Test Reference (Color): ending of opacity animation + + + + + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-color/animation/opacity-animation-ending-correctly-001.html b/tests/wpt/web-platform-tests/css/css-color/animation/opacity-animation-ending-correctly-001.html new file mode 100644 index 00000000000..1fb36cd366f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/animation/opacity-animation-ending-correctly-001.html @@ -0,0 +1,48 @@ + + +CSS Test (Color): ending of opacity animation + + + + + + + + +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-color/animation/opacity-animation-ending-correctly-002.html b/tests/wpt/web-platform-tests/css/css-color/animation/opacity-animation-ending-correctly-002.html new file mode 100644 index 00000000000..7ba097fb105 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/animation/opacity-animation-ending-correctly-002.html @@ -0,0 +1,50 @@ + + +CSS Test (Color): ending of opacity animation + + + + + + + + +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-color/canvas-change-opacity.html b/tests/wpt/web-platform-tests/css/css-color/canvas-change-opacity.html new file mode 100644 index 00000000000..1c1ea718bfd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/canvas-change-opacity.html @@ -0,0 +1,20 @@ + + + + + + + +

    Test passes if you see a green square, and no red.

    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/color-function-parsing.html b/tests/wpt/web-platform-tests/css/css-color/color-function-parsing.html deleted file mode 100644 index ae891e25e4b..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/color-function-parsing.html +++ /dev/null @@ -1,51 +0,0 @@ - - -CSS Color 4: color() parsing - - - - -
    - diff --git a/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-001-ref.html b/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-001-ref.html new file mode 100644 index 00000000000..ba9b8b9622f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-001-ref.html @@ -0,0 +1,11 @@ + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-001.html b/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-001.html new file mode 100644 index 00000000000..0f502d22ec8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-001.html @@ -0,0 +1,23 @@ + + + +currentColor is inherited correctly in color-mix() + + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-002-ref.html b/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-002-ref.html new file mode 100644 index 00000000000..64e60fbf291 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-002-ref.html @@ -0,0 +1,11 @@ + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-002.html b/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-002.html new file mode 100644 index 00000000000..fb050688379 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/color-mix-currentcolor-002.html @@ -0,0 +1,22 @@ + + +currentColor is mixed with the correct color-space in color-mix() + + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-color/color-resolving-hsl.html b/tests/wpt/web-platform-tests/css/css-color/color-resolving-hsl.html deleted file mode 100644 index d33701759d6..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/color-resolving-hsl.html +++ /dev/null @@ -1,80 +0,0 @@ - - -CSS Color 4: Resolving HSL color values - - - - - - - -
    -
    -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-color/color-resolving-hwb.html b/tests/wpt/web-platform-tests/css/css-color/color-resolving-hwb.html deleted file mode 100644 index a60aecaa4db..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/color-resolving-hwb.html +++ /dev/null @@ -1,118 +0,0 @@ - - -CSS Color 4: Resolving HWB color values - - - - - - - -
    -
    -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-color/color-resolving-keywords.html b/tests/wpt/web-platform-tests/css/css-color/color-resolving-keywords.html deleted file mode 100644 index 5cbdcbe4b07..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/color-resolving-keywords.html +++ /dev/null @@ -1,205 +0,0 @@ - - -CSS Color 4: Resolving keyword color values - - - - - - -
    -
    -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-color/color-resolving.html b/tests/wpt/web-platform-tests/css/css-color/color-resolving.html deleted file mode 100644 index b3d1c740c57..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/color-resolving.html +++ /dev/null @@ -1,180 +0,0 @@ - - -CSS Color 4: Resolving color values - - - - - - -
    -
    -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-color/currentcolor-003-ref.html b/tests/wpt/web-platform-tests/css/css-color/currentcolor-003-ref.html new file mode 100644 index 00000000000..7cabf85f3b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/currentcolor-003-ref.html @@ -0,0 +1,34 @@ + + + + + + + +

    The first and third lines should have no red. The second line should have no green

    +
    Lorem ipsum
    +
    dolor amet.
    +
    Lorem ipsum.
    + + diff --git a/tests/wpt/web-platform-tests/css/css-color/currentcolor-003.html b/tests/wpt/web-platform-tests/css/css-color/currentcolor-003.html new file mode 100644 index 00000000000..d3ad9c4c15d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/currentcolor-003.html @@ -0,0 +1,43 @@ + + + + + CSS Color 4: currentcolor + + + + + + + + + +

    The first and third lines should have no red. The second line should have no green

    +
    Lorem ipsum
    dolor amet.
    +
    Lorem ipsum.
    + + diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-001.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-001.html new file mode 100644 index 00000000000..b03af9eb29f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-001.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-002.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-002.html new file mode 100644 index 00000000000..dcac061654b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-002.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-003.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-003.html new file mode 100644 index 00000000000..b0a5466e8f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-003.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-004.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-004.html new file mode 100644 index 00000000000..8be2be1eb7f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-004.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-005.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-005.html new file mode 100644 index 00000000000..8ed192f2b63 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-005.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-006.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-006.html new file mode 100644 index 00000000000..1a1a4776ef6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-006.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-007.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-007.html new file mode 100644 index 00000000000..b10783723dd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-007.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-008.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-008.html new file mode 100644 index 00000000000..e8ffb845741 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-008.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-009.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-009.html new file mode 100644 index 00000000000..4940e6de677 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-009.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-010.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-010.html new file mode 100644 index 00000000000..53e2588f9b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-010.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-011.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-011.html new file mode 100644 index 00000000000..3a15d015010 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-011.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-012.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-012.html new file mode 100644 index 00000000000..14d7ebf8344 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-012.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-013.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-013.html new file mode 100644 index 00000000000..374ab4775a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-013.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-014.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-014.html new file mode 100644 index 00000000000..3ee9a8e088d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-014.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-015.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-015.html new file mode 100644 index 00000000000..71aba26527a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-015.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-016.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-016.html new file mode 100644 index 00000000000..3a1e9cbf1f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-016.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-017.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-017.html new file mode 100644 index 00000000000..eed5571ff25 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-017.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-018.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-018.html new file mode 100644 index 00000000000..9f9071635ea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-018.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-019.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-019.html new file mode 100644 index 00000000000..c99239e2ef3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-019.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-020.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-020.html new file mode 100644 index 00000000000..85dc1261d37 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-020.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-021.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-021.html new file mode 100644 index 00000000000..ce3de2f3b55 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-021.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-022.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-022.html new file mode 100644 index 00000000000..c873dc2d108 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-022.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-023.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-023.html new file mode 100644 index 00000000000..a074329c628 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-023.html @@ -0,0 +1,19 @@ + + +CSS Color 4: deprecated system colors + + + + + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-ButtonBorder-ref.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-ButtonBorder-ref.html new file mode 100644 index 00000000000..99359aa4a77 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-ButtonBorder-ref.html @@ -0,0 +1,10 @@ + + +CSS Color 4: deprecated system colors + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-ButtonFace-ref.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-ButtonFace-ref.html new file mode 100644 index 00000000000..63b14e4fdaa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-ButtonFace-ref.html @@ -0,0 +1,10 @@ + + +CSS Color 4: deprecated system colors + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-Canvas-ref.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-Canvas-ref.html new file mode 100644 index 00000000000..503cc13e7a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-Canvas-ref.html @@ -0,0 +1,10 @@ + + +CSS Color 4: deprecated system colors + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-CanvasText-ref.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-CanvasText-ref.html new file mode 100644 index 00000000000..a66c6ebce36 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-CanvasText-ref.html @@ -0,0 +1,10 @@ + + +CSS Color 4: deprecated system colors + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-GrayText-ref.html b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-GrayText-ref.html new file mode 100644 index 00000000000..83d736c6649 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/deprecated-sameas-GrayText-ref.html @@ -0,0 +1,10 @@ + + +CSS Color 4: deprecated system colors + + +

    Test passes if you see a square, not two rectangles of different colors; and no red.

    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-color/lab-005-ref.html b/tests/wpt/web-platform-tests/css/css-color/lab-005-ref.html index 7c6fd236d42..d7b01c4c867 100644 --- a/tests/wpt/web-platform-tests/css/css-color/lab-005-ref.html +++ b/tests/wpt/web-platform-tests/css/css-color/lab-005-ref.html @@ -2,7 +2,7 @@ CSS Color 4: Specifying Lab and LCH

    Test passes if you see a single square, and not two rectangles of different colors.

    diff --git a/tests/wpt/web-platform-tests/css/css-color/lab-005.html b/tests/wpt/web-platform-tests/css/css-color/lab-005.html index 69285d58325..532d84f14b4 100644 --- a/tests/wpt/web-platform-tests/css/css-color/lab-005.html +++ b/tests/wpt/web-platform-tests/css/css-color/lab-005.html @@ -7,7 +7,7 @@ diff --git a/tests/wpt/web-platform-tests/css/css-color/lch-009.html b/tests/wpt/web-platform-tests/css/css-color/lch-009.html new file mode 100644 index 00000000000..472e7c138f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/lch-009.html @@ -0,0 +1,16 @@ + + +CSS Color 4: Specifying Lab and LCH + + + + + + +

    Test passes if you see a white square, and no yellow.

    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-color/lch-010.html b/tests/wpt/web-platform-tests/css/css-color/lch-010.html new file mode 100644 index 00000000000..527e9cc7aff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/lch-010.html @@ -0,0 +1,15 @@ + + +CSS Color 4: Specifying Lab and LCH + + + + + + +

    Test passes if you see a black square, and no dark red.

    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-color/oklch-009.html b/tests/wpt/web-platform-tests/css/css-color/oklch-009.html new file mode 100644 index 00000000000..5a4924a7e28 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/oklch-009.html @@ -0,0 +1,17 @@ + + +CSS Color 4: OKLab and OKLCH + + + + + + + +

    Test passes if you see a white square, and no green.

    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-color/oklch-010.html b/tests/wpt/web-platform-tests/css/css-color/oklch-010.html new file mode 100644 index 00000000000..425f4d82018 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/oklch-010.html @@ -0,0 +1,16 @@ + + +CSS Color 4: OKLab and OKLCH + + + + + + + +

    Test passes if you see a black square, and no green.

    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-contrast-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-contrast-function.html new file mode 100644 index 00000000000..74be5ced374 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-contrast-function.html @@ -0,0 +1,51 @@ + + + + +CSS Color Level 6: Computation of colors using color-contrast() function syntax + + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-function.html new file mode 100644 index 00000000000..e610754c644 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-function.html @@ -0,0 +1,291 @@ + + +CSS Color Level 4: Computation of colors using color() function syntax + + + + + + + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-mix-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-mix-function.html new file mode 100644 index 00000000000..a2682eaacaf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-mix-function.html @@ -0,0 +1,340 @@ + + + + +CSS Color Level 5: Computation of colors using color-mix() function syntax + + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-hex-color.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-hex-color.html new file mode 100644 index 00000000000..7485b34a1df --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-hex-color.html @@ -0,0 +1,38 @@ + + + + +CSS Color Level 4: Computation of colors using hex color notation + + + + + + + + + +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-hsl.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-hsl.html new file mode 100644 index 00000000000..3c9e01338be --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-hsl.html @@ -0,0 +1,3769 @@ + + + + +CSS Color Level 4: Computation of colors using HSL notation + + + + + + + + + +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-hwb.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-hwb.html new file mode 100644 index 00000000000..d51351bb6d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-hwb.html @@ -0,0 +1,83 @@ + + + + +CSS Color Level 4: Computation of colors using HWB notation + + + + + + + + + +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-lab.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-lab.html new file mode 100644 index 00000000000..82f61cb43f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-lab.html @@ -0,0 +1,80 @@ + + + + +CSS Color Level 4: Computation of colors using Lab notation + + + + + + + + + + +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-named-color.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-named-color.html new file mode 100644 index 00000000000..0fe639093a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-named-color.html @@ -0,0 +1,488 @@ + + + + +CSS Color Level 4: Computation of colors using named color notation + + + + + + + + + +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-relative-color.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-relative-color.html new file mode 100644 index 00000000000..06a610c406b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-relative-color.html @@ -0,0 +1,646 @@ + + + + +CSS Color Level 5: Computation of colors using relative color syntax + + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-rgb.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-rgb.html new file mode 100644 index 00000000000..1205d005125 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-rgb.html @@ -0,0 +1,95 @@ + + + + +CSS Color Level 4: Computation of colors using RGB notation + + + + + + + + + +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed.html index 6d0a7074f76..8aa2216fbda 100644 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed.html +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed.html @@ -2,11 +2,8 @@ -CSS Color Module Level 3: getComputedStyle().color - - - - +CSS Color Level 3: getComputedStyle().color + @@ -37,91 +34,6 @@ test_computed_value("color", "rgb(-2, 3, 4)", "rgb(0, 3, 4)"); test_computed_value("color", "rgb(100, 200, 300)", "rgb(100, 200, 255)"); test_computed_value("color", "rgb(20, 10, 0, -10)", "rgba(20, 10, 0, 0)"); test_computed_value("color", "rgb(100%, 200%, 300%)", "rgb(255, 255, 255)"); - -for (const colorSpace of [ "srgb", "srgb-linear", "a98-rgb", "rec2020", "prophoto-rgb" ]) { - test_computed_value("color", `color(${colorSpace} 0% 0% 0%)`, `color(${colorSpace} 0 0 0)`); - test_computed_value("color", `color(${colorSpace} 10% 10% 10%)`, `color(${colorSpace} 0.1 0.1 0.1)`); - test_computed_value("color", `color(${colorSpace} .2 .2 25%)`, `color(${colorSpace} 0.2 0.2 0.25)`); - test_computed_value("color", `color(${colorSpace} 0 0 0 / 1)`, `color(${colorSpace} 0 0 0)`); - test_computed_value("color", `color(${colorSpace} 0% 0 0 / 0.5)`, `color(${colorSpace} 0 0 0 / 0.5)`); - test_computed_value("color", `color(${colorSpace} 20% 0 10/0.5)`, `color(${colorSpace} 0.2 0 1 / 0.5)`); - test_computed_value("color", `color(${colorSpace} 20% 0 10/50%)`, `color(${colorSpace} 0.2 0 1 / 0.5)`); - test_computed_value("color", `color(${colorSpace} 400% 0 10/50%)`, `color(${colorSpace} 1 0 1 / 0.5)`); - test_computed_value("color", `color(${colorSpace} 50% -160 160)`, `color(${colorSpace} 0.5 0 1)`); - test_computed_value("color", `color(${colorSpace} 50% -200 200)`, `color(${colorSpace} 0.5 0 1)`); - test_computed_value("color", `color(${colorSpace} 0 0 0 / -10%)`, `color(${colorSpace} 0 0 0 / 0)`); - test_computed_value("color", `color(${colorSpace} 0 0 0 / 110%)`, `color(${colorSpace} 0 0 0)`); - test_computed_value("color", `color(${colorSpace} 0 0 0 / 300%)`, `color(${colorSpace} 0 0 0)`); - test_computed_value("color", `color(${colorSpace} 50% -200)`, `color(${colorSpace} 0.5 0 0)`); - test_computed_value("color", `color(${colorSpace} 50%)`, `color(${colorSpace} 0.5 0 0)`); - test_computed_value("color", `color(${colorSpace})`, `color(${colorSpace} 0 0 0)`); - test_computed_value("color", `color(${colorSpace} 50% -200 / 0.5)`, `color(${colorSpace} 0.5 0 0 / 0.5)`); - test_computed_value("color", `color(${colorSpace} 50% / 0.5)`, `color(${colorSpace} 0.5 0 0 / 0.5)`); - test_computed_value("color", `color(${colorSpace} / 0.5)`, `color(${colorSpace} 0 0 0 / 0.5)`); -} - -for (const colorSpace of [ "xyz", "xyz-d50", "xyz-d65" ]) { - const resultColorSpace = colorSpace == "xyz" ? "xyz-d65" : colorSpace; - - test_computed_value("color", `color(${colorSpace} 0 0 0)`, `color(${resultColorSpace} 0 0 0)`); - test_computed_value("color", `color(${colorSpace} 0 0 0 / 1)`, `color(${resultColorSpace} 0 0 0)`); - test_computed_value("color", `color(${colorSpace} 1 1 1)`, `color(${resultColorSpace} 1 1 1)`); - test_computed_value("color", `color(${colorSpace} 1 1 1 / 1)`, `color(${resultColorSpace} 1 1 1)`); - test_computed_value("color", `color(${colorSpace} -1 -1 -1)`, `color(${resultColorSpace} -1 -1 -1)`); - test_computed_value("color", `color(${colorSpace} 0.1 0.1 0.1)`, `color(${resultColorSpace} 0.1 0.1 0.1)`); - test_computed_value("color", `color(${colorSpace} 10 10 10)`, `color(${resultColorSpace} 10 10 10)`); - test_computed_value("color", `color(${colorSpace} .2 .2 .25)`, `color(${resultColorSpace} 0.2 0.2 0.25)`); - test_computed_value("color", `color(${colorSpace} 0 0 0 / 0.5)`, `color(${resultColorSpace} 0 0 0 / 0.5)`); - test_computed_value("color", `color(${colorSpace} .20 0 10/0.5)`, `color(${resultColorSpace} 0.2 0 10 / 0.5)`); - test_computed_value("color", `color(${colorSpace} .20 0 10/50%)`, `color(${resultColorSpace} 0.2 0 10 / 0.5)`); - test_computed_value("color", `color(${colorSpace} 0 0 0 / -10%)`, `color(${resultColorSpace} 0 0 0 / 0)`); - test_computed_value("color", `color(${colorSpace} 0 0 0 / 110%)`, `color(${resultColorSpace} 0 0 0)`); - test_computed_value("color", `color(${colorSpace} 0 0 0 / 300%)`, `color(${resultColorSpace} 0 0 0)`); - test_computed_value("color", `color(${colorSpace} 1 1)`, `color(${resultColorSpace} 1 1 0)`); - test_computed_value("color", `color(${colorSpace} 1)`, `color(${resultColorSpace} 1 0 0)`); - test_computed_value("color", `color(${colorSpace})`, `color(${resultColorSpace} 0 0 0)`); - test_computed_value("color", `color(${colorSpace} 1 1 / .5)`, `color(${resultColorSpace} 1 1 0 / 0.5)`); - test_computed_value("color", `color(${colorSpace} 1 / 0.5)`, `color(${resultColorSpace} 1 0 0 / 0.5)`); - test_computed_value("color", `color(${colorSpace} / 50%)`, `color(${resultColorSpace} 0 0 0 / 0.5)`); -} - -for (const colorSpace of [ "lab", "oklab" ]) { - test_computed_value("color", `${colorSpace}(0% 0 0)`, `${colorSpace}(0% 0 0)`); - test_computed_value("color", `${colorSpace}(0% 0 0 / 1)`, `${colorSpace}(0% 0 0)`); - test_computed_value("color", `${colorSpace}(0% 0 0 / 0.5)`, `${colorSpace}(0% 0 0 / 0.5)`); - test_computed_value("color", `${colorSpace}(20% 0 10/0.5)`, `${colorSpace}(20% 0 10 / 0.5)`); - test_computed_value("color", `${colorSpace}(20% 0 10/50%)`, `${colorSpace}(20% 0 10 / 0.5)`); - test_computed_value("color", `${colorSpace}(400% 0 10/50%)`, `${colorSpace}(400% 0 10 / 0.5)`); - test_computed_value("color", `${colorSpace}(50% -160 160)`, `${colorSpace}(50% -160 160)`); - test_computed_value("color", `${colorSpace}(50% -200 200)`, `${colorSpace}(50% -200 200)`); - test_computed_value("color", `${colorSpace}(0% 0 0 / -10%)`, `${colorSpace}(0% 0 0 / 0)`); - test_computed_value("color", `${colorSpace}(0% 0 0 / 110%)`, `${colorSpace}(0% 0 0)`); - test_computed_value("color", `${colorSpace}(0% 0 0 / 300%)`, `${colorSpace}(0% 0 0)`); - test_computed_value("color", `${colorSpace}(-40% 0 0)`, `${colorSpace}(0% 0 0)`); - test_computed_value("color", `${colorSpace}(50% -20 0)`, `${colorSpace}(50% -20 0)`); - test_computed_value("color", `${colorSpace}(50% 0 -20)`, `${colorSpace}(50% 0 -20)`); -} - -for (const colorSpace of [ "lch", "oklch" ]) { - test_computed_value("color", `${colorSpace}(0% 0 0deg)`, `${colorSpace}(0% 0 0)`); - test_computed_value("color", `${colorSpace}(0% 0 0deg / 1)`, `${colorSpace}(0% 0 0)`); - test_computed_value("color", `${colorSpace}(0% 0 0deg / 0.5)`, `${colorSpace}(0% 0 0 / 0.5)`); - test_computed_value("color", `${colorSpace}(100% 230 0deg / 0.5)`, `${colorSpace}(100% 230 0 / 0.5)`); - test_computed_value("color", `${colorSpace}(20% 50 20deg/0.5)`, `${colorSpace}(20% 50 20 / 0.5)`); - test_computed_value("color", `${colorSpace}(20% 50 20deg/50%)`, `${colorSpace}(20% 50 20 / 0.5)`); - test_computed_value("color", `${colorSpace}(10% 20 20deg / -10%)`, `${colorSpace}(10% 20 20 / 0)`); - test_computed_value("color", `${colorSpace}(10% 20 20deg / 110%)`, `${colorSpace}(10% 20 20)`); - test_computed_value("color", `${colorSpace}(10% 20 1.28rad)`, `${colorSpace}(10% 20 73.3386)`); - test_computed_value("color", `${colorSpace}(10% 20 380deg)`, `${colorSpace}(10% 20 20)`); - test_computed_value("color", `${colorSpace}(10% 20 -340deg)`, `${colorSpace}(10% 20 20)`); - test_computed_value("color", `${colorSpace}(10% 20 740deg)`, `${colorSpace}(10% 20 20)`); - test_computed_value("color", `${colorSpace}(10% 20 -700deg)`, `${colorSpace}(10% 20 20)`); - test_computed_value("color", `${colorSpace}(-40% 0 0)`, `${colorSpace}(0% 0 0)`); - test_computed_value("color", `${colorSpace}(20% -20 0)`, `${colorSpace}(20% 0 0)`); - test_computed_value("color", `${colorSpace}(0% 0 0 / 0.5)`, `${colorSpace}(0% 0 0 / 0.5)`); - test_computed_value("color", `${colorSpace}(10% 20 20 / 110%)`, `${colorSpace}(10% 20 20)`); - test_computed_value("color", `${colorSpace}(10% 20 -700)`, `${colorSpace}(10% 20 20)`); -} diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-contrast-computed.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-contrast-computed.html deleted file mode 100644 index b3474dfa939..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-contrast-computed.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - -CSS Color 5: Computed value of color-contrast() - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-contrast-invalid.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-contrast-invalid.html deleted file mode 100644 index 10c47856329..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-contrast-invalid.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - -CSS Color 5: Invalid color-contrast() values - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-contrast-valid.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-contrast-valid.html deleted file mode 100644 index ed7cea47a42..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-contrast-valid.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - -CSS Color 5: Parsing and serialization of color-contrast() - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-contrast-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-contrast-function.html new file mode 100644 index 00000000000..1ac97926917 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-contrast-function.html @@ -0,0 +1,29 @@ + + + + +CSS Color Level 6: Parsing and serialization of colors using invalid color-contrast() function syntax + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html new file mode 100644 index 00000000000..75d9ff7c217 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html @@ -0,0 +1,46 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using invalid color() function syntax + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-mix-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-mix-function.html new file mode 100644 index 00000000000..df36aab6b32 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-mix-function.html @@ -0,0 +1,91 @@ + + + + +CSS Color Level 5: Parsing and serialization of colors using invalid color-mix() function syntax + + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-hex-color.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-hex-color.html new file mode 100644 index 00000000000..f879f334a1e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-hex-color.html @@ -0,0 +1,34 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using invalid hex color notation + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-hsl.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-hsl.html new file mode 100644 index 00000000000..1ea5cf3518d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-hsl.html @@ -0,0 +1,44 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using invalid HSL notation + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-hwb.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-hwb.html new file mode 100644 index 00000000000..058ec03b681 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-hwb.html @@ -0,0 +1,31 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using invalid HWB notation + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-lab.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-lab.html new file mode 100644 index 00000000000..36b93c6c5c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-lab.html @@ -0,0 +1,33 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using invalid Lab notation + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-named-color.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-named-color.html new file mode 100644 index 00000000000..8e3f1f2ba7e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-named-color.html @@ -0,0 +1,209 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using invalid named color notation + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-relative-color.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-relative-color.html new file mode 100644 index 00000000000..1e95ef3997d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-relative-color.html @@ -0,0 +1,153 @@ + + + + +CSS Color Level 5: Parsing and serialization of colors using invalid relative color syntax + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-rgb.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-rgb.html new file mode 100644 index 00000000000..81facf91a36 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-rgb.html @@ -0,0 +1,50 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using invalid RGB notation + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid.html index a8336fe81b5..276ab806a6a 100644 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid.html @@ -2,10 +2,10 @@ -CSS Color Module Level 3: parsing color with invalid values +CSS Color Level 3: parsing color with invalid values - - + + @@ -22,45 +22,6 @@ test_invalid_value("color", "rgb(1,2,3,4,5)"); test_invalid_value("color", "hsla(1,2,3,4,5)"); test_invalid_value("color", "rgb(10%, 20, 30%)"); test_invalid_value("color", "rgba(-2, 300, 400%, -0.5)"); - -for (const colorSpace of [ "srgb", "srgb-linear", "a98-rgb", "rec2020", "prophoto-rgb" ]) { - test_invalid_value("color", `color(${colorSpace} 0 0 0 0)`); - test_invalid_value("color", `color(${colorSpace} 0deg 0% 0)`); - test_invalid_value("color", `color(${colorSpace} 0% 0 0 1)`); - test_invalid_value("color", `color(${colorSpace} 0% 0 0 10%)`); - test_invalid_value("color", `color(${colorSpace} 0% 0 0deg)`); - test_invalid_value("color", `color(${colorSpace} 0% 0% 0deg)`); - test_invalid_value("color", `color(${colorSpace} 40% 0 0deg)`); -} - -for (const colorSpace of [ "xyz", "xyz-d50", "xyz-d65" ]) { - test_invalid_value("color", `color(${colorSpace} 0 0 0 0)`); - test_invalid_value("color", `color(${colorSpace} 0deg 0% 0)`); - test_invalid_value("color", `color(${colorSpace} 0% 0 0)`); - test_invalid_value("color", `color(${colorSpace} 0% 0 0 1)`); - test_invalid_value("color", `color(${colorSpace} 0% 0 0 10%)`); - test_invalid_value("color", `color(${colorSpace} 0% 0 0deg)`); - test_invalid_value("color", `color(${colorSpace} 0% 0% 0deg)`); - test_invalid_value("color", `color(${colorSpace} 40% 0 0deg)`); -} - -for (const colorSpace of [ "lab", "oklab" ]) { - test_invalid_value("color", `${colorSpace}(0 0 0)`); - test_invalid_value("color", `${colorSpace}(0% 0% 0)`); - test_invalid_value("color", `${colorSpace}(0% 0 0 1)`); - test_invalid_value("color", `${colorSpace}(0% 0 0 10%)`); - test_invalid_value("color", `${colorSpace}(0% 0 0deg)`); - test_invalid_value("color", `${colorSpace}(0% 0% 0deg)`); - test_invalid_value("color", `${colorSpace}(40% 0 0deg)`); - test_invalid_value("color", `color(${colorSpace} 20% 0 10 / 50%)`); -} - -for (const colorSpace of [ "lch", "oklch" ]) { - test_invalid_value("color", `${colorSpace}(0 0 0 / 0.5)`); - test_invalid_value("color", `${colorSpace}(20% 10 10deg 10)`); - test_invalid_value("color", `${colorSpace}(20% 10 10deg 10 / 0.5)`); - test_invalid_value("color", `color(${colorSpace} 20% 0 10 / 50%)`); -} diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-mix-computed.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-mix-computed.html deleted file mode 100644 index 41ffdcae64c..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-mix-computed.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - -CSS Color 5: color-mix() - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-mix-invalid.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-mix-invalid.html deleted file mode 100644 index 68983027aeb..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-mix-invalid.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -CSS Color 5: color-mix() - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-mix-valid.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-mix-valid.html deleted file mode 100644 index 5c66ab1c429..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-mix-valid.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - -CSS Color 5: color-mix() - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-contrast-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-contrast-function.html new file mode 100644 index 00000000000..bdb8f0f5888 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-contrast-function.html @@ -0,0 +1,50 @@ + + + + +CSS Color Level 6: Parsing and serialization of colors using valid color-contrast() function syntax + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-function.html new file mode 100644 index 00000000000..79e0bde0590 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-function.html @@ -0,0 +1,85 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using valid color() function syntax + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-mix-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-mix-function.html new file mode 100644 index 00000000000..7751c2ca1d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-mix-function.html @@ -0,0 +1,312 @@ + + + + +CSS Color Level 5: Parsing and serialization of colors using valid color-mix() function syntax + + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-hsl.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-hsl.html new file mode 100644 index 00000000000..135a0a39db4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-hsl.html @@ -0,0 +1,37 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using valid HSL notation + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-hwb.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-hwb.html new file mode 100644 index 00000000000..07367ac450b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-hwb.html @@ -0,0 +1,33 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using valid HWB notation + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-lab.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-lab.html new file mode 100644 index 00000000000..b2920a9dd53 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-lab.html @@ -0,0 +1,72 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using valid Lab notation + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-relative-color.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-relative-color.html new file mode 100644 index 00000000000..3222ea8c306 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-relative-color.html @@ -0,0 +1,645 @@ + + + + +CSS Color Level 5: Parsing and serialization of colors using valid relative color syntax + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-rgb.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-rgb.html new file mode 100644 index 00000000000..14bcce854fe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-rgb.html @@ -0,0 +1,33 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using valid RGB notation + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-system-color.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-system-color.html new file mode 100644 index 00000000000..af644aaa458 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-system-color.html @@ -0,0 +1,37 @@ + + + + +CSS Color Level 4: Parsing and serialization of colors using valid system color values + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid.html index bfe2726adf2..5c18d62d759 100644 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid.html +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid.html @@ -2,10 +2,10 @@ -CSS Color Module Level 3: parsing color with valid values +CSS Color Level 3: parsing color with valid values - - + + @@ -28,91 +28,6 @@ test_valid_value("color", "rgb(-2, 3, 4)", "rgb(0, 3, 4)"); test_valid_value("color", "rgb(100, 200, 300)", "rgb(100, 200, 255)"); test_valid_value("color", "rgb(20, 10, 0, -10)", "rgba(20, 10, 0, 0)"); test_valid_value("color", "rgb(100%, 200%, 300%)", "rgb(255, 255, 255)"); - -for (const colorSpace of [ "srgb", "srgb-linear", "a98-rgb", "rec2020", "prophoto-rgb" ]) { - test_valid_value("color", `color(${colorSpace} 0% 0% 0%)`, `color(${colorSpace} 0 0 0)`); - test_valid_value("color", `color(${colorSpace} 10% 10% 10%)`, `color(${colorSpace} 0.1 0.1 0.1)`); - test_valid_value("color", `color(${colorSpace} .2 .2 25%)`, `color(${colorSpace} 0.2 0.2 0.25)`); - test_valid_value("color", `color(${colorSpace} 0 0 0 / 1)`, `color(${colorSpace} 0 0 0)`); - test_valid_value("color", `color(${colorSpace} 0% 0 0 / 0.5)`, `color(${colorSpace} 0 0 0 / 0.5)`); - test_valid_value("color", `color(${colorSpace} 20% 0 10/0.5)`, `color(${colorSpace} 0.2 0 1 / 0.5)`); - test_valid_value("color", `color(${colorSpace} 20% 0 10/50%)`, `color(${colorSpace} 0.2 0 1 / 0.5)`); - test_valid_value("color", `color(${colorSpace} 400% 0 10/50%)`, `color(${colorSpace} 1 0 1 / 0.5)`); - test_valid_value("color", `color(${colorSpace} 50% -160 160)`, `color(${colorSpace} 0.5 0 1)`); - test_valid_value("color", `color(${colorSpace} 50% -200 200)`, `color(${colorSpace} 0.5 0 1)`); - test_valid_value("color", `color(${colorSpace} 0 0 0 / -10%)`, `color(${colorSpace} 0 0 0 / 0)`); - test_valid_value("color", `color(${colorSpace} 0 0 0 / 110%)`, `color(${colorSpace} 0 0 0)`); - test_valid_value("color", `color(${colorSpace} 0 0 0 / 300%)`, `color(${colorSpace} 0 0 0)`); - test_valid_value("color", `color(${colorSpace} 50% -200)`, `color(${colorSpace} 0.5 0 0)`); - test_valid_value("color", `color(${colorSpace} 50%)`, `color(${colorSpace} 0.5 0 0)`); - test_valid_value("color", `color(${colorSpace})`, `color(${colorSpace} 0 0 0)`); - test_valid_value("color", `color(${colorSpace} 50% -200 / 0.5)`, `color(${colorSpace} 0.5 0 0 / 0.5)`); - test_valid_value("color", `color(${colorSpace} 50% / 0.5)`, `color(${colorSpace} 0.5 0 0 / 0.5)`); - test_valid_value("color", `color(${colorSpace} / 0.5)`, `color(${colorSpace} 0 0 0 / 0.5)`); -} - -for (const colorSpace of [ "xyz", "xyz-d50", "xyz-d65" ]) { - const resultColorSpace = colorSpace == "xyz" ? "xyz-d65" : colorSpace; - - test_valid_value("color", `color(${colorSpace} 0 0 0)`, `color(${resultColorSpace} 0 0 0)`); - test_valid_value("color", `color(${colorSpace} 0 0 0 / 1)`, `color(${resultColorSpace} 0 0 0)`); - test_valid_value("color", `color(${colorSpace} 1 1 1)`, `color(${resultColorSpace} 1 1 1)`); - test_valid_value("color", `color(${colorSpace} 1 1 1 / 1)`, `color(${resultColorSpace} 1 1 1)`); - test_valid_value("color", `color(${colorSpace} -1 -1 -1)`, `color(${resultColorSpace} -1 -1 -1)`); - test_valid_value("color", `color(${colorSpace} 0.1 0.1 0.1)`, `color(${resultColorSpace} 0.1 0.1 0.1)`); - test_valid_value("color", `color(${colorSpace} 10 10 10)`, `color(${resultColorSpace} 10 10 10)`); - test_valid_value("color", `color(${colorSpace} .2 .2 .25)`, `color(${resultColorSpace} 0.2 0.2 0.25)`); - test_valid_value("color", `color(${colorSpace} 0 0 0 / 0.5)`, `color(${resultColorSpace} 0 0 0 / 0.5)`); - test_valid_value("color", `color(${colorSpace} .20 0 10/0.5)`, `color(${resultColorSpace} 0.2 0 10 / 0.5)`); - test_valid_value("color", `color(${colorSpace} .20 0 10/50%)`, `color(${resultColorSpace} 0.2 0 10 / 0.5)`); - test_valid_value("color", `color(${colorSpace} 0 0 0 / -10%)`, `color(${resultColorSpace} 0 0 0 / 0)`); - test_valid_value("color", `color(${colorSpace} 0 0 0 / 110%)`, `color(${resultColorSpace} 0 0 0)`); - test_valid_value("color", `color(${colorSpace} 0 0 0 / 300%)`, `color(${resultColorSpace} 0 0 0)`); - test_valid_value("color", `color(${colorSpace} 1 1)`, `color(${resultColorSpace} 1 1 0)`); - test_valid_value("color", `color(${colorSpace} 1)`, `color(${resultColorSpace} 1 0 0)`); - test_valid_value("color", `color(${colorSpace})`, `color(${resultColorSpace} 0 0 0)`); - test_valid_value("color", `color(${colorSpace} 1 1 / .5)`, `color(${resultColorSpace} 1 1 0 / 0.5)`); - test_valid_value("color", `color(${colorSpace} 1 / 0.5)`, `color(${resultColorSpace} 1 0 0 / 0.5)`); - test_valid_value("color", `color(${colorSpace} / 50%)`, `color(${resultColorSpace} 0 0 0 / 0.5)`); -} - -for (const colorSpace of [ "lab", "oklab" ]) { - test_valid_value("color", `${colorSpace}(0% 0 0)`, `${colorSpace}(0% 0 0)`); - test_valid_value("color", `${colorSpace}(0% 0 0 / 1)`, `${colorSpace}(0% 0 0)`); - test_valid_value("color", `${colorSpace}(0% 0 0 / 0.5)`, `${colorSpace}(0% 0 0 / 0.5)`); - test_valid_value("color", `${colorSpace}(20% 0 10/0.5)`, `${colorSpace}(20% 0 10 / 0.5)`); - test_valid_value("color", `${colorSpace}(20% 0 10/50%)`, `${colorSpace}(20% 0 10 / 0.5)`); - test_valid_value("color", `${colorSpace}(400% 0 10/50%)`, `${colorSpace}(400% 0 10 / 0.5)`); - test_valid_value("color", `${colorSpace}(50% -160 160)`, `${colorSpace}(50% -160 160)`); - test_valid_value("color", `${colorSpace}(50% -200 200)`, `${colorSpace}(50% -200 200)`); - test_valid_value("color", `${colorSpace}(0% 0 0 / -10%)`, `${colorSpace}(0% 0 0 / 0)`); - test_valid_value("color", `${colorSpace}(0% 0 0 / 110%)`, `${colorSpace}(0% 0 0)`); - test_valid_value("color", `${colorSpace}(0% 0 0 / 300%)`, `${colorSpace}(0% 0 0)`); - test_valid_value("color", `${colorSpace}(-40% 0 0)`, `${colorSpace}(0% 0 0)`); - test_valid_value("color", `${colorSpace}(50% -20 0)`, `${colorSpace}(50% -20 0)`); - test_valid_value("color", `${colorSpace}(50% 0 -20)`, `${colorSpace}(50% 0 -20)`); -} - -for (const colorSpace of [ "lch", "oklch" ]) { - test_valid_value("color", `${colorSpace}(0% 0 0deg)`, `${colorSpace}(0% 0 0)`); - test_valid_value("color", `${colorSpace}(0% 0 0deg / 1)`, `${colorSpace}(0% 0 0)`); - test_valid_value("color", `${colorSpace}(0% 0 0deg / 0.5)`, `${colorSpace}(0% 0 0 / 0.5)`); - test_valid_value("color", `${colorSpace}(100% 230 0deg / 0.5)`, `${colorSpace}(100% 230 0 / 0.5)`); - test_valid_value("color", `${colorSpace}(20% 50 20deg/0.5)`, `${colorSpace}(20% 50 20 / 0.5)`); - test_valid_value("color", `${colorSpace}(20% 50 20deg/50%)`, `${colorSpace}(20% 50 20 / 0.5)`); - test_valid_value("color", `${colorSpace}(10% 20 20deg / -10%)`, `${colorSpace}(10% 20 20 / 0)`); - test_valid_value("color", `${colorSpace}(10% 20 20deg / 110%)`, `${colorSpace}(10% 20 20)`); - test_valid_value("color", `${colorSpace}(10% 20 1.28rad)`, `${colorSpace}(10% 20 73.3386)`); - test_valid_value("color", `${colorSpace}(10% 20 380deg)`, `${colorSpace}(10% 20 20)`); - test_valid_value("color", `${colorSpace}(10% 20 -340deg)`, `${colorSpace}(10% 20 20)`); - test_valid_value("color", `${colorSpace}(10% 20 740deg)`, `${colorSpace}(10% 20 20)`); - test_valid_value("color", `${colorSpace}(10% 20 -700deg)`, `${colorSpace}(10% 20 20)`); - test_valid_value("color", `${colorSpace}(-40% 0 0)`, `${colorSpace}(0% 0 0)`); - test_valid_value("color", `${colorSpace}(20% -20 0)`, `${colorSpace}(20% 0 0)`); - test_valid_value("color", `${colorSpace}(0% 0 0 / 0.5)`, `${colorSpace}(0% 0 0 / 0.5)`); - test_valid_value("color", `${colorSpace}(10% 20 20 / 110%)`, `${colorSpace}(10% 20 20)`); - test_valid_value("color", `${colorSpace}(10% 20 -700)`, `${colorSpace}(10% 20 20)`); -} diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-computed.html b/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-computed.html index ba93181754a..27d9316415f 100644 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-computed.html +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-computed.html @@ -2,7 +2,7 @@ -CSS Grid Layout Test: getComputedStyle().opacity +CSS Color Level 3: getComputedStyle().opacity diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-invalid.html b/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-invalid.html index 1bcf4c5b64b..d85f6048015 100644 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-invalid.html @@ -2,7 +2,7 @@ -CSS opacity Module Level 3: parsing opacity with invalid values +CSS Color Level 3: parsing opacity with invalid values diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-valid.html b/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-valid.html index daa8d8647f1..990ca1ca143 100644 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-valid.html +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/opacity-valid.html @@ -2,7 +2,7 @@ -CSS opacity Module Level 3: parsing opacity with valid values +CSS Color Level 3: parsing opacity with valid values diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/relative-color-computed.html b/tests/wpt/web-platform-tests/css/css-color/parsing/relative-color-computed.html deleted file mode 100644 index b7eccdba9f4..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/relative-color-computed.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - -CSS Color 5: Computed value of color using relative color syntax - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/relative-color-invalid.html b/tests/wpt/web-platform-tests/css/css-color/parsing/relative-color-invalid.html deleted file mode 100644 index c6f19e1e8b9..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/relative-color-invalid.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - -CSS Color 5: Invalid relative syntax colors - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/relative-color-valid.html b/tests/wpt/web-platform-tests/css/css-color/parsing/relative-color-valid.html deleted file mode 100644 index 257939633b2..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/relative-color-valid.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - -CSS Color 5: Parsing and serialization of colors using relative color syntax - - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/system-color-valid.html b/tests/wpt/web-platform-tests/css/css-color/parsing/system-color-valid.html deleted file mode 100644 index 77c6d214fbc..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/system-color-valid.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - -CSS Color Module Level 4: parsing system color keywords - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/rgb-rounding-001.html b/tests/wpt/web-platform-tests/css/css-color/rgb-rounding-001.html deleted file mode 100644 index ecf93f0e818..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/rgb-rounding-001.html +++ /dev/null @@ -1,20 +0,0 @@ - - -CSS Color 4: RGB Channel Rounding - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-color/system-color-compute.html b/tests/wpt/web-platform-tests/css/css-color/system-color-compute.html index 49c61647777..ed4f3b947e8 100644 --- a/tests/wpt/web-platform-tests/css/css-color/system-color-compute.html +++ b/tests/wpt/web-platform-tests/css/css-color/system-color-compute.html @@ -1,7 +1,7 @@ -CSS Color 4: System colors should compute to themselves +CSS Color 4: System colors compute to absolute colors - + +

    The test passes if the two lines below look identical:

    This text should be the same color as the line below.

    This text should be the same color as the line above.

    diff --git a/tests/wpt/web-platform-tests/css/css-color/t32-opacity-basic-0.6-a.xht b/tests/wpt/web-platform-tests/css/css-color/t32-opacity-basic-0.6-a.xht index 13761b1bbfb..3687d5392e3 100644 --- a/tests/wpt/web-platform-tests/css/css-color/t32-opacity-basic-0.6-a.xht +++ b/tests/wpt/web-platform-tests/css/css-color/t32-opacity-basic-0.6-a.xht @@ -7,15 +7,17 @@ + +

    The test passes if the two lines below look identical:

    This text should be the same color as the line below.

    This text should be the same color as the line above.

    diff --git a/tests/wpt/web-platform-tests/css/css-color/t422-rgba-a0.6-a.xht b/tests/wpt/web-platform-tests/css/css-color/t422-rgba-a0.6-a.xht index c9115d6c5d6..2274eb3c312 100644 --- a/tests/wpt/web-platform-tests/css/css-color/t422-rgba-a0.6-a.xht +++ b/tests/wpt/web-platform-tests/css/css-color/t422-rgba-a0.6-a.xht @@ -7,15 +7,17 @@ + +

    The test passes if the two lines below look identical:

    This text should be the same color as the line below.

    This text should be the same color as the line above.

    diff --git a/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-b-ref.html b/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-b-ref.html deleted file mode 100644 index db97bb638a1..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-b-ref.html +++ /dev/null @@ -1,43 +0,0 @@ - - -CSS Reference - - - -

    Every row in this table should have both columns the same color:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Column 1Column 2
     
     
     
     
     
     
     
     
    - diff --git a/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-b.xht b/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-b.xht deleted file mode 100644 index 7d1f44203c5..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-b.xht +++ /dev/null @@ -1,62 +0,0 @@ - - - - CSS Test: rgba() overpainting - - - - - - - - - -

    Every row in this table should have both columns the same color:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Column 1Column 2
      
     
     
      
     
     
      
     
     
      
     
     
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-multiple-boxes-c-ref.html b/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-multiple-boxes-c-ref.html deleted file mode 100644 index 6de63c62646..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-multiple-boxes-c-ref.html +++ /dev/null @@ -1,15 +0,0 @@ - - -CSS Reference - - - -

    These two rectangles should be the same color:

    -
    XXXXX
    XXXXX
    -
    - diff --git a/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-multiple-boxes-c.xht b/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-multiple-boxes-c.xht deleted file mode 100644 index 0ac780eea8e..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/t422-rgba-onscreen-multiple-boxes-c.xht +++ /dev/null @@ -1,30 +0,0 @@ - - - - CSS Test: rgba() overpainting - - - - - - - - - -

    These two rectangles should be the same color:

    - -
    XXXXX
    XXXXX
    - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/t425-hsla-basic-a-ref.html b/tests/wpt/web-platform-tests/css/css-color/t425-hsla-basic-a-ref.html index 757800f2ea6..32eb4cd46cc 100644 --- a/tests/wpt/web-platform-tests/css/css-color/t425-hsla-basic-a-ref.html +++ b/tests/wpt/web-platform-tests/css/css-color/t425-hsla-basic-a-ref.html @@ -2,9 +2,10 @@ CSS Reference -

    This text should be light green (the same color as the line below).

    -

    This text should be light green (the same color as the line above).

    +

    Test passes if the two boxes below are the same color.

    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-color/t425-hsla-basic-a.xht b/tests/wpt/web-platform-tests/css/css-color/t425-hsla-basic-a.xht index 14b079b1108..3645a9acedf 100644 --- a/tests/wpt/web-platform-tests/css/css-color/t425-hsla-basic-a.xht +++ b/tests/wpt/web-platform-tests/css/css-color/t425-hsla-basic-a.xht @@ -9,12 +9,14 @@ -

    This text should be light green (the same color as the line below).

    -

    This text should be light green (the same color as the line above).

    +

    Test passes if the two boxes below are the same color.

    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-color/t425-hsla-onscreen-b.xht b/tests/wpt/web-platform-tests/css/css-color/t425-hsla-onscreen-b.xht deleted file mode 100644 index b2dcf5fd89f..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/t425-hsla-onscreen-b.xht +++ /dev/null @@ -1,62 +0,0 @@ - - - - CSS Test: hsla() overpainting - - - - - - - - - -

    Every row in this table should have both columns the same color:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Column 1Column 2
      
     
     
      
     
     
      
     
     
      
     
     
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/t425-hsla-onscreen-multiple-boxes-c.xht b/tests/wpt/web-platform-tests/css/css-color/t425-hsla-onscreen-multiple-boxes-c.xht deleted file mode 100644 index 9d2eccd47cd..00000000000 --- a/tests/wpt/web-platform-tests/css/css-color/t425-hsla-onscreen-multiple-boxes-c.xht +++ /dev/null @@ -1,30 +0,0 @@ - - - - CSS Test: hsla() overpainting - - - - - - - - - -

    These two rectangles should be the same color:

    - -
    XXXXX
    XXXXX
    - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-color/tagged-images-003.html b/tests/wpt/web-platform-tests/css/css-color/tagged-images-003.html index 09ce9e9418f..14f154b88ac 100644 --- a/tests/wpt/web-platform-tests/css/css-color/tagged-images-003.html +++ b/tests/wpt/web-platform-tests/css/css-color/tagged-images-003.html @@ -13,10 +13,8 @@ .test { background: url(./support/swap-990000-iCCP.png); } -

    Test passes if you see a single green square, - not two rectangles of different colors, - and no red.

    +

    Test passes if you see a green square, and no red.

    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-color/tagged-images-004.html b/tests/wpt/web-platform-tests/css/css-color/tagged-images-004.html index 9e67776f680..bd874c97172 100644 --- a/tests/wpt/web-platform-tests/css/css-color/tagged-images-004.html +++ b/tests/wpt/web-platform-tests/css/css-color/tagged-images-004.html @@ -19,10 +19,8 @@ For example, PNG specifies a means (the sRGB chunk) "> .test { background: url(./support/009900-sRGB.png); } -

    Test passes if you see a single green square, - not two rectangles of different colors, - and no red.

    +

    Test passes if you see a green square, and no red.

    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-conditional/at-supports-047.html b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-047.html new file mode 100644 index 00000000000..8ad85858147 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-047.html @@ -0,0 +1,23 @@ + + + + CSS Test (Conditional Rules): In @supports, pseudo elements can be parsed successfully + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-conditional/at-supports-font-format-001.html b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-font-format-001.html new file mode 100644 index 00000000000..d4cab3ad119 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-font-format-001.html @@ -0,0 +1,56 @@ + +CSS Conditional Test: @supports font-format() + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-conditional/at-supports-font-tech-001.html b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-font-tech-001.html new file mode 100644 index 00000000000..86e5332b90e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-font-tech-001.html @@ -0,0 +1,56 @@ + +CSS Conditional Test: @supports font-tech() + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-conditional/at-supports-selector-detecting-invalid-in-forgiving-argument-ref.html b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-selector-detecting-invalid-in-forgiving-argument-ref.html new file mode 100644 index 00000000000..681ef4bcefe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-selector-detecting-invalid-in-forgiving-argument-ref.html @@ -0,0 +1,17 @@ + +CSS Conditional Test: @supports selector() detecting invalid in forgiving argument. + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-conditional/at-supports-selector-detecting-invalid-in-forgiving-argument.html b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-selector-detecting-invalid-in-forgiving-argument.html new file mode 100644 index 00000000000..74648440d5e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-selector-detecting-invalid-in-forgiving-argument.html @@ -0,0 +1,42 @@ + +CSS Conditional Test: @supports selector() detecting invalid in forgiving argument. + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-conditional/at-supports-whitespace.html b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-whitespace.html new file mode 100644 index 00000000000..12683ab92bb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-conditional/at-supports-whitespace.html @@ -0,0 +1,39 @@ + +Parsing of @supports with whitespace + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-conditional/css-supports-035.xht b/tests/wpt/web-platform-tests/css/css-conditional/css-supports-035.xht index 471a7151318..7dc202b8a4c 100644 --- a/tests/wpt/web-platform-tests/css/css-conditional/css-supports-035.xht +++ b/tests/wpt/web-platform-tests/css/css-conditional/css-supports-035.xht @@ -12,6 +12,8 @@ @supports not ({ something @with (unbalanced parens }) { html { background-color: red } } + /* parser still looking for second close parenthesis */ + html { background-color: red } ]]> diff --git a/tests/wpt/web-platform-tests/css/css-conditional/js/001.html b/tests/wpt/web-platform-tests/css/css-conditional/js/001.html index af97ac09e6e..bafb840d312 100644 --- a/tests/wpt/web-platform-tests/css/css-conditional/js/001.html +++ b/tests/wpt/web-platform-tests/css/css-conditional/js/001.html @@ -196,12 +196,6 @@ assert_equals(rules[0].cssRules[0].type, CSSRule.FONT_FACE_RULE); }, "Inserting @font-face inside @supports works"); - test(function(){ - var style_rule = document.styleSheets[0].cssRules[0].cssRules[1]; - - assert_throws_js(TypeError, function() { style_rule.insertRule("@supports (width: 0) { ol { width: 0; } }", 0);} ); - - }, "Inserting an @supports inside a style rule should fail"); test(function(){ var rule = document.styleSheets[0].cssRules[1]; assert_equals_normalized(rule.cssText, diff --git a/tests/wpt/web-platform-tests/css/css-conditional/js/CSS-supports-L3.html b/tests/wpt/web-platform-tests/css/css-conditional/js/CSS-supports-L3.html index 4c92275d041..f94933422a3 100644 --- a/tests/wpt/web-platform-tests/css/css-conditional/js/CSS-supports-L3.html +++ b/tests/wpt/web-platform-tests/css/css-conditional/js/CSS-supports-L3.html @@ -5,6 +5,10 @@ diff --git a/tests/wpt/web-platform-tests/css/css-conditional/js/CSS-supports-L5.html b/tests/wpt/web-platform-tests/css/css-conditional/js/CSS-supports-L5.html new file mode 100644 index 00000000000..b87d6e8fdfc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-conditional/js/CSS-supports-L5.html @@ -0,0 +1,43 @@ + + +CSS.supports() Level 5 + + + + diff --git a/tests/wpt/web-platform-tests/css/css-conditional/js/CSS-supports-selector-detecting-invalid-in-forgiving-argument.html b/tests/wpt/web-platform-tests/css/css-conditional/js/CSS-supports-selector-detecting-invalid-in-forgiving-argument.html new file mode 100644 index 00000000000..4b83afc20b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-conditional/js/CSS-supports-selector-detecting-invalid-in-forgiving-argument.html @@ -0,0 +1,52 @@ + + +CSS.supports() detecting invalid in forgiving argument + + + + diff --git a/tests/wpt/web-platform-tests/css/css-conditional/js/supports-conditionText.html b/tests/wpt/web-platform-tests/css/css-conditional/js/supports-conditionText.html new file mode 100644 index 00000000000..ea74077dfd0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-conditional/js/supports-conditionText.html @@ -0,0 +1,41 @@ + + +CSSGroupingRule Conditional Rules Test + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-intrinsic.html b/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-intrinsic.html new file mode 100644 index 00000000000..5d59b6b8d99 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-intrinsic.html @@ -0,0 +1,15 @@ + +contain:inline-size with contain-intrinsic-size + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-multicol.html b/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-multicol.html index e6934232bb3..43510677f5d 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-multicol.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-multicol.html @@ -6,5 +6,6 @@

    Test passes if there is a filled green square and no red.

    -
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-removed.html b/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-removed.html new file mode 100644 index 00000000000..6e82f8c760e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-removed.html @@ -0,0 +1,19 @@ + + + +CSS Containment Test: Remove inline-size from style.contain + + + + + +

    Test passes if there is the word "PASS" below.

    +
    PASS
    + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-replaced.html b/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-replaced.html new file mode 100644 index 00000000000..b22e0063283 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-inline-size-replaced.html @@ -0,0 +1,106 @@ + + +CSS Containment Test: intrinsic size of inline-size-contained replaced elems + + + + + + + + + + +
    + + + + + + + +
    + + + + + +
    + + + + + + + +
    + + + + + + +
    +
    + +
    + + + + + + + + + + +
    + + + + + + +
    + + + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-017.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-017.html index c8118ad9748..fd74c5a5f4a 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-017.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-017.html @@ -6,10 +6,11 @@

    There should be nothing below.

    -
    FAIL
    +FAIL diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-020.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-020.html new file mode 100644 index 00000000000..655d4431d89 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-020.html @@ -0,0 +1,43 @@ + + + +CSS Containment Test: Removing layout containment and contained positioned elements + + + + + + +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-021.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-021.html new file mode 100644 index 00000000000..fcb81308284 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-021.html @@ -0,0 +1,34 @@ + + +CSS Containment Test: Layout containment fixed positioned descendants + + + + + + +
    +

    Test passes if there is a filled green square and no red.

    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-breaks-002.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-breaks-002.html index cf23ad74fe5..7b5c17ac554 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-breaks-002.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-breaks-002.html @@ -40,7 +40,7 @@ } -

    Test passes if there is a) a blue square below a yellow square and b) an orange square on the righthand side of the yellow square. +

    Test passes if there is a) a blue square below a yellow square and b) an orange square below a blue square.

    diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-013.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-013.html index d1431737352..ca11f420877 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-013.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-013.html @@ -16,7 +16,7 @@ { font-family: monospace; font-size: 100px; - height: 2.8ch; + height: 3em; line-height: 1.5; /* computes to 150px */ width: 4ch; diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-014.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-014.html index ad1c94e1610..cbb752d625e 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-014.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-014.html @@ -7,7 +7,7 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-017.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-017.html index ebdcd04fcdb..d6b6f83b3a5 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-017.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-ink-overflow-017.html @@ -7,7 +7,7 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-paint-021.html b/tests/wpt/web-platform-tests/css/css-contain/contain-paint-021.html index a8ea1c8bfc2..c1f145245d2 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-paint-021.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-paint-021.html @@ -6,10 +6,11 @@

    There should be nothing below.

    -
    FAIL
    +FAIL diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-paint-049.html b/tests/wpt/web-platform-tests/css/css-contain/contain-paint-049.html new file mode 100644 index 00000000000..49cdc9beca0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-paint-049.html @@ -0,0 +1,34 @@ + + +CSS Containment Test: Scrolling overflow works when paint is contained" + + + + + + + + +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-paint-050-ref.html b/tests/wpt/web-platform-tests/css/css-contain/contain-paint-050-ref.html new file mode 100644 index 00000000000..ebb631432d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-paint-050-ref.html @@ -0,0 +1,28 @@ + + +CSS Containment Test: Scrolling overflow works when paint is contained" + + + + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-paint-050.html b/tests/wpt/web-platform-tests/css/css-contain/contain-paint-050.html new file mode 100644 index 00000000000..a25e126921e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-paint-050.html @@ -0,0 +1,32 @@ + + +CSS Containment Test: Scrolling overflow works when paint is contained" + + + + + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-paint-clip-015.html b/tests/wpt/web-platform-tests/css/css-contain/contain-paint-clip-015.html index c9ff98a0299..9519015a53b 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/contain-paint-clip-015.html +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-paint-clip-015.html @@ -12,6 +12,7 @@ --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-parsing.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-parsing.html index e18b282e028..87b3bdd48cd 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-parsing.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-parsing.html @@ -16,35 +16,48 @@ test_valid_value('container', 'inherit'); test_valid_value('container', 'unset'); test_valid_value('container', 'revert'); test_valid_value('container', 'none'); -test_valid_value('container', 'none / none', 'none'); +test_valid_value('container', 'none / normal', 'none'); test_valid_value('container', 'inline-size'); -test_valid_value('container', 'inline-size / none', 'inline-size'); +test_valid_value('container', 'none / inline-size', 'none / inline-size'); test_valid_value('container', 'size'); -test_valid_value('container', 'size / block-size'); +test_valid_value('container', 'block-size / size'); test_valid_value('container', 'inline-size / inline-size'); test_valid_value('container', 'size / size'); -test_valid_value('container', 'size state / none', 'size state'); +test_valid_value('container', 'foo'); +test_valid_value('container', 'foo / normal', 'foo'); +test_valid_value('container', 'foo bar / size'); +test_valid_value('container', 'foo bar / normal', 'foo bar'); +test_valid_value('container', 'FOO / size'); +test_valid_value('container', 'FOO/size', 'FOO / size'); +test_valid_value('container', ' FOO /size', 'FOO / size'); +test_valid_value('container', 'normal / size'); +test_valid_value('container', 'auto / size'); test_invalid_value('container', 'none none'); test_invalid_value('container', 'none inline-size'); -test_invalid_value('container', 'inline-size none'); -test_invalid_value('container', 'inline-size inline-size'); -test_invalid_value('container', 'inline-size block-size unknown'); -test_invalid_value('container', 'inline-size block-size'); -test_invalid_value('container', 'size block-size'); +test_invalid_value('container', 'none / inline-size none'); +test_invalid_value('container', 'none / inline-size normal'); +test_invalid_value('container', 'none / inline-size inline-size'); +test_invalid_value('container', 'none / inline-size block-size unknown'); +test_invalid_value('container', 'none / inline-size block-size'); +test_invalid_value('container', 'none / size block-size'); test_invalid_value('container', 'none, none'); -test_invalid_value('container', 'foo'); -test_invalid_value('container', 'foo, bar'); +test_invalid_value('container', 'none, normal'); +test_invalid_value('container', 'none / none'); +test_invalid_value('container', 'none / auto'); +test_invalid_value('container', 'none / foo'); +test_invalid_value('container', 'none / foo, bar'); test_invalid_value('container', '#fff'); test_invalid_value('container', '1px'); test_invalid_value('container', 'default'); -test_invalid_value('container', 'inline-size / 10px'); -test_invalid_value('container', 'inline-size / #fefefe'); -test_invalid_value('container', 'inline-size / calc(3px)'); +test_invalid_value('container', '10px / inline-size'); +test_invalid_value('container', '#fefefe / inline-size'); +test_invalid_value('container', 'calc(3px) / inline-size'); test_invalid_value('container', 'size 1 / name'); -test_invalid_value('container', 'block-size'); -test_invalid_value('container', 'block-size / name'); -test_invalid_value('container', 'block-size / NAME', 'block-size / NAME'); -test_invalid_value('container', 'block-size/NAME','block-size / NAME'); +test_invalid_value('container', 'none / block-size'); +test_invalid_value('container', 'name / block-size'); +test_invalid_value('container', ' NAME / block-size', 'NAME / block-size'); +test_invalid_value('container', 'NAME/block-size','NAME / block-size'); test_invalid_value('container', 'block-size / block-size'); +test_invalid_value('container', 'none / size style'); diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-selection.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-selection.html index a797fe47470..cef20f85a2f 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-selection.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-selection.html @@ -1,5 +1,5 @@ -@container: selection using name(), type() +@container: selection using name and implicit selection @@ -24,11 +24,13 @@ .inline { container-type: inline-size; } .size { container-type: size; } - .a-inline { container: inline-size / a; } - .a-size { container: size / a; } + .a-inline { container: a / inline-size; } + .a-size { container: a / size; } - .b-size { container: inline-size / b; } - .b-size { container: size / b; } + .b-size { container: inline- b / size; } + .b-size { container: b / size; } + + .ab-size { container: a b / size; } .a { container-name: a; contain: strict; } @@ -100,6 +102,14 @@
    +
    +
    +
    + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-invalidation-after-load.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-invalidation-after-load.html new file mode 100644 index 00000000000..cf5687aa39d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-invalidation-after-load.html @@ -0,0 +1,39 @@ + +@container: invalidation of container size after load event + + + + + +
    +
    + Green +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-invalidation.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-invalidation.html index 7008d4a7157..ab269717498 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-invalidation.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-invalidation.html @@ -11,7 +11,7 @@ height: 50px; } div { color: red; } - @container size(min-width: 300px) { + @container (min-width: 300px) { div { color: green; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-nested-invalidation.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-nested-invalidation.html new file mode 100644 index 00000000000..a549f6d8482 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-nested-invalidation.html @@ -0,0 +1,62 @@ + +Nested @container-dependent elements respond to outer container size changes + + + + + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-shadow-invalidation.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-shadow-invalidation.html new file mode 100644 index 00000000000..0ee67701a23 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-size-shadow-invalidation.html @@ -0,0 +1,54 @@ + + +CSS Container Queries Test: Invalidate size container query for Shadow DOM + + + + + +
    + +
    Green
    +
    +
    +
    + +
    Green
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-computed.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-computed.html index cd5f1cbb789..0b5e033a0f3 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-computed.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-computed.html @@ -10,8 +10,9 @@ diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-invalidation.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-invalidation.html index 178c50ff1b2..90e0b4acd1d 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-invalidation.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-invalidation.html @@ -24,7 +24,7 @@ container-type: inline-size; } - @container size((max-width: 200px) or (min-width: 300px)) { + @container ((max-width: 200px) or (min-width: 300px)) { #child { color: green; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-parsing.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-parsing.html index 2ed93c20225..5805a927b32 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-parsing.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-parsing.html @@ -14,27 +14,22 @@ test_valid_value('container-type', 'initial'); test_valid_value('container-type', 'inherit'); test_valid_value('container-type', 'unset'); test_valid_value('container-type', 'revert'); -test_valid_value('container-type', 'none'); -test_valid_value('container-type', 'style'); -test_valid_value('container-type', 'state'); +test_valid_value('container-type', 'normal'); test_valid_value('container-type', 'size'); test_valid_value('container-type', 'inline-size'); -test_valid_value('container-type', 'inline-size state'); -test_valid_value('container-type', 'style state'); -test_valid_value('container-type', 'style inline-size'); -test_valid_value('container-type', 'state size'); - +test_invalid_value('container-type', 'none'); +test_invalid_value('container-type', 'auto'); test_invalid_value('container-type', 'block-size'); -test_invalid_value('container-type', 'none none'); -test_invalid_value('container-type', 'none inline-size'); -test_invalid_value('container-type', 'inline-size none'); +test_invalid_value('container-type', 'normal normal'); +test_invalid_value('container-type', 'normal inline-size'); +test_invalid_value('container-type', 'inline-size normal'); test_invalid_value('container-type', 'inline-size inline-size'); test_invalid_value('container-type', 'inline-size block-size'); test_invalid_value('container-type', 'block-size inline-size'); test_invalid_value('container-type', 'size inline-size'); test_invalid_value('container-type', 'inline-size size'); -test_invalid_value('container-type', 'none, none'); +test_invalid_value('container-type', 'normal, normal'); test_invalid_value('container-type', 'foo'); test_invalid_value('container-type', '"foo"'); test_invalid_value('container-type', 'foo, bar'); @@ -42,4 +37,8 @@ test_invalid_value('container-type', '#fff'); test_invalid_value('container-type', '1px'); test_invalid_value('container-type', 'default'); test_invalid_value('container-type', 'size nonsense'); +test_invalid_value('container-type', 'style'); +test_invalid_value('container-type', 'inline-size style', 'style inline-size'); +test_invalid_value('container-type', 'style inline-size'); +test_invalid_value('container-type', 'style size'); diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-animation.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-animation.html index 75178bb9995..cf1b9a8f345 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-animation.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-animation.html @@ -11,12 +11,12 @@ height: 200px; } - @keyframes anim_qw { from { top: 20qw; } to { top: 40qw; } } - @keyframes anim_qh { from { top: 20qh; } to { top: 40qh; } } - @keyframes anim_qi { from { top: 20qi; } to { top: 40qi; } } - @keyframes anim_qb { from { top: 20qb; } to { top: 40qb; } } - @keyframes anim_qmin { from { top: 20qmin; } to { top: 40qmin; } } - @keyframes anim_qmax { from { top: 20qmax; } to { top: 40qmax; } } + @keyframes anim_cqw { from { top: 20cqw; } to { top: 40cqw; } } + @keyframes anim_cqh { from { top: 20cqh; } to { top: 40cqh; } } + @keyframes anim_cqi { from { top: 20cqi; } to { top: 40cqi; } } + @keyframes anim_cqb { from { top: 20cqb; } to { top: 40cqb; } } + @keyframes anim_cqmin { from { top: 20cqmin; } to { top: 40cqmin; } } + @keyframes anim_cqmax { from { top: 20cqmax; } to { top: 40cqmax; } } #container > div { animation-delay: -5s; @@ -25,26 +25,26 @@ animation-timing-function: linear; } - #element_qw { animation-name: anim_qw; } - #element_qh { animation-name: anim_qh; } - #element_qi { animation-name: anim_qi; } - #element_qb { animation-name: anim_qb; } - #element_qmin { animation-name: anim_qmin; } - #element_qmax { animation-name: anim_qmax; } + #element_cqw { animation-name: anim_cqw; } + #element_cqh { animation-name: anim_cqh; } + #element_cqi { animation-name: anim_cqi; } + #element_cqb { animation-name: anim_cqb; } + #element_cqmin { animation-name: anim_cqmin; } + #element_cqmax { animation-name: anim_cqmax; }
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    @@ -35,20 +35,20 @@ } test(function() { - assert_unit_equals(child, '0qi', '0px'); - assert_unit_equals(child, '1qi', '3px'); - assert_unit_equals(child, '10qi', '30px'); - assert_unit_equals(child, '10qw', '30px'); - assert_unit_equals(child, '10qb', '40px'); - assert_unit_equals(child, '10qh', '40px'); - assert_unit_equals(child, '10qmin', '30px'); - assert_unit_equals(child, '10qmax', '40px'); + assert_unit_equals(child, '0cqi', '0px'); + assert_unit_equals(child, '1cqi', '3px'); + assert_unit_equals(child, '10cqi', '30px'); + assert_unit_equals(child, '10cqw', '30px'); + assert_unit_equals(child, '10cqb', '40px'); + assert_unit_equals(child, '10cqh', '40px'); + assert_unit_equals(child, '10cqmin', '30px'); + assert_unit_equals(child, '10cqmax', '40px'); }, 'Container relative units'); test(function() { - assert_unit_equals(child, '10qi', '30px'); - assert_unit_equals(child, '10qb', '40px'); - assert_unit_equals(child, 'calc(10qi + 10qb)', '70px'); - assert_unit_equals(child, 'max(10qi, 10qb)', '40px'); + assert_unit_equals(child, '10cqi', '30px'); + assert_unit_equals(child, '10cqb', '40px'); + assert_unit_equals(child, 'calc(10cqi + 10cqb)', '70px'); + assert_unit_equals(child, 'max(10cqi, 10cqb)', '40px'); }, 'Container relative units in math functions'); diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-computational-independence.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-computational-independence.html index 5f22a290a06..694b665c793 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-computational-independence.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-computational-independence.html @@ -8,7 +8,7 @@ + + +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-gradient-ref.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-gradient-ref.html new file mode 100644 index 00000000000..dbdabd9bc4e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-gradient-ref.html @@ -0,0 +1,21 @@ + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-gradient.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-gradient.html new file mode 100644 index 00000000000..3d6f5378c22 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-gradient.html @@ -0,0 +1,25 @@ + +Container Relative Units in gradients + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container-dynamic.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container-dynamic.html new file mode 100644 index 00000000000..c1f929241ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container-dynamic.html @@ -0,0 +1,37 @@ + +Container Relative Units: in @container prelude (dynamic) + + + + + + +
    +
    +
    Test
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container-fallback.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container-fallback.html new file mode 100644 index 00000000000..3784499c387 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container-fallback.html @@ -0,0 +1,68 @@ + +Container Relative Units: container relative units fall back to small viewport + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container.html new file mode 100644 index 00000000000..9ddca55ec15 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-in-at-container.html @@ -0,0 +1,111 @@ + +Container Relative Units: in @container prelude + + + + + + +
    +
    +
    +
    Test1
    +
    +
    +
    + +
    +
    +
    +
    Test1
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-invalidation.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-invalidation.html index 257573a9269..abb766cd0c7 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-invalidation.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-invalidation.html @@ -11,93 +11,109 @@ .w500 { width: 500px; } .h400 { height: 400px; } .w300 { width: 300px; } - #child { - padding-left: 10qi; - padding-right: 10qb; + .child { + padding-left: 10cqi; + padding-right: 10cqb; }
    -
    Test
    +
    Test
    +
    Test
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-media-queries.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-media-queries.html new file mode 100644 index 00000000000..7b76f654e5c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-media-queries.html @@ -0,0 +1,61 @@ + +Container-relative units in @media + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-selection.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-selection.html index 861381345f9..16a44cd1766 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-selection.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-selection.html @@ -43,22 +43,22 @@ test(() => { try { c1.className = 'inline w500'; // Selected by nothing. - c2.className = 'size h400 w300'; // Selected by qh, qb. - c3.className = 'inline w100'; // Selected by qw, qi. - assert_unit_equals(child, '10qw', '10px'); - assert_unit_equals(child, '10qi', '10px'); - assert_unit_equals(child, '10qh', '40px'); - assert_unit_equals(child, '10qb', '40px'); - assert_unit_equals(child, '10qmin', '10px'); - assert_unit_equals(child, '10qmax', '40px'); + c2.className = 'size h400 w300'; // Selected by cqh, cqb. + c3.className = 'inline w100'; // Selected by cqw, cqi. + assert_unit_equals(child, '10cqw', '10px'); + assert_unit_equals(child, '10cqi', '10px'); + assert_unit_equals(child, '10cqh', '40px'); + assert_unit_equals(child, '10cqb', '40px'); + assert_unit_equals(child, '10cqmin', '10px'); + assert_unit_equals(child, '10cqmax', '40px'); - c3.className = ''; // qw, qi now selects c2 instead. - assert_unit_equals(child, '10qw', '30px'); - assert_unit_equals(child, '10qi', '30px'); - assert_unit_equals(child, '10qh', '40px'); - assert_unit_equals(child, '10qb', '40px'); - assert_unit_equals(child, '10qmin', '30px'); - assert_unit_equals(child, '10qmax', '40px'); + c3.className = ''; // cqw, cqi now selects c2 instead. + assert_unit_equals(child, '10cqw', '30px'); + assert_unit_equals(child, '10cqi', '30px'); + assert_unit_equals(child, '10cqh', '40px'); + assert_unit_equals(child, '10cqb', '40px'); + assert_unit_equals(child, '10cqmin', '30px'); + assert_unit_equals(child, '10cqmax', '40px'); } finally { for (let c of [c1, c2, c3, c4, child]) @@ -69,61 +69,33 @@ test(() => { try { c1.className = 'size w500 h400'; - c2.className = 'inline w300'; - c3.className = 'inline w100 h200 vertical'; + c2.className = 'inline w300 h200'; - // Should select c2, and resolve against w300. - assert_unit_equals(child, '10qw', '30px'); - - // Should select c3, and resolve against h200. - assert_unit_equals(child, '10qi', '20px'); - - // Should select c3, and resolve against h200. - assert_unit_equals(child, '10qh', '20px'); - - // Should select c1, and resolve against h400. - assert_unit_equals(child, '10qb', '40px'); - - c3.classList.remove('vertical'); - - // Should select c3, and resolve against w100. - assert_unit_equals(child, '10qw', '10px'); - - // Should select c3, and resolve against w100. - assert_unit_equals(child, '10qi', '10px'); - - // Should select c1, and resolve against h400. - assert_unit_equals(child, '10qh', '40px'); - - // Should select c1, and resolve against h400. - assert_unit_equals(child, '10qb', '40px'); - - } finally { - for (let c of [c1, c2, c3, c4, child]) - c.className = ''; - } - }, 'Container with vertical writing mode'); - - test(() => { - try { - c1.className = 'size w500 h400'; - c2.className = 'inline w300'; - - assert_unit_equals(child, '10qw', '30px'); - assert_unit_equals(child, '10qi', '30px'); - assert_unit_equals(child, '10qh', '40px'); - assert_unit_equals(child, '10qb', '40px'); + // [cqi, cqb] corresponds to [cqw, cqh]. + assert_unit_equals(child, '10cqw', '30px'); + assert_unit_equals(child, '10cqi', '30px'); + assert_unit_equals(child, '10cqh', '40px'); + assert_unit_equals(child, '10cqb', '40px'); child.className = 'vertical'; + // [cqi, cqb] now corresponds to [cqh, cqw]. + assert_unit_equals(child, '10cqw', '30px'); + assert_unit_equals(child, '10cqi', '40px'); + assert_unit_equals(child, '10cqh', '40px'); + assert_unit_equals(child, '10cqb', '30px'); - assert_unit_equals(child, '10qw', '30px'); - assert_unit_equals(child, '10qi', '30px'); - assert_unit_equals(child, '10qh', '40px'); - assert_unit_equals(child, '10qb', '40px'); + c2.classList.add('vertical'); + // The inline containment on #c2 now applies to the vertical axis. + // [cqi, cqb] still corresponds to [cqh, cqw], but we now expect + // cqh to resolve against #c2, and cqw to resolve against #c1. + assert_unit_equals(child, '10cqw', '50px'); + assert_unit_equals(child, '10cqi', '20px'); + assert_unit_equals(child, '10cqh', '20px'); + assert_unit_equals(child, '10cqb', '50px'); } finally { for (let c of [c1, c2, c3, c4, child]) c.className = ''; } - }, 'Units are not affected by the writing-mode of the current element'); + }, 'Units respond to the writing-mode of the element'); diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-shadow.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-shadow.html new file mode 100644 index 00000000000..e605a53616b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-shadow.html @@ -0,0 +1,64 @@ + +Container Relative Units: Shadow DOM + + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-small-viewport-fallback.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-small-viewport-fallback.html new file mode 100644 index 00000000000..6c8851681fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-small-viewport-fallback.html @@ -0,0 +1,70 @@ + +Container Relative Units: fall back to small viewport + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-svglength.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-svglength.html new file mode 100644 index 00000000000..8bb227c0498 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-svglength.html @@ -0,0 +1,95 @@ + +CSS Container Queries Test: container-relative units in SVGLength + + + + + + + +
    + + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-typed-om.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-typed-om.html index 9baf12d1c90..6da3306fdfa 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-typed-om.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-units-typed-om.html @@ -9,14 +9,14 @@ diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-000-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-000-crash.html new file mode 100644 index 00000000000..f30461919a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-000-crash.html @@ -0,0 +1,6 @@ + + + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-001-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-001-crash.html new file mode 100644 index 00000000000..ce530fb2c88 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-001-crash.html @@ -0,0 +1,6 @@ + + + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1346969-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1346969-crash.html new file mode 100644 index 00000000000..37c74cf8cb1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1346969-crash.html @@ -0,0 +1,14 @@ + +Chrome crash bug 1346969 + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1362391-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1362391-crash.html new file mode 100644 index 00000000000..d4e1fec4000 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1362391-crash.html @@ -0,0 +1,8 @@ + +DCHECK failure for style recalc from layout tree rebuild + +
    +
    + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-layout-root-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-layout-root-crash.html new file mode 100644 index 00000000000..e3e709a240b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-layout-root-crash.html @@ -0,0 +1,17 @@ + + + + +

    Pass if no crash.

    +
    a
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-quotes-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-quotes-crash.html new file mode 100644 index 00000000000..363f96fd02e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-quotes-crash.html @@ -0,0 +1,11 @@ + +Container Queries Test: Quotes update outside container being laid out causes crash + + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-remove-insert-evaluator-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-remove-insert-evaluator-crash.html new file mode 100644 index 00000000000..986f6b0bf69 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-remove-insert-evaluator-crash.html @@ -0,0 +1,15 @@ + +Removing and re-inserting a container should crash + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/columns-in-table-001-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/columns-in-table-001-crash.html new file mode 100644 index 00000000000..fe421500dad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/columns-in-table-001-crash.html @@ -0,0 +1,10 @@ + +CSS Container Queries Test: TR container with multicol TD crashes Chrome + + +

    Pass if test does not crash.

    + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/columns-in-table-002-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/columns-in-table-002-crash.html new file mode 100644 index 00000000000..24b9f1aab20 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/columns-in-table-002-crash.html @@ -0,0 +1,15 @@ + +CSS Container Queries Test: container with multicol table-header-group crashes Chrome + + +

    Pass if test does not crash.

    +
    + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/container-in-canvas-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/container-in-canvas-crash.html new file mode 100644 index 00000000000..215c6a04db7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/container-in-canvas-crash.html @@ -0,0 +1,11 @@ + +Don't crash with a container query container inside canvas + + + +
    +
    +
    Test
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-change-chrome-legacy-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/container-type-change-chrome-legacy-crash.html similarity index 100% rename from tests/wpt/web-platform-tests/css/css-contain/container-queries/container-type-change-chrome-legacy-crash.html rename to tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/container-type-change-chrome-legacy-crash.html diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/flex-in-columns-000-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/flex-in-columns-000-crash.html similarity index 92% rename from tests/wpt/web-platform-tests/css/css-contain/container-queries/flex-in-columns-000-crash.html rename to tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/flex-in-columns-000-crash.html index 65d5aafe4fd..e7b789345c8 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/flex-in-columns-000-crash.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/flex-in-columns-000-crash.html @@ -2,7 +2,7 @@ +
      +
    • +
    +
    + PASS if no crash +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/math-block-container-child-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/math-block-container-child-crash.html new file mode 100644 index 00000000000..00b6836655e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/math-block-container-child-crash.html @@ -0,0 +1,14 @@ + +CSS Container Queries Test: Math block container child crash + + +

    Pass if there is no crash.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/orthogonal-replaced-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/orthogonal-replaced-crash.html new file mode 100644 index 00000000000..10474fd9841 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/orthogonal-replaced-crash.html @@ -0,0 +1,11 @@ + +Chrome crash for replaced in orthogonal flow query container + +

    Pass if no crash.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-container-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/pseudo-container-crash.html similarity index 100% rename from tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-container-crash.html rename to tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/pseudo-container-crash.html diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-layout-root-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/svg-layout-root-crash.html similarity index 93% rename from tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-layout-root-crash.html rename to tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/svg-layout-root-crash.html index 2162e5db034..75a3839add0 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-layout-root-crash.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/svg-layout-root-crash.html @@ -8,7 +8,7 @@ #container { container-type: inline-size; } - @container size(min-width: 300px) { + @container (min-width: 300px) { .hide { display: none; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/svg-text-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/svg-text-crash.html new file mode 100644 index 00000000000..aadba08679e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/svg-text-crash.html @@ -0,0 +1,8 @@ + +SVG text element with size container-type should not crash + + +

    Pass if no crash.

    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/table-in-columns-000-crash.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/table-in-columns-000-crash.html similarity index 92% rename from tests/wpt/web-platform-tests/css/css-contain/container-queries/table-in-columns-000-crash.html rename to tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/table-in-columns-000-crash.html index 7961617a3ca..566a4eb1eb2 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/table-in-columns-000-crash.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/crashtests/table-in-columns-000-crash.html @@ -2,7 +2,7 @@ +

    Test passes if there is a filled green square.

    +
    +
    +
    +
    +
    +
    +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html new file mode 100644 index 00000000000..7a11d45c313 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html @@ -0,0 +1,337 @@ + +CSS Container Queries Test: custom property style queries + + + + + +
    +
    +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-query-change.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-query-change.html new file mode 100644 index 00000000000..6669ede31da --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-query-change.html @@ -0,0 +1,89 @@ + +CSS Container Queries Test: custom property style query changes + + + + + +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/deep-nested-inline-size-containers.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/deep-nested-inline-size-containers.html new file mode 100644 index 00000000000..00bc8b0a6b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/deep-nested-inline-size-containers.html @@ -0,0 +1,38 @@ + +CSS Container Queries Test: Deeply nested inline-size container queries + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-contents.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-contents.html index 55df5df5be0..d96a46d06a8 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-contents.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-contents.html @@ -21,14 +21,14 @@ background: skyblue; } .contents { - display: none; + display: contents; } - @container size(width: 30px) { + @container (width: 30px) { .target { --x:30; } } - @container size(width: 50px) { + @container (width: 50px) { .target { --x:50; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-in-container.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-in-container.html index 1def7eebcb8..a2a4cd731c8 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-in-container.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-in-container.html @@ -18,19 +18,19 @@ } /* Note: 150px - 2px, since .container has a 1px border */ - @container size(min-width: 148px) { + @container (min-width: 148px) { div { display: flex; } span { flex: 1; } } /* Note: 200px - 2px, since .container has a 1px border */ - @container size(min-width: 198px) { + @container (min-width: 198px) { div { display: revert; } span { display: block; } } /* Should not apply: */ - @container size(min-width: 199px) { + @container (min-width: 199px) { * { color: red; background-color: red; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-none.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-none.html index cdd614c52a2..9a91b7c4091 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-none.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/display-none.html @@ -15,11 +15,18 @@ height: 30px; background: tomato; } + .small { + width: 10px; + height: 10px; + } .big { width: 50px; height: 50px; background: skyblue; } + .auto { + width: auto; + } .none { display: none; } @@ -31,11 +38,11 @@ display: none; } - @container size(width: 30px) { + @container (width: 30px) { .target { --x:30; } } - @container size(width: 50px) { + @container (width: 50px) { .target { --x:50; } } @@ -346,4 +353,25 @@ }, 'getComputedStyle on ::before when container is display:none'); + +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/fieldset-legend-change.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/fieldset-legend-change.html index dee6a960ad4..15b44a0e523 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/fieldset-legend-change.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/fieldset-legend-change.html @@ -10,7 +10,7 @@ } .wide { width: 400px; } - @container size(min-width: 300px) { + @container (min-width: 300px) { #fail { display: none; } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/font-relative-calc-dynamic.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/font-relative-calc-dynamic.html new file mode 100644 index 00000000000..54f01d45a39 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/font-relative-calc-dynamic.html @@ -0,0 +1,35 @@ + +CSS Container Queries Test: font-relative calc - dynamic + + + + + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic.html index 0c7786f7e6e..67563417d7d 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic.html @@ -4,50 +4,156 @@ + + -
    -
    -
    -
    -
    -
    + +
    +
    + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/font-relative-units.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/font-relative-units.html index cad44d580a0..59eec06d141 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/font-relative-units.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/font-relative-units.html @@ -21,18 +21,34 @@ font-size: 50px; width: 10ch; } - @container size(width: 1em) { + #ic_container { + container-type: inline-size; + font-size: 50px; + width: 10ic; + } + #lh_container { + container-type: inline-size; + line-height: 50px; + width: 10lh; + } + @container (width: 1em) { #em_test { color: green } } - @container size(width: 10rem) { + @container (width: 10rem) { #rem_test { color: green } } - @container size(width: 10ex) { + @container (width: 10ex) { #ex_test { color: green } } - @container size(width: 10ch) { + @container (width: 10ch) { #ch_test { color: green } } + @container (width: 10ic) { + #ic_test { color: green } + } + @container (width: 10lh) { + #lh_test { color: green } + }
    @@ -44,6 +60,12 @@
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/fragmented-container-001.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/fragmented-container-001.html new file mode 100644 index 00000000000..886f179054c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/fragmented-container-001.html @@ -0,0 +1,48 @@ + +CSS Container Queries Test: Query fragmented inline-size container + + + + + +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/get-animations.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/get-animations.html index ea95bb98003..dca41c6adad 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/get-animations.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/get-animations.html @@ -14,7 +14,7 @@ from { color: green; } to { color: green; } } - @container size(min-width: 200px) { + @container (min-width: 200px) { #div { animation: test 1s linear forwards; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/grid-container.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/grid-container.html new file mode 100644 index 00000000000..60278e09c69 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/grid-container.html @@ -0,0 +1,29 @@ + +CSS Container Queries Test: Grid container + + + + + +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/grid-item-container.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/grid-item-container.html new file mode 100644 index 00000000000..f1c66efc26d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/grid-item-container.html @@ -0,0 +1,38 @@ + +CSS Container Queries Test: Grid item container + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/idlharness.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/idlharness.html new file mode 100644 index 00000000000..ac1a677bb94 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/idlharness.html @@ -0,0 +1,29 @@ + +CSS Container Queries: CSSContainer Rule IDL tests + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/iframe-in-container-invalidation.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/iframe-in-container-invalidation.html new file mode 100644 index 00000000000..f43d1ce7899 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/iframe-in-container-invalidation.html @@ -0,0 +1,58 @@ + +@container-dependent elements respond to size changes of an @container-dependent iframe + + + + + +
    + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/iframe-invalidation.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/iframe-invalidation.html index 8fc81a7cac5..51f2be9cfa3 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/iframe-invalidation.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/iframe-invalidation.html @@ -17,7 +17,7 @@ height: 20px; } div#child { color: red; } - @container size(min-width: 300px) { + @container (min-width: 300px) { div#child { color: green; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/ineligible-containment.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/ineligible-containment.html index 5077508d19d..36ce68d8643 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/ineligible-containment.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/ineligible-containment.html @@ -16,7 +16,7 @@ p { color: green; } - @container size(min-width: 1px) { + @container (min-width: 1px) { p { color: red; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-and-min-width.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-and-min-width.html index 7d4ca6a57a7..8ddcbc614ca 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-and-min-width.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-and-min-width.html @@ -10,7 +10,7 @@ min-width: 200px; width: fit-content; } - @container size(min-width: 200px) { + @container (min-width: 200px) { #child { color: green } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-bfc-floats.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-bfc-floats.html index 9319cfd203a..88b81c67599 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-bfc-floats.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-bfc-floats.html @@ -23,13 +23,13 @@ beside #float2. It would at this point fit beside #float1, but that would cause the width to increase again, and the spec says layout always moves forward. */ - @container size(width < 200px) { + @container (width < 200px) { #content1 { display: none } } /* Trying to fit #container beside #float3 causes the rest of the red content (#content2) to disappear. */ - @container size(width < 150px) { + @container (width < 150px) { #content2 { display: none } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-containment-vertical-rl.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-containment-vertical-rl.html index ec19467c10e..38c88f2df79 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-containment-vertical-rl.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-containment-vertical-rl.html @@ -5,10 +5,10 @@ diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-containment.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-containment.html index 2a450537404..d519322bd27 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-containment.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inline-size-containment.html @@ -4,10 +4,10 @@ diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/inner-first-line-non-matching-ref.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inner-first-line-non-matching-ref.html new file mode 100644 index 00000000000..99e9c334bf2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inner-first-line-non-matching-ref.html @@ -0,0 +1,3 @@ + +CSS Test Reference +
    This text should be green.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/inner-first-line-non-matching.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inner-first-line-non-matching.html new file mode 100644 index 00000000000..5f39124e514 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/inner-first-line-non-matching.html @@ -0,0 +1,13 @@ + +CSS Container Queries Test: Non-matching ::first-line in @container + + + +
    +
    This text should be green.
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/layout-dependent-focus.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/layout-dependent-focus.html new file mode 100644 index 00000000000..a16370ac566 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/layout-dependent-focus.html @@ -0,0 +1,39 @@ + +CSS Container Queries: Input losing focus as a result of a size query + + + + + +
    +
    + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/multicol-container-001.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/multicol-container-001.html new file mode 100644 index 00000000000..3032170ac61 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/multicol-container-001.html @@ -0,0 +1,31 @@ + +CSS Container Queries Test: Query multicol container + + + + + +
    +
    First
    +
    Second
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/multicol-inside-container.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/multicol-inside-container.html index 0c00734a4ae..9fc8393a513 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/multicol-inside-container.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/multicol-inside-container.html @@ -8,7 +8,7 @@ width: 200px; height: 100px; } - @container size(width <= 200px) { + @container (width <= 200px) { #multicol { column-count: 2; column-gap: 0; diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/never-match-container.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/never-match-container.html new file mode 100644 index 00000000000..9d5ff6d2272 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/never-match-container.html @@ -0,0 +1,44 @@ + +CSS Container Queries Test: @container querying size of elements without layout containment + + + + + + +
    + + Not red + + + + Not red + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/orthogonal-wm-container-query.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/orthogonal-wm-container-query.html index 30e58f857cd..1ad52bf499c 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/orthogonal-wm-container-query.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/orthogonal-wm-container-query.html @@ -14,7 +14,7 @@ #orthogonal { font: 50px/1 Ahem; } - @container size(max-width: 100px) { + @container (max-width: 100px) { #orthogonal { writing-mode: vertical-lr; } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/percentage-padding-orthogonal.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/percentage-padding-orthogonal.html index 8e0922b200d..5fc591a668c 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/percentage-padding-orthogonal.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/percentage-padding-orthogonal.html @@ -30,7 +30,7 @@ #first, #second { height: 50px; } - @container size(width <= 400px) { + @container (width <= 400px) { #second { display: none; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-001.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-001.html index c5fd15f40b0..0baef0bfc2b 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-001.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-001.html @@ -15,7 +15,7 @@ height: 40px; } - @container size(min-width: 300px) { + @container (min-width: 300px) { #container1 div::before { content: "before"; } #container1 div::after { content: "after"; } #container2 li::marker { color: green; } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002-ref.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002-ref.html new file mode 100644 index 00000000000..9dc6c572b30 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002-ref.html @@ -0,0 +1,16 @@ + +CSS Test Reference +
    PASS
    +
    PASS
    +
    PASS
    +
    PASS
    +
    PASS if P is green.
    +
    PASS if P is green.
    +
    PASS if P is green.
    +
    PASS if P is green.
    +
    PASS if text is green.
    +
    PASS if text is green.
    +
    PASS if text is green.
    +
    PASS if text is green.
    +
    PASS if text is green.
    +
    PASS if text is green.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.html new file mode 100644 index 00000000000..96e7db40cef --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.html @@ -0,0 +1,76 @@ + +CSS Container Queries Test: Container for pseudo elements + + + +
    +
    +
    +
    +
    +
    PASS if P is green.
    +
    +
    +
    PASS if P is green.
    +
    +
    +
    PASS if P is green.
    +
    +
    +
    PASS if P is green.
    +
    +
    +
    PASS if text is green.
    +
    +
    +
    PASS if text is green.
    +
    +
    +
    PASS if text is green.
    +
    +
    +
    PASS if text is green.
    +
    +
    PASS if text is green.
    +
    PASS if text is green.
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.tentative-ref.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.tentative-ref.html deleted file mode 100644 index 66bddf379d1..00000000000 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.tentative-ref.html +++ /dev/null @@ -1,14 +0,0 @@ - -CSS Test Reference -
    PASS
    -
    PASS
    -
    PASS
    -
    PASS
    -
    PASS if P is green.
    -
    PASS if P is green.
    -
    PASS if P is green.
    -
    PASS if P is green.
    -
    PASS if text is green.
    -
    PASS if text is green.
    -
    PASS if text is green.
    -
    PASS if text is green.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.tentative.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.tentative.html deleted file mode 100644 index e46d25cf875..00000000000 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-002.tentative.html +++ /dev/null @@ -1,68 +0,0 @@ - -CSS Container Queries Test: Container for pseudo elements - - - -
    -
    -
    -
    -
    -
    PASS if P is green.
    -
    -
    -
    PASS if P is green.
    -
    -
    -
    PASS if P is green.
    -
    -
    -
    PASS if P is green.
    -
    -
    -
    PASS if text is green.
    -
    -
    -
    PASS if text is green.
    -
    -
    -
    PASS if text is green.
    -
    -
    -
    PASS if text is green.
    -
    - diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.html new file mode 100644 index 00000000000..fe68898b38e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.html @@ -0,0 +1,68 @@ + +@container: originating element container for pseudo elements + + + + + +
    +
    +
    First-line
    + +
    +
    +
    +
    First-line
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative.html deleted file mode 100644 index 7d03dc04b9c..00000000000 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative.html +++ /dev/null @@ -1,68 +0,0 @@ - -@container: originating element container for pseudo elements - - - - - -
    -
    -
    First-line
    - -
    -
    -
    -
    First-line
    -
    -
    - diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-004.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-004.html new file mode 100644 index 00000000000..db199f22050 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-004.html @@ -0,0 +1,52 @@ + +@container: originating element container for pseudo elements + + + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-005.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-005.html new file mode 100644 index 00000000000..575b66d6f83 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/pseudo-elements-005.html @@ -0,0 +1,58 @@ + +CSS Container Queries Test: Style container for pseudo elements + + + + + +
    + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/query-content-box.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/query-content-box.html index 574456149a7..5f6cc9fdbe0 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/query-content-box.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/query-content-box.html @@ -38,7 +38,7 @@ overflow: scroll; } - @container size((width = 100px) and (height = 100px)) { + @container ((width = 100px) and (height = 100px)) { .target { background-color: green; height: 100%; diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/query-evaluation.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/query-evaluation.html index 50ae75d4c0a..67139d02d98 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/query-evaluation.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/query-evaluation.html @@ -35,94 +35,102 @@ // and "unknown" are arbitrarily chosen to represent true, false, and // unknown values, respectively. - test_query('size(width)', true); - test_query('size(height)', false); - test_query('size(unknown)', false); + test_query('(width)', true); + test_query('(height)', false); + test_query('(unknown)', false); test_query('unknown(width)', false); // Nesting in : - test_query('(size(width))', true); - test_query('(size(height))', false); - test_query('(size(unknown))', false); - test_query('(((size(width))))', true); - test_query('(((size(height))))', false); - test_query('(((size(unknown))))', false); + test_query('((width))', true); + test_query('((height))', false); + test_query('((unknown))', false); + test_query('((((width))))', true); + test_query('((((height))))', false); + test_query('((((unknown))))', false); // "not" in : - test_query('(not size(width))', false); - test_query('(not size(height))', true); - test_query('(not size(unknown))', false); + test_query('(not (width))', false); + test_query('(not (height))', true); + test_query('(not (unknown))', false); test_query('(not unknown(width))', false); // "and" in : - test_query('(size(width) and size(width))', true); - test_query('(size(width) and size(width) and size(width))', true); - test_query('(size(height) and size(height))', false); - test_query('(size(height) and size(width) and size(width))', false); - test_query('(size(width) and size(height) and size(width))', false); - test_query('(size(width) and size(width) and size(height))', false); - test_query('(size(unknown) and size(width) and size(width))', false); - test_query('(size(width) and size(unknown) and size(width))', false); - test_query('(size(width) and size(width) and size(unknown))', false); + test_query('((width) and (width))', true); + test_query('((width) and (width) and (width))', true); + test_query('((height) and (height))', false); + test_query('((height) and (width) and (width))', false); + test_query('((width) and (height) and (width))', false); + test_query('((width) and (width) and (height))', false); + test_query('((unknown) and (width) and (width))', false); + test_query('((width) and (unknown) and (width))', false); + test_query('((width) and (width) and (unknown))', false); // "or" in : - test_query('(size(width) or size(width))', true); - test_query('(size(width) or size(width) or size(width))', true); - test_query('(size(height) or size(height))', false); - test_query('(size(height) or size(width) or size(width))', true); - test_query('(size(width) or size(height) or size(width))', true); - test_query('(size(width) or size(width) or size(height))', true); - test_query('(size(unknown) or size(width) or size(width))', true); - test_query('(size(width) or size(unknown) or size(width))', true); - test_query('(size(width) or size(width) or size(unknown))', true); - test_query('(size(unknown) or size(height) or size(width))', true); + test_query('((width) or (width))', true); + test_query('((width) or (width) or (width))', true); + test_query('((height) or (height))', false); + test_query('((height) or (width) or (width))', true); + test_query('((width) or (height) or (width))', true); + test_query('((width) or (width) or (height))', true); + test_query('((unknown) or (width) or (width))', true); + test_query('((width) or (unknown) or (width))', true); + test_query('((width) or (width) or (unknown))', true); + test_query('((unknown) or (height) or (width))', true); // Combinations, : - test_query('(not (size(width) and size(width)))', false); - test_query('(not (size(width) and size(height)))', true); - test_query('(size(width) and (not (size(height) or size(width))))', false); - test_query('(size(height) or (not (size(height) and size(width))))', true); - test_query('(size(height) or (size(height) and size(width)))', false); + test_query('(not ((width) and (width)))', false); + test_query('(not ((width) and (height)))', true); + test_query('((width) and (not ((height) or (width))))', false); + test_query('((height) or (not ((height) and (width))))', true); + test_query('((height) or ((height) and (width)))', false); - // Nesting in : - test_query('size((width))', true); - test_query('size((height))', false); - test_query('size((unknown))', false); - test_query('unknown((width))', false); + // Note that the following assumes that elements are style containers by + // default [1], and that: + // + // - style(width: 1px) is a query that returns 'true', and + // - style(height: 2px) is a query that returns 'false'. + // + // [1] https://github.com/w3c/csswg-drafts/issues/7066 - // "not" in : - test_query('size(not (width))', false); - test_query('size(not (height))', true); - test_query('size(not (unknown))', false); + // Nesting in : + test_query('style((width: 1px))', true); + test_query('style((height: 2px))', false); + test_query('style((unknown))', false); + test_query('unknown((width: 1px))', false); - // "and" in : - test_query('size((width) and (width))', true); - test_query('size((width) and (width) and (width))', true); - test_query('size((height) and (height))', false); - test_query('size((height) and (width) and (width))', false); - test_query('size((width) and (height) and (width))', false); - test_query('size((width) and (width) and (height))', false); - test_query('size((unknown) and (width) and (width))', false); - test_query('size((width) and (unknown) and (width))', false); - test_query('size((width) and (width) and (unknown))', false); + // "not" in : + test_query('style(not (width: 1px))', false); + test_query('style(not (height: 2px))', true); + test_query('style(not (unknown))', false); - // "or" in : - test_query('size((width) or (width))', true); - test_query('size((width) or (width) or (width))', true); - test_query('size((height) or (height))', false); - test_query('size((height) or (width) or (width))', true); - test_query('size((width) or (height) or (width))', true); - test_query('size((width) or (width) or (height))', true); - test_query('size((unknown) or (width) or (width))', true); - test_query('size((width) or (unknown) or (width))', true); - test_query('size((width) or (width) or (unknown))', true); - test_query('size((unknown) or (height) or (width))', true); + // "and" in : + test_query('style((width: 1px) and (width: 1px))', true); + test_query('style((width: 1px) and (width: 1px) and (width: 1px))', true); + test_query('style((height: 2px) and (height: 2px))', false); + test_query('style((height: 2px) and (width: 1px) and (width: 1px))', false); + test_query('style((width: 1px) and (height: 2px) and (width: 1px))', false); + test_query('style((width: 1px) and (width: 1px) and (height: 2px))', false); + test_query('style((unknown) and (width: 1px) and (width: 1px))', false); + test_query('style((width: 1px) and (unknown) and (width: 1px))', false); + test_query('style((width: 1px) and (width: 1px) and (unknown))', false); - // Combinations, : - test_query('size(not ((width) and (width)))', false); - test_query('size(not ((width) and (height)))', true); - test_query('size((width) and (not ((height) or (width))))', false); - test_query('size((height) or (not ((height) and (width))))', true); - test_query('size((height) or ((height) and (width)))', false); + // "or" in : + test_query('style((width: 1px) or (width: 1px))', true); + test_query('style((width: 1px) or (width: 1px) or (width: 1px))', true); + test_query('style((height: 2px) or (height: 2px))', false); + test_query('style((height: 2px) or (width: 1px) or (width: 1px))', true); + test_query('style((width: 1px) or (height: 2px) or (width: 1px))', true); + test_query('style((width: 1px) or (width: 1px) or (height: 2px))', true); + test_query('style((unknown) or (width: 1px) or (width: 1px))', true); + test_query('style((width: 1px) or (unknown) or (width: 1px))', true); + test_query('style((width: 1px) or (width: 1px) or (unknown))', true); + test_query('style((unknown) or (height: 2px) or (width: 1px))', true); + + // Combinations, : + test_query('style(not ((width: 1px) and (width: 1px)))', false); + test_query('style(not ((width: 1px) and (height: 2px)))', true); + test_query('style((width: 1px) and (not ((height: 2px) or (width: 1px))))', false); + test_query('style((height: 2px) or (not ((height: 2px) and (width: 1px))))', true); + test_query('style((height: 2px) or ((height: 2px) and (width: 1px)))', false); diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/reattach-container-with-dirty-child.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/reattach-container-with-dirty-child.html index 0cdf5716a61..680d9caa84a 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/reattach-container-with-dirty-child.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/reattach-container-with-dirty-child.html @@ -8,10 +8,10 @@ #container { container-type: inline-size; } - @container size(min-width: 200px) { + @container (min-width: 200px) { div { color: red } } - @container size(max-width: 150px) { + @container (max-width: 150px) { div { color: lime } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/resize-while-content-visibility-hidden.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/resize-while-content-visibility-hidden.html index 4b8ae7d83f9..a3658f7f34f 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/resize-while-content-visibility-hidden.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/resize-while-content-visibility-hidden.html @@ -26,7 +26,7 @@ #container.wide { width: 500px; } .locked { content-visibility: hidden; } -@container container size(min-width: 400px) { #child { background: green; } } +@container container (min-width: 400px) { #child { background: green; } }
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/sibling-layout-dependency.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/sibling-layout-dependency.html new file mode 100644 index 00000000000..5e30a998d23 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/sibling-layout-dependency.html @@ -0,0 +1,134 @@ + +@container-dependent styles respond to layout changes + + + + + + + + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    XX
    +
    + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box.html index cc409b4597e..a1b875918bd 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box.html @@ -16,10 +16,10 @@ display: contents; container-type: inline-size; } - @container size(min-width: 0) { + @container (min-width: 0) { span { color: red; } } - @container size(min-width: 0) { + @container (min-width: 0) { #ref { color: green; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/size-feature-evaluation.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/size-feature-evaluation.html index e558d831698..600a266fce2 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/size-feature-evaluation.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/size-feature-evaluation.html @@ -53,39 +53,39 @@ function test_evaluation(container_class, query, expected) { let logical_width = (cls == 'horizontal') ? 'inline' : 'block'; let logical_height = (cls == 'horizontal') ? 'block' : 'inline'; - test_evaluation(cls, 'size(width < 100px)', false); - test_evaluation(cls, 'size(width >= 100px)', true); - test_evaluation(cls, 'size(min-width: 100px)', true); - test_evaluation(cls, 'size(min-width: 101px)', false); - test_evaluation(cls, 'size(max-width: 100px)', true); - test_evaluation(cls, 'size(max-width: 99px)', false); + test_evaluation(cls, '(width < 100px)', false); + test_evaluation(cls, '(width >= 100px)', true); + test_evaluation(cls, '(min-width: 100px)', true); + test_evaluation(cls, '(min-width: 101px)', false); + test_evaluation(cls, '(max-width: 100px)', true); + test_evaluation(cls, '(max-width: 99px)', false); - test_evaluation(cls, 'size(height < 200px)', false); - test_evaluation(cls, 'size(height >= 200px)', true); - test_evaluation(cls, 'size(min-height: 200px)', true); - test_evaluation(cls, 'size(min-height: 201px)', false); - test_evaluation(cls, 'size(max-height: 200px)', true); - test_evaluation(cls, 'size(max-height: 199px)', false); + test_evaluation(cls, '(height < 200px)', false); + test_evaluation(cls, '(height >= 200px)', true); + test_evaluation(cls, '(min-height: 200px)', true); + test_evaluation(cls, '(min-height: 201px)', false); + test_evaluation(cls, '(max-height: 200px)', true); + test_evaluation(cls, '(max-height: 199px)', false); - test_evaluation(cls, `size(${logical_width}-size < 100px)`, false); - test_evaluation(cls, `size(${logical_width}-size >= 100px)`, true); - test_evaluation(cls, `size(min-${logical_width}-size: 100px)`, true); - test_evaluation(cls, `size(min-${logical_width}-size: 101px)`, false); - test_evaluation(cls, `size(max-${logical_width}-size: 100px)`, true); - test_evaluation(cls, `size(max-${logical_width}-size: 99px)`, false); + test_evaluation(cls, `(${logical_width}-size < 100px)`, false); + test_evaluation(cls, `(${logical_width}-size >= 100px)`, true); + test_evaluation(cls, `(min-${logical_width}-size: 100px)`, true); + test_evaluation(cls, `(min-${logical_width}-size: 101px)`, false); + test_evaluation(cls, `(max-${logical_width}-size: 100px)`, true); + test_evaluation(cls, `(max-${logical_width}-size: 99px)`, false); - test_evaluation(cls, `size(${logical_height}-size < 200px)`, false); - test_evaluation(cls, `size(${logical_height}-size >= 200px)`, true); - test_evaluation(cls, `size(min-${logical_height}-size: 200px)`, true); - test_evaluation(cls, `size(min-${logical_height}-size: 201px)`, false); - test_evaluation(cls, `size(max-${logical_height}-size: 200px)`, true); - test_evaluation(cls, `size(max-${logical_height}-size: 199px)`, false); + test_evaluation(cls, `(${logical_height}-size < 200px)`, false); + test_evaluation(cls, `(${logical_height}-size >= 200px)`, true); + test_evaluation(cls, `(min-${logical_height}-size: 200px)`, true); + test_evaluation(cls, `(min-${logical_height}-size: 201px)`, false); + test_evaluation(cls, `(max-${logical_height}-size: 200px)`, true); + test_evaluation(cls, `(max-${logical_height}-size: 199px)`, false); - test_evaluation(cls, 'size(orientation: landscape)', false); - test_evaluation(cls, 'size(orientation: portrait)', true); + test_evaluation(cls, '(orientation: landscape)', false); + test_evaluation(cls, '(orientation: portrait)', true); - test_evaluation(cls, 'size(aspect-ratio: 1/2)', true); - test_evaluation(cls, 'size(aspect-ratio: 2/1)', false); + test_evaluation(cls, '(aspect-ratio: 1/2)', true); + test_evaluation(cls, '(aspect-ratio: 2/1)', false); } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/style-change-in-container.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/style-change-in-container.html index 82a830cc502..ed4baa7e8b6 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/style-change-in-container.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/style-change-in-container.html @@ -6,7 +6,7 @@ @@ -16,6 +16,8 @@ + + + + + +
    +
    Green
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-foreignobject-no-size-container-ref.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-foreignobject-no-size-container-ref.html new file mode 100644 index 00000000000..abf1af122ba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-foreignobject-no-size-container-ref.html @@ -0,0 +1,4 @@ + +CSS Test Reference +

    You should see the word PASS below and no red.

    +
    PASS
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-foreignobject-no-size-container.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-foreignobject-no-size-container.html new file mode 100644 index 00000000000..38fc493a162 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-foreignobject-no-size-container.html @@ -0,0 +1,24 @@ + +CSS Container Queries Test: SVG <foreignObject> element not a size query container + + + +

    You should see the word PASS below and no red.

    + + +
    PASS
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-g-no-size-container-ref.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-g-no-size-container-ref.html new file mode 100644 index 00000000000..4f30c399399 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-g-no-size-container-ref.html @@ -0,0 +1,4 @@ + +CSS Test Reference +

    You should see the word PASS below and no red.

    +PASS diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-g-no-size-container.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-g-no-size-container.html new file mode 100644 index 00000000000..ed9e8536767 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-g-no-size-container.html @@ -0,0 +1,23 @@ + +CSS Container Queries Test: SVG <g> element not a size query container + + + +

    You should see the word PASS below and no red.

    + + PASS + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-root-size-container.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-root-size-container.html new file mode 100644 index 00000000000..70ce40c0bce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/svg-root-size-container.html @@ -0,0 +1,36 @@ + +CSS Container Queries Test: SVG root as a size query container + + + + + + + Green + +
    Green
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/table-inside-container-changing-display.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/table-inside-container-changing-display.html index bdb99c18241..33a4f4fe721 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/table-inside-container-changing-display.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/table-inside-container-changing-display.html @@ -3,8 +3,18 @@ +

    You should see the word PASS below.

    -
    +
    PASS
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-backdrop.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-backdrop.html index 20c78d58e27..25635167a54 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-backdrop.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-backdrop.html @@ -5,7 +5,7 @@ diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-dialog.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-dialog.html index 0983d49a937..9d18b1862d1 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-dialog.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-dialog.html @@ -11,10 +11,10 @@ dialog { color: red; } - @container size(max-width: 200px) { + @container (max-width: 200px) { dialog { color: green; } } - @container size(max-width: 100px) { + @container (max-width: 100px) { dialog { color: lime; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog.html index 5649ad4b0e4..1a6d573f24f 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog.html @@ -8,10 +8,10 @@ dialog { color: red; } #container { width: 100px; } #container, #outer { container-type: inline-size; } - @container size(min-width: 200px) { + @container (min-width: 200px) { #outer { width: 400px; color: lime; } } - @container size(min-width: 400px) { + @container (min-width: 400px) { #inner { color: green; } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/transition-scrollbars.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/transition-scrollbars.html index 33734eb8b05..60d82d26b4a 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/transition-scrollbars.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/transition-scrollbars.html @@ -19,14 +19,14 @@ } /* Matches with or without a scrollbar: */ - @container size(max-width: 100px) { + @container (max-width: 100px) { #target { background-color: blue; } } /* Matches only when there's a scrollbar: */ - @container size(max-width: 99px) { + @container (max-width: 99px) { #target { background-color: green; font-size: 10px; diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/transition-style-change-event.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/transition-style-change-event.html index f10e58c26e3..4cc1772979d 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/transition-style-change-event.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/transition-style-change-event.html @@ -12,10 +12,10 @@ width: 100px; color: green; } - @container size(min-width: 200px) { + @container (min-width: 200px) { #inner { color: red } } - @container size(min-width: 400px) { + @container (min-width: 400px) { #target { color: green; transition: color 1s step-start; diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/unsupported-axis.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/unsupported-axis.html index 9ab91f81eaa..28e111f915b 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/unsupported-axis.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/unsupported-axis.html @@ -24,19 +24,19 @@ @@ -45,77 +45,75 @@ // container-type:inline-size does not support queries along the block // axis. assert_equals(getComputedStyle(target).getPropertyValue('--height'), ''); - }, 'size(height > 0px)'); + }, '(height > 0px)'); @@ -126,24 +124,24 @@ t.add_cleanup(() => { target.style = ''; }); target.style.contain = 'size'; assert_equals(getComputedStyle(target).getPropertyValue('--height-or-orientation2'), ''); - }, 'size((height > 0px) or (orientation: landscape)), with contain:size'); + }, '((height > 0px) or (orientation: landscape)), with contain:size'); @@ -152,12 +150,12 @@ // container-type:inline-size does not support queries along the block // axis. assert_equals(getComputedStyle(target).getPropertyValue('--block-size'), ''); - }, 'size(block-size > 0px)'); + }, '(block-size > 0px)'); @@ -167,5 +165,5 @@ t.add_cleanup(() => { target.style = ''; }); target.style.writingMode = 'vertical-rl'; assert_equals(getComputedStyle(target).getPropertyValue('--block-size2'), ''); - }, 'size(block-size > 0px), with writing-mode:vertical-rl'); + }, '(block-size > 0px), with writing-mode:vertical-rl'); diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/viewport-units-dynamic.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/viewport-units-dynamic.html index 092c4e4bee4..2339533deee 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/viewport-units-dynamic.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/viewport-units-dynamic.html @@ -17,16 +17,16 @@ width: 100px; } - @container size(min-width: 50vw) { + @container (min-width: 50vw) { #vw span { color: green } } - @container size(min-width: 100vw) { + @container (min-width: 100vw) { #vw span { color: red } } - @container size(min-width: 50vh) { + @container (min-width: 50vh) { #vh span { color: green } } - @container size(min-width: 100vh) { + @container (min-width: 100vh) { #vh span { color: red } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/viewport-units.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/viewport-units.html index 68546258ca5..9b8bb42c434 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/viewport-units.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/viewport-units.html @@ -8,16 +8,16 @@ #vw { container-type: inline-size; width: 10vw; } #vh { container-type: inline-size; width: 10vh; } - @container size(min-width: 10vw) { + @container (min-width: 10vw) { #vw span { color: green } } - @container size(min-width: 11vw) { + @container (min-width: 11vw) { #vw span { color: red } } - @container size(min-width: 10vh) { + @container (min-width: 10vh) { #vh span { color: green } } - @container size(min-width: 11vh) { + @container (min-width: 11vh) { #vh span { color: red } } diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/whitespace-update-after-removal.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/whitespace-update-after-removal.html index de07f069ce8..a7df55efc6e 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/whitespace-update-after-removal.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/whitespace-update-after-removal.html @@ -9,16 +9,18 @@ height: 200px; } - @container size(min-width: 400px) { + @container (min-width: 400px) { span { color: red; } }

    You should see the word PASS below.

    FAIL PASS
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/animation-display-lock.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/animation-display-lock.html index d30cf0df2cd..7960ba0f59d 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/animation-display-lock.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/animation-display-lock.html @@ -70,7 +70,7 @@ promise_test(async t => { 'display locked subtree'); await waitForAnimationFrames(2); assert_false(animationIterationEvent, - 'Animation events do no fire while the animation is ' + + 'Animation events do not fire while the animation is ' + 'running in a display locked subtree'); container.style.contentVisibility = 'visible'; await waitForAnimationFrames(2); @@ -144,30 +144,44 @@ promise_test(async t => { target.className = ''; container.style.contentVisibility = 'hidden'; assert_equals(target.getAnimations().length, 0); - let animationStartEvent = false; - let animationFinished = false; - target.addEventListener('animationstart', () => { - animationStartEvent = true; - }); + // Though originally a CSS animation, it is no longer associated with // CSS rules and no longer has an owning element. It now behaves like a - // programmatic web animation. Events should be dispatched and promises - // resolved despite being in a display locked subtree. - animation.play(); + // programmatic web animation. Animation playback events (but not CSS + // animation events) should be dispatched and promises resolved despite + // being in a display locked subtree. + + let cssAnimationEndEvent = false; + target.addEventListener('animationend', () => { + cssAnimationEndEvent = true; + }); + + let animationFinishEvent = false; + animation.addEventListener('finish', () => { + animationFinishEvent = true; + }); + + let animationFinished = false; animation.finished.then(() => { animationFinished = true; }); + + animation.play(); assert_equals(target.getAnimations().length, 1); + + animation.currentTime = 1999; await animation.ready; await waitForAnimationFrames(2); - assert_true(animationStartEvent, + + assert_true(animationFinishEvent, 'Animation event not blocked on display locked subtree if ' + 'no owning element'); - animation.currentTime = 1999; - await waitForAnimationFrames(2); assert_true(animationFinished, 'Finished promise not blocked on display locked subtrtee if ' + 'no owning element'); + assert_false(cssAnimationEndEvent, + 'CSS animation events should not be dispatched if there is no ' + + 'owning element'); }, 'Events and promises are handled normally for animations without an ' + 'owning element'); diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/container-focus-ref.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/container-focus-ref.html index bbb41abe93d..402b689010d 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/container-focus-ref.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/container-focus-ref.html @@ -13,6 +13,7 @@ } +

    Test passes if the light blue box below has focus.

    @@ -21,12 +21,12 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: green; } diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-003-ref.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-003-ref.html index 6b2a227cde4..c5dd2eab6c9 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-003-ref.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-003-ref.html @@ -15,6 +15,8 @@ } +

    Test passes if there is a solid green square below. +

    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-003.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-003.html index 5109c720b4b..d3cc902b90f 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-003.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-003.html @@ -5,7 +5,7 @@ - + +

    Test passes if there is a solid green square below. +

    Text
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-004-ref.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-004-ref.html index 5b094cdc5d8..ac48a2a0f07 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-004-ref.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-004-ref.html @@ -5,5 +5,7 @@ +

    Test passes if the word “Fail†does not appear in the box below.

    + diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-004.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-004.html index b02d0a82468..7091dd930dd 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-004.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-004.html @@ -5,7 +5,9 @@ - + + +

    Test passes if the word “Fail†does not appear in the box below.

    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-005.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-005.html index 06e8eb89251..7b4a791cc7e 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-005.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-005.html @@ -21,12 +21,12 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: red; }
    - Text. + Test fails if you can see this text or a red box.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-006.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-006.html index 5c51a1fcd85..8a0a3db0d10 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-006.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-006.html @@ -22,12 +22,12 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: red; }
    - Text. + Test fails if you can see this text or a red box.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-007.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-007.html index 087900e0b18..eec9b1d900c 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-007.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-007.html @@ -21,13 +21,13 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: red; will-change: transform; }
    - Text. + Test fails if you can see this text or a red box.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-008.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-008.html index 40d7265aca4..fec85498793 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-008.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-008.html @@ -22,13 +22,13 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: red; will-change: transform; }
    - Text. + Test fails if you can see this text or a red box.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-009.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-009.html index 30944e391dc..d65a4752336 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-009.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-009.html @@ -26,12 +26,12 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: red; }
    - Text. + Test fails if you can see this text or a red box.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-010.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-010.html index 8d3f054ac10..a613bf2754d 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-010.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-010.html @@ -26,12 +26,12 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: red; }
    - Text. + Test fails if you can see this text or a red box.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-011.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-011.html index ea0decb06c7..c69c36900f6 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-011.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-011.html @@ -26,12 +26,12 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: red; }
    - Text. + Test fails if you can see this text or a red box below.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-012.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-012.html index fab0ded7c1a..6a52890256a 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-012.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-012.html @@ -5,7 +5,7 @@ - + @@ -22,12 +22,12 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: green; } diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-013.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-013.html index fc692ce17e7..18c8b9dfeec 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-013.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-013.html @@ -5,7 +5,7 @@ - + @@ -21,13 +21,13 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: green; will-change: transform; } diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-014.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-014.html index b757c50c6c1..e3ee8af0878 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-014.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-014.html @@ -5,7 +5,7 @@ - + @@ -22,13 +22,13 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: green; will-change: transform; } diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-019-ref.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-019-ref.html index 2ac2507faa1..09356a3b614 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-019-ref.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-019-ref.html @@ -8,9 +8,10 @@ -
    lorem ipsum
    +
    Test passes if there is a box with no text below.
    -
    consectetur adipiscing elit
    +
    Test passes if there is a box with no text above.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-019.sub.https.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-019.sub.https.html index 9e91f474d0c..19497af007f 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-019.sub.https.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-019.sub.https.html @@ -11,15 +11,16 @@ -
    lorem ipsum
    +
    Test passes if there is a box with no text below.
    -
    consectetur adipiscing elit
    +
    Test passes if there is a box with no text above.
    - Text. + Test fails if you see this text or a red box.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-046.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-046.html index 4d3875270e7..6f1cd28e397 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-046.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-046.html @@ -17,7 +17,7 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: green; } .auto { content-visibility: auto; @@ -25,7 +25,7 @@
    - Text. + Test passes if you can see this text and a green box.
    diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-047.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-047.html index 8a3cde252f0..bb5399280d1 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-047.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-047.html @@ -27,23 +27,22 @@ diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-051.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-051.html index d85d6a4b005..15718cad32c 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-051.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-051.html @@ -22,14 +22,14 @@ #child { width: 50px; height: 50px; - background: lightgreen; + background: red; }
    - Text. + Test fails if you see this text or a red box.
    - inline child + Fail.
    -
    a b c d e f
    -
    base
    -
    abc
    +
    +
    base
    +
    abc
    +
    stretch
    a b c d e f
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-align-self-vert-rtl-001.xhtml b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-align-self-vert-rtl-001.xhtml index 921b37212b4..a32ed619c88 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-align-self-vert-rtl-001.xhtml +++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-align-self-vert-rtl-001.xhtml @@ -12,6 +12,7 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-definite-cross-size-constrained-percentage.html b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-definite-cross-size-constrained-percentage.html new file mode 100644 index 00000000000..ae0836fdad6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-definite-cross-size-constrained-percentage.html @@ -0,0 +1,26 @@ + + + + + + + + Flex item cross size set by definite flex container size with percentage height + + +
    +
    + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-flex-direction-column-reverse.htm b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-flex-direction-column-reverse.htm index 31fe1bb9ba7..aeff3f7cc1a 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-flex-direction-column-reverse.htm +++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-flex-direction-column-reverse.htm @@ -6,7 +6,6 @@ - -

    Test passes if there are a (vertically centered) 20x20 and a 60x100 green boxes enclosed on each 100x100 square.

    +

    Test passes if there are two 100x100 green squares.

    @@ -42,4 +34,4 @@
    -
    \ No newline at end of file +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-order-from-lowest.html b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-order-from-lowest.html index 34bc0276019..b4adcf40d67 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-order-from-lowest.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-order-from-lowest.html @@ -5,7 +5,6 @@ - - +This test makes sure that the flex-direction: row-reverse CSS property correctly orders items. +
      -
    • EFGH
    • ABCD
    • IJKL
    • +EFGHABCDIJKL
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_direction-row-reverse.html b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_direction-row-reverse.html index 8cc1ab1dec8..501cd0d5145 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_direction-row-reverse.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_direction-row-reverse.html @@ -1,32 +1,29 @@ flexbox | flex-direction: row-reverse - + + - -
      -
    • IJKL
    • -
    • ABCD
    • -
    • EFGH
    • -
    +This test makes sure that the flex-direction: row-reverse CSS property correctly orders items. +
      +
    • IJKL
    • +
    • ABCD
    • +
    • EFGH
    • +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_object-ref.html b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_object-ref.html index 3c38d720dc5..8f3dd28e3e6 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_object-ref.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_object-ref.html @@ -11,9 +11,13 @@ div>* { background: #3366cc; margin: 0; } + +.clip { + overflow: clip; +}
    -

    this is supposed to be a flex item

    +

    this is supposed to be a flex item

    this is supposed to be a flex item

    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_object.html b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_object.html index 22dbe665368..701af7b78b6 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_object.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_object.html @@ -14,6 +14,10 @@ div>* { background: #3366cc; margin: 0; } + +object { + overflow: clip; +}
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/frame-flex-item-crash.html b/tests/wpt/web-platform-tests/css/css-flexbox/frame-flex-item-crash.html new file mode 100644 index 00000000000..c677744ff29 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/frame-flex-item-crash.html @@ -0,0 +1,8 @@ + + + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/gap-001-lr.html b/tests/wpt/web-platform-tests/css/css-flexbox/gap-001-lr.html index 99333ef3816..cb4ea49d76d 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/gap-001-lr.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox/gap-001-lr.html @@ -6,7 +6,6 @@ - + +

    Test passes if there is a filled green square and no red. +

    + +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-002.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-002.html new file mode 100644 index 00000000000..0e61cf78462 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-002.html @@ -0,0 +1,35 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    + +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-003.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-003.html new file mode 100644 index 00000000000..518bf9f6584 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-003.html @@ -0,0 +1,34 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    + +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-004.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-004.html new file mode 100644 index 00000000000..00cfa520690 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-004.html @@ -0,0 +1,30 @@ + + + + + + + + + + + +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-005.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-005.html new file mode 100644 index 00000000000..a753619c62f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-005.html @@ -0,0 +1,39 @@ + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-006.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-006.html new file mode 100644 index 00000000000..52560057c83 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-006.html @@ -0,0 +1,37 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    + +
    + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-007.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-007.html new file mode 100644 index 00000000000..7f50f504569 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-007.html @@ -0,0 +1,34 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    + +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-008.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-008.html new file mode 100644 index 00000000000..5edde9495d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-008.html @@ -0,0 +1,34 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    + +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-009.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-009.html new file mode 100644 index 00000000000..62514dbcffe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-009.html @@ -0,0 +1,38 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    + +
    +
    + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-010.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-010.html new file mode 100644 index 00000000000..2458443f065 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-010.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-011.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-011.html new file mode 100644 index 00000000000..9970d43d0cd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-011.html @@ -0,0 +1,36 @@ + + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    + +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-012.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-012.html new file mode 100644 index 00000000000..a46ceea2ec4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-012.html @@ -0,0 +1,39 @@ + + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-013.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-013.html new file mode 100644 index 00000000000..d8eab3f1331 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-013.html @@ -0,0 +1,26 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red. + +

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-014.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-014.html new file mode 100644 index 00000000000..5861d829b58 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-014.html @@ -0,0 +1,26 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red. + +

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-015.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-015.html new file mode 100644 index 00000000000..23b762f36a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-015.html @@ -0,0 +1,39 @@ + + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    +
    + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-016.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-016.html new file mode 100644 index 00000000000..a013bbd3566 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-016.html @@ -0,0 +1,38 @@ + + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    +
    + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-017.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-017.html new file mode 100644 index 00000000000..c7a64643bf1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-017.html @@ -0,0 +1,29 @@ + + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    + +
    + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-018.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-018.html new file mode 100644 index 00000000000..755237fd0b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-018.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + +

    Main point of this test is that the container width is 100px, not 140px.

    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-019.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-019.html new file mode 100644 index 00000000000..9da4d77cd12 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/col-wrap-019.html @@ -0,0 +1,42 @@ + + + + + + + + + + + + +

    Main point of this test is that the container width is 100px, not 80px.

    + +
    + +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-001.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-001.html new file mode 100644 index 00000000000..a681d07d58a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-001.html @@ -0,0 +1,34 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red.

    + +
    + +
    +
    + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-002.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-002.html new file mode 100644 index 00000000000..1756ee00378 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-002.html @@ -0,0 +1,24 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red.

    + +
    + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-003.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-003.html new file mode 100644 index 00000000000..dda650fa668 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-003.html @@ -0,0 +1,25 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red.

    + +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-004.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-004.html new file mode 100644 index 00000000000..692457a0932 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-004.html @@ -0,0 +1,27 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red.

    + +
    + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-005.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-005.html new file mode 100644 index 00000000000..0f34c6fbdb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-005.html @@ -0,0 +1,140 @@ + + + + + + + + + + + +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + + + +
    +
    +
    + + + +
    +
    +
    +
    +
    + +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-006.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-006.html new file mode 100644 index 00000000000..c7b6171cf4e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-006.html @@ -0,0 +1,28 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    + +
    + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-007.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-007.html new file mode 100644 index 00000000000..b2f4f0ab19e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-007.html @@ -0,0 +1,28 @@ + + + + + + + + +

    Test passes if there is a filled green square and no red. +

    + +
    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-008.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-008.html new file mode 100644 index 00000000000..b34306b483f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-008.html @@ -0,0 +1,75 @@ + + + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-wrap-001.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-wrap-001.html new file mode 100644 index 00000000000..474005174db --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-size/row-wrap-001.html @@ -0,0 +1,117 @@ + + + + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/justify-content-001.htm b/tests/wpt/web-platform-tests/css/css-flexbox/justify-content-001.htm index 577395eaf7f..75ba056bf36 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/justify-content-001.htm +++ b/tests/wpt/web-platform-tests/css/css-flexbox/justify-content-001.htm @@ -7,6 +7,7 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/order-001.htm b/tests/wpt/web-platform-tests/css/css-flexbox/order-001.htm index 46113dd1d66..98b937c02d1 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/order-001.htm +++ b/tests/wpt/web-platform-tests/css/css-flexbox/order-001.htm @@ -4,7 +4,6 @@ CSS Test: The 'order' property on flex items set to a value of '-1' -

    Test passes if there is no red visible on the page.

    -
    - - \ No newline at end of file +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox-min-width-auto-006-ref.html b/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox-min-width-auto-006-ref.html index 1d6cb7ae658..1f1b7dfb24b 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox-min-width-auto-006-ref.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox-min-width-auto-006-ref.html @@ -5,28 +5,14 @@ .box { width: 100px; height: 100px; + background: green; border: 1px solid black; } -#green-square { - background: green; - margin-top: 40px; - width: 20px; - height: 20px; -} -#green-rectange { - background: green; - width: 60px; - height: 100px; -} -

    Test passes if there are a (vertically centered) 20x20 and a 60x100 green boxes enclosed on each 100x100 square.

    -
    -
    -
    +

    Test passes if there are two 100x100 green squares.

    +

    -
    -
    -
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-checkbox-input-ref.html b/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-checkbox-input-ref.html new file mode 100644 index 00000000000..eda83f2d1d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-checkbox-input-ref.html @@ -0,0 +1,3 @@ + + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-checkbox-input.html b/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-checkbox-input.html new file mode 100644 index 00000000000..896905d5e98 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-checkbox-input.html @@ -0,0 +1,9 @@ + + + +
    + +
    +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-radio-input-ref.html b/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-radio-input-ref.html new file mode 100644 index 00000000000..7ba10710b70 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-radio-input-ref.html @@ -0,0 +1,3 @@ + + + diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-radio-input.html b/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-radio-input.html new file mode 100644 index 00000000000..bf8a08e703f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/stretch-flex-item-radio-input.html @@ -0,0 +1,9 @@ + + + +
    + +
    +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/stretch-obeys-min-max-001.html b/tests/wpt/web-platform-tests/css/css-flexbox/stretch-obeys-min-max-001.html index 4b7eb5a1f76..597b0f00a4c 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/stretch-obeys-min-max-001.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox/stretch-obeys-min-max-001.html @@ -3,7 +3,6 @@ - + + +

    Testing application of kerning to CJK text

    +

    default

    +
    +YeYeYeYeティティティティ +
    +

    font-kerning: none;

    +
    +YeYeYeYeティティティティ +
    +

    font-kerning: normal;

    +
    +YeYeYeYeティティティティ +
    +

    font-feature-settings:"palt" 0; font-kerning: normal;

    +
    +YeYeYeYeティティティティ +
    +

    font-feature-settings:"palt" 1; font-kerning: normal;

    +
    +YeYeYeYeティティティティ +
    +

    font-feature-settings:"palt" 1; font-kerning: none;

    +
    +YeYeYeYeティティティティ +
    + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-face-local-css-wide-keyword-crash.html b/tests/wpt/web-platform-tests/css/css-fonts/font-face-local-css-wide-keyword-crash.html new file mode 100644 index 00000000000..3ece8c7c48c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-face-local-css-wide-keyword-crash.html @@ -0,0 +1,10 @@ + +Crash test for using unquoted CSS-wide keyword in local() font + + +

    Test passes if it does not crash.

    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-family-src-quoted.html b/tests/wpt/web-platform-tests/css/css-fonts/font-family-src-quoted.html index 3989bf8d236..a279e99153f 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-family-src-quoted.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-family-src-quoted.html @@ -24,46 +24,31 @@ src: url("F") format("opentype"); } /* 3 */ -@font-face { - font-family: "G"; - src: url("H") format("open\"type"); -} -/* 4 */ -@font-face { - font-family: "I"; - src: url("J") format("open\A type"); -} -/* 5 */ -@font-face { - font-family: "K"; - src: url("L") format("open\\type"); -} -/* 6 */ @font-face { font-family: "M"; src: url("N\"O") format("opentype"); } -/* 7 */ +/* 4 */ @font-face { font-family: "P"; src: url("Q\A R") format("opentype"); } -/* 8 */ +/* 5 */ @font-face { font-family: "S"; src: url("T\\U") format("opentype"); } -/* 9 */ +/* 6 */ @font-face { font-family: "V"; src: local("W\"X"); } -/* 10 */ +/* 7 */ @font-face { font-family: "Y"; src: local("Z\A A"); } -/* 11 */ +/* 8 */ @font-face { font-family: "B"; src: local("C\\D"); @@ -77,12 +62,12 @@ test(function(t) { assert_not_equals(rules[0].cssText.indexOf('local("B")'), -1); assert_not_equals(rules[1].cssText.indexOf('opentype'), -1); assert_not_equals(rules[2].cssText.indexOf('F")'), -1); - assert_not_equals(rules[3].cssText.indexOf('format(\"open\\\"type\")'), -1); - assert_not_equals(rules[4].cssText.indexOf('format(\"open\\a type\")'), -1); - assert_not_equals(rules[5].cssText.indexOf('format(\"open\\\\type\")'), -1); - assert_not_equals(rules[9].cssText.indexOf('local(\"W\\\"X\")'), -1); - assert_not_equals(rules[10].cssText.indexOf('local(\"Z\\a A\")'), -1); - assert_not_equals(rules[11].cssText.indexOf('local(\"C\\\\D\")'), -1); + assert_not_equals(rules[3].cssText.indexOf('url(\"N\\\"O\")'), -1); + assert_not_equals(rules[4].cssText.indexOf('url(\"Q\\a R\")'), -1); + assert_not_equals(rules[5].cssText.indexOf('url(\"T\\\\U\")'), -1); + assert_not_equals(rules[6].cssText.indexOf('local(\"W\\\"X\")'), -1); + assert_not_equals(rules[7].cssText.indexOf('local(\"Z\\a A\")'), -1); + assert_not_equals(rules[8].cssText.indexOf('local(\"C\\\\D\")'), -1); }); diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-21.html b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-21.html index 289f1bae06b..75709ccdc6c 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-21.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-21.html @@ -15,7 +15,7 @@ @font-palette-values --MyPalette { font-family: "COLR-test-font"; - override-colors: 3 #FF00FF, 3 #FF0000; + override-colors: 3 #FF0000, 3 #FF00FF; } diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-35-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-35-ref.html index 5a8078d913a..45c5a9873ea 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-35-ref.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-35-ref.html @@ -2,27 +2,23 @@ -Tests use of currentColor in @font-palette-values +Tests for font-palette and @font-palette-values - + -
    A
    +
    A
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-35.html b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-35.html index fcd7e29dd97..bef0dcdd2d0 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-35.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-35.html @@ -2,29 +2,24 @@ -Tests use of currentColor in @font-palette-values +Tests for font-palette and @font-palette-values - + -
    A
    +
    A
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-36.html b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-36.html deleted file mode 100644 index d84a9aa1239..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-36.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - -Tests currentColor in @font-palette-values is inherited as currentColor - - - - - - - -
    A
    - - diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-modify-notref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-modify-notref.html index 8dc2f9e3c7f..170cd8baaf8 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-modify-notref.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-modify-notref.html @@ -11,19 +11,13 @@ src: url("resources/COLR-palettes-test-font.ttf") format("truetype"); } -@font-palette-values MyPalette { +@font-palette-values --MyPalette { font-family: "COLR-test-font"; base-palette: 1; } - -@font-palette-values MyPalette2 { - font-family: "COLR-test-font"; - base-palette: 0; - override-color: 1 #00FF00; -} -
    A
    +
    A
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-modify.html b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-modify.html index 0b5ac99c9ac..49992ad8a13 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-modify.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-modify.html @@ -20,7 +20,8 @@ @font-palette-values --MyPalette2 { font-family: "COLR-test-font"; base-palette: 0; - override-colors: 1 #00FF00; + /* Glyph 'A' uses palette indices 3 and 7. */ + override-colors: 3 #00FF00; } diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-remove-notref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-remove-notref.html index b0d34a066e6..b2c06f72be4 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-palette-remove-notref.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-palette-remove-notref.html @@ -11,13 +11,13 @@ src: url("resources/COLR-palettes-test-font.ttf") format("truetype"); } -@font-palette-values MyPalette { +@font-palette-values --MyPalette { font-family: "COLR-test-font"; base-palette: 1; } -
    A
    +
    A
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-font-stretch.html b/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-font-stretch.html index f5fff421ff9..e39d6c6b198 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-font-stretch.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-font-stretch.html @@ -7,33 +7,81 @@
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-size-adjust-012-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-size-adjust-012-ref.html new file mode 100644 index 00000000000..9b24c758b62 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-size-adjust-012-ref.html @@ -0,0 +1,69 @@ + + + + + CSS Test: font-size-adjust property + + + + +
    For this test we are using two fonts. AhemEx500 has a aspect value (xHeight/size) of 0.5 and AhemEx250 an aspect value of 0.25. On both fonts all glyphs used in the tests look like a square but AhemEx500 doesn't contain 'A' (U+0041).
    +
    +
    1. Same glyph x in different spans with different fonts. The second one is adjusted with font-size-adjust. They should have the same size for test to pass.
    +
    + xx +
    +
    +
    +
    + 2. Different glyphs 'x' and 'A' in the same span, with 2 fonts in font-family fallback and without font-size-adjust. The second glyph can't be rendered by primary font so it will individually fallback to the secondary font. Note it is smaller than the first glyph. +
    +
    xA
    +
    +
    +
    + 3. Different glyphs 'x' and 'A' in the same span, with 2 fonts in font-family fallback and with font-size-adjust. The second glyph can't be rendered by primary font so it will individually fallback to the secondary font. Note that now they have the same size. +
    +
    + + xx +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-size-adjust-012.html b/tests/wpt/web-platform-tests/css/css-fonts/font-size-adjust-012.html new file mode 100644 index 00000000000..a6037ffbace --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-size-adjust-012.html @@ -0,0 +1,73 @@ + + + + + CSS Test: font-size-adjust property + + + + + +
    For this test we are using two fonts. AhemEx500 has a aspect value (xHeight/size) of 0.5 and AhemEx250 an aspect value of 0.25. On both fonts all glyphs used in the tests look like a square but AhemEx500 doesn't contain 'A' (U+0041).
    +
    +
    1. Same glyph x in different spans with different fonts. The second one is adjusted with font-size-adjust. They should have the same size for test to pass.
    +
    + xx +
    +
    +
    +
    + 2. Different glyphs 'x' and 'A' in the same span, with 2 fonts in font-family fallback and without font-size-adjust. The second glyph can't be rendered by primary font so it will individually fallback to the secondary font. Note it is smaller than the first glyph. +
    +
    xA
    +
    +
    +
    + 3. Different glyphs 'x' and 'A' in the same span, with 2 fonts in font-family fallback and with font-size-adjust. The second glyph can't be rendered by primary font so it will individually fallback to the secondary font. Note that now they have the same size. +
    +
    + + xA +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-weight-xxx-large-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-size-xxx-large-ref.html similarity index 100% rename from tests/wpt/web-platform-tests/css/css-fonts/font-weight-xxx-large-ref.html rename to tests/wpt/web-platform-tests/css/css-fonts/font-size-xxx-large-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-size-xxx-large.html b/tests/wpt/web-platform-tests/css/css-fonts/font-size-xxx-large.html new file mode 100644 index 00000000000..44a30688754 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-size-xxx-large.html @@ -0,0 +1,11 @@ + + + +CSS Test: font-size: xxx-large; size equivalence + + + + + +

    Test passes if the line below is identical, with matching font size.

    +Foo diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-05-ref.xht b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-05-ref.xht deleted file mode 100644 index f3c2d5f9fc9..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-05-ref.xht +++ /dev/null @@ -1,31 +0,0 @@ - - - - -CSS Test: font-variant: none; low level equivalence - - - - -

    Test passes if the six lines below are identical, with five check marks.

    -
    -

    AAAAA

    -

    AAAAA

    -

    AAAAA

    -

    AAAAA

    -

    AAAAA

    -

    AAAAA

    -
    - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-05.xht b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-05.xht deleted file mode 100644 index 7ea3cd9091c..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-05.xht +++ /dev/null @@ -1,70 +0,0 @@ - - - - -CSS Test: font-variant descriptor in @font-face rule is overriden by equivalent style rules - - - - - - - - - -

    Test passes if the six lines below are identical, with five check marks.

    -
    -

    AAAFE

    -

    CDGFE

    -

    CDGFE

    -

    CDGFE

    -

    CDGFE

    -

    AAAAA

    -
    - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-06-ref.xht b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-06-ref.xht deleted file mode 100644 index a85f80aa6ea..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-06-ref.xht +++ /dev/null @@ -1,34 +0,0 @@ - - - - -CSS Test: font-variant in @font-face rule is overriden by equivalent style rules - - - - - -

    Test passes if there are nine check marks below and no red visible.

    -
    - A - A - A - A - A - A - A - A - A -
    - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-06.xht b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-06.xht deleted file mode 100644 index 69749e7417a..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-06.xht +++ /dev/null @@ -1,83 +0,0 @@ - - - - -CSS Test: font-variant descriptor in @font-face rule is overriden by equivalent style rules - - - - - - - - - -

    Test passes if there are nine check marks below and no red visible.

    -
    - A - A - A - A - A - A - A - A - A -
    -
    - Q - Q - Q - Q - Q - Q - Q - Q - Q -
    - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01-ref.html deleted file mode 100644 index 6a152db8cb4..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01-ref.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -CSS Test: font-variant: normal; low level equivalence - - - - -

    Test passes if the three lines below are identical, with (in purple) eight check marks (✓)

    -
    -

    AAAAAAAA

    -

    AAAAAAAA

    -

    AAAAAAAA

    -
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01.html deleted file mode 100644 index f854ca1feeb..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Test: font-variant: normal; low level equivalence - - - - - - - - - -

    Test passes if the three lines below are identical, with (in purple) eight check marks (✓)

    -
    -

    CDGFEJQa

    -

    CDGFEJQa

    -

    AAAAAAAA

    -
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-1-notref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-1-notref.html new file mode 100644 index 00000000000..bbf3654ccfc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-1-notref.html @@ -0,0 +1,8 @@ + + +CSS Fonts: font-variant-emoji reference file + + +
    ☺️ ☺︎
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-1.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-1.html new file mode 100644 index 00000000000..53cf539edd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-1.html @@ -0,0 +1,14 @@ + + +CSS Fonts: font-variant-emoji test + + + + + + + +
    ☺︎ ☺️
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-2-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-2-ref.html new file mode 100644 index 00000000000..d899e0ff53c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-2-ref.html @@ -0,0 +1,13 @@ + + +CSS Fonts: font-variant-emoji reference file + + +

    text

    +
    ☺︎ ☺︎ ☺️
    +

    emoji

    +
    ☺️ ☺︎ ☺️
    +

    unicode

    +
    ☺︎ ☺︎ ☺️
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-2.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-2.html new file mode 100644 index 00000000000..cce4b036047 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-emoji-2.html @@ -0,0 +1,17 @@ + + +CSS Fonts: font-variant-emoji test + + + + + + +

    text

    +
    ☺ ☺︎ ☺️
    +

    emoji

    +
    ☺ ☺︎ ☺️
    +

    unicode

    +
    ☺ ☺︎ ☺️
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-ligatures-11.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-ligatures-11.html deleted file mode 100644 index 8fce1612c91..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-ligatures-11.html +++ /dev/null @@ -1,37 +0,0 @@ - - - -CSS Test: font-variant-ligatures: none is not equivalent to rlig off. - - - - - - - -

    Test passes if the first line shows a lam-alef ligature (لا) -and the second shows an initial lam, final alef (ﻟ‌ﺎ) -which is normally incorrect.

    - -
    -

    لا

    -

    لا

    -
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-ligatures-11.optional.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-ligatures-11.optional.html new file mode 100644 index 00000000000..f7cf0ecd089 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-ligatures-11.optional.html @@ -0,0 +1,34 @@ + + + +CSS Test: font-variant-ligatures: none is not equivalent to rlig off. + + + + + + + +

    Test passes if the first line shows a lam-alef ligature (لا) +and the second shows an initial lam, final alef (ﻟ‌ﺎ) +which is normally incorrect.

    + +
    +

    لا

    +

    لا

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-weight-xxx-large.html b/tests/wpt/web-platform-tests/css/css-fonts/font-weight-xxx-large.html deleted file mode 100644 index 327106668fd..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-weight-xxx-large.html +++ /dev/null @@ -1,11 +0,0 @@ - - - -CSS Test: font-size: xxx-large; size equivalence - - - - - -

    Test passes if the line below is identical, with matching font size.

    -Foo diff --git a/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html b/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html index d499b50e99e..0646a786786 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html @@ -2,7 +2,7 @@ -Inheritance of CSS Fonts Level 3 properties +Inheritance of CSS Fonts Level 3 & 4 properties @@ -40,6 +40,7 @@ assert_inherited('font-variant', 'normal', 'none'); assert_inherited('font-variant-alternates', 'normal', 'historical-forms'); assert_inherited('font-variant-caps', 'normal', 'small-caps'); assert_inherited('font-variant-east-asian', 'normal', 'ruby'); +assert_inherited('font-variant-emoji', 'normal', 'text'); assert_inherited('font-variant-ligatures', 'normal', 'none'); assert_inherited('font-variant-numeric', 'normal', 'ordinal'); assert_inherited('font-variant-position', 'normal', 'super'); diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-depth-001-crash.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-depth-001-crash.html new file mode 100644 index 00000000000..00e0c627725 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-depth-001-crash.html @@ -0,0 +1,44 @@ + + + + math-depth limits + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-003.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-003.tentative.html index 9a4130c3952..47b67aa8a81 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-003.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-003.tentative.html @@ -18,12 +18,14 @@

    Test passes if you see two squares of side 100px.

    -
    -
    X
    +
    + +
    X

    -
    -
    X
    +
    + +
    X
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/palette-values-rule-delete-notref.html b/tests/wpt/web-platform-tests/css/css-fonts/palette-values-rule-delete-notref.html index ded10a338c4..9b2b10ca280 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/palette-values-rule-delete-notref.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/palette-values-rule-delete-notref.html @@ -11,13 +11,13 @@ src: url("resources/COLR-palettes-test-font.ttf") format("truetype"); } -@font-palette-values MyPalette { +@font-palette-values --MyPalette { font-family: "COLR-test-font"; base-palette: 1; } -
    A
    +
    A
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-face-src-format.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-face-src-format.html new file mode 100644 index 00000000000..e38ebebcf66 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-face-src-format.html @@ -0,0 +1,68 @@ + +CSS Fonts 4 test: parsing the format() function in the src descriptor + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-face-src-local.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-face-src-local.html new file mode 100644 index 00000000000..d7c8cba18cd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-face-src-local.html @@ -0,0 +1,41 @@ + +CSS Fonts Module Level 4: parsing @font-face src:local() + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-face-src-tech.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-face-src-tech.html new file mode 100644 index 00000000000..240bb2d2eaf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-face-src-tech.html @@ -0,0 +1,89 @@ + +CSS Fonts 4 test: parsing the tech() function in the src descriptor + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-invalid.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-invalid.html index 950747580e8..4262750b0ee 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-invalid.html @@ -24,6 +24,12 @@ test_invalid_value('font', 'normal normal normal normal normal 20%/1.2 \"FB Arma test_invalid_value('font', 'italic small-caps lighter condensed smaller'); test_invalid_value('font', 'normal 100 semi-condensed oblique small-caps Menu'); test_invalid_value('font', '100% larger / 2 fantasy'); + +test_invalid_value('font', 'oldstyle-nums medium serif'); +test_invalid_value('font', 'common-ligatures medium serif'); +test_invalid_value('font', 'normal full-width medium serif'); +test_invalid_value('font', 'italic titling-caps medium serif'); +test_invalid_value('font', 'petite-caps medium serif'); diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html index 972fd43883d..e6e3dda9eb1 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html @@ -103,6 +103,10 @@ + + + +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-east-asian-invalid.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-east-asian-invalid.html index 30dbe403b8d..c61a4b9b139 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-east-asian-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-east-asian-invalid.html @@ -16,6 +16,14 @@ test_invalid_value('font-variant-east-asian', 'normal ruby'); test_invalid_value('font-variant-east-asian', 'jis78 jis83'); test_invalid_value('font-variant-east-asian', 'full-width proportional-width'); + +test_invalid_value('font-variant-east-asian', 'normal garbage'); +test_invalid_value('font-variant-east-asian', 'normal none'); +test_invalid_value('font-variant-east-asian', 'normal 30px'); + +test_invalid_value('font-variant-east-asian', 'full-width garbage'); +test_invalid_value('font-variant-east-asian', 'full-width none'); +test_invalid_value('font-variant-east-asian', 'full-width 30px'); diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-emoji-computed.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-emoji-computed.html new file mode 100644 index 00000000000..5d24a1dfeec --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-emoji-computed.html @@ -0,0 +1,21 @@ + + + + +CSS Fonts Module Level 4: getComputedStyle().fontVariantEmoji + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-emoji-invalid.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-emoji-invalid.html new file mode 100644 index 00000000000..afbf2c48786 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-emoji-invalid.html @@ -0,0 +1,23 @@ + + + + +CSS Fonts Module Level 4: parsing font-variant-emoji with invalid values + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-emoji-valid.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-emoji-valid.html new file mode 100644 index 00000000000..f3bf80bb52a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-emoji-valid.html @@ -0,0 +1,20 @@ + + + + +CSS Fonts Module Level 4: parsing font-variant-emoji with valid values + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-numeric-valid.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-numeric-valid.html index ed240cc36d5..c7a9fd252c4 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-numeric-valid.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-numeric-valid.html @@ -32,7 +32,8 @@ test_valid_value('font-variant-numeric', 'slashed-zero'); test_valid_value('font-variant-numeric', 'oldstyle-nums tabular-nums diagonal-fractions'); // Blink gives "slashed-zero ordinal stacked-fractions proportional-nums lining-nums". -test_valid_value('font-variant-numeric', 'slashed-zero ordinal stacked-fractions proportional-nums lining-nums', 'lining-nums proportional-nums stacked-fractions ordinal slashed-zero'); +// Also accept specified order as correct serialization. +test_valid_value('font-variant-numeric', 'slashed-zero ordinal stacked-fractions proportional-nums lining-nums', ['slashed-zero ordinal stacked-fractions proportional-nums lining-nums', 'lining-nums proportional-nums stacked-fractions ordinal slashed-zero']); diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-serialization.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-serialization.html new file mode 100644 index 00000000000..04e4d926814 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-variant-serialization.html @@ -0,0 +1,59 @@ + + + + +CSS Fonts Module Level 4: serialization of font-variant + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/resources/ahem-ex-250.otf b/tests/wpt/web-platform-tests/css/css-fonts/resources/ahem-ex-250.otf new file mode 100644 index 00000000000..186240b91c2 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-fonts/resources/ahem-ex-250.otf differ diff --git a/tests/wpt/web-platform-tests/css/css-fonts/resources/ahem-ex-500.otf b/tests/wpt/web-platform-tests/css/css-fonts/resources/ahem-ex-500.otf new file mode 100644 index 00000000000..9966da1929c Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-fonts/resources/ahem-ex-500.otf differ diff --git a/tests/wpt/web-platform-tests/css/css-fonts/rlh-in-monospace-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/rlh-in-monospace-ref.html new file mode 100644 index 00000000000..e60a59d7191 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/rlh-in-monospace-ref.html @@ -0,0 +1,10 @@ + +

    The following two lines should look exactly the same.

    + +
    + Text. +
    + +
    + Text. +
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/rlh-in-monospace.html b/tests/wpt/web-platform-tests/css/css-fonts/rlh-in-monospace.html new file mode 100644 index 00000000000..26a57a78a55 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/rlh-in-monospace.html @@ -0,0 +1,18 @@ + + + + + + + +

    The following two lines should look exactly the same.

    + +
    +
    + Text. +
    +
    + +
    + Text. +
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors.html index 28610860c50..1935422d7c2 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors.html @@ -147,12 +147,12 @@ { value: "italic 20deg", isValid: false, description: "'italic' followed by angle" }, { value: "italic a", isValid: false, description: "Extra content after keyword" }, { value: "oblique 0deg", isValid: true, description: "'oblique' followed by zero degrees" }, - { value: "oblique 20deg", isValid: true, expectedValue: "oblique", description: "'oblique' followed by default 20deg angle" }, + { value: "oblique 20deg", isValid: true, description: "'oblique' followed by former default 20deg angle" }, { value: "oblique 90deg", isValid: true, description: "'oblique' followed by maxumum 90 degree angle" }, { value: "oblique -90deg", isValid: true, description: "'oblique' followed by minimum -90 degree angle" }, - { value: "oblique calc(91deg)", isValid: true, expectedValue: "oblique 90deg", description: "'oblique' followed by calc with out of range value (should be clamped)" }, - { value: "oblique calc(-91deg)", isValid: true, expectedValue: "oblique -90deg", description: "'oblique' followed by calc with out of range value (should be clamped)" }, - { value: "oblique 0rad", isValid: true, expectedValue: "oblique 0deg", description: "'oblique' followed by angle in radians" }, + { value: "oblique calc(91deg)", isValid: true, description: "'oblique' followed by calc with out of range value (should be clamped)" }, + { value: "oblique calc(-91deg)", isValid: true, description: "'oblique' followed by calc with out of range value (should be clamped)" }, + { value: "oblique 0rad", isValid: true, expectedValue: "oblique 0deg", description: "'oblique' followed by angle in radians" }, { value: "oblique 20", isValid: false, description: "'oblique' followed by unit-less number" }, { value: "oblique 20px", isValid: false, description: "'oblique' followed by non-angle" }, { value: "oblique a", isValid: false, description: "'oblique' followed by non-number" }, @@ -163,7 +163,7 @@ // Value range { value: "oblique 10deg 20deg", isValid: true, description: "Simple range" }, { value: "oblique 10deg 10deg", isValid: true, expectedValue: "oblique 10deg", description: "Simple range with equal upper and lower bounds" }, - { value: "oblique 20deg 20deg", isValid: true, expectedValue: "oblique", description: "Simple range with default angle for both bounds" }, + { value: "oblique 20deg 20deg", isValid: true, description: "Simple range with former default angle for both bounds" }, { value: "oblique 20deg 10deg", isValid: true, expectedValue: "oblique 20deg 10deg", description: "Bounds out of order" }, { value: "oblique -100deg 20deg", isValid: false, description: "Lower bound out of range" }, { value: "oblique 20deg 100deg", isValid: false, description: "Upper bound out of range" }, diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/FontStyleTest-slnt-VF.woff2 b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/FontStyleTest-slnt-VF.woff2 new file mode 100644 index 00000000000..c4d365e88e6 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/FontStyleTest-slnt-VF.woff2 differ diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/FontStyleTest-slnt_backslant-VF.woff2 b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/FontStyleTest-slnt_backslant-VF.woff2 new file mode 100644 index 00000000000..ea542eb06f9 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/FontStyleTest-slnt_backslant-VF.woff2 differ diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-backslant-variable-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-backslant-variable-ref.html new file mode 100644 index 00000000000..bbb18ebbaf1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-backslant-variable-ref.html @@ -0,0 +1,30 @@ + + + +CSS Test: Variable fonts with slant axis + + +

    varfont

    +

    varfont

    +

    varfont

    +

    varfont

    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-backslant-variable.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-backslant-variable.html new file mode 100644 index 00000000000..4bbe2b157f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-backslant-variable.html @@ -0,0 +1,41 @@ + + + +CSS Test: Variable fonts with slant axis + + + + + + + +

    varfont

    +

    varfont

    +

    varfont

    +

    varfont

    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-variable-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-variable-ref.html new file mode 100644 index 00000000000..75a237c6b21 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-variable-ref.html @@ -0,0 +1,25 @@ + + + +CSS Test: Variable fonts with slant axis + + +

    varfont

    +

    varfont

    +

    varfont

    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-variable.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-variable.html new file mode 100644 index 00000000000..d81df09c19d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/slnt-variable.html @@ -0,0 +1,36 @@ + + + +CSS Test: Variable fonts with slant axis + + + + + + + +

    varfont

    +

    varfont

    +

    varfont

    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/variable-gpos-m2b.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/variable-gpos-m2b.html index 9b976e1892a..c39cce33a6c 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/variations/variable-gpos-m2b.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/variable-gpos-m2b.html @@ -30,7 +30,7 @@ with the combining box below. And it has a glyph for combining box below whose mark anchor can be shifted horizontally using the VM2B axis. The font also has N and O glyphs which have fixed shifted base anchor points at the - middle and at the right position. In this ref test we check whether + middle and at the right position. In this reftest we check whether applying the VM2B axis works as expected and shifts the mark anchor point left so that the combining mark is placed correctly at the middle and at the right position. The VM2B rendering must be identical to the diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/positioned-grid-items-025-ref.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/positioned-grid-items-025-ref.html new file mode 100644 index 00000000000..803539a069c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/positioned-grid-items-025-ref.html @@ -0,0 +1,10 @@ + + + + + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/positioned-grid-items-025.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/positioned-grid-items-025.html new file mode 100644 index 00000000000..d4c1b01a53d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/positioned-grid-items-025.html @@ -0,0 +1,34 @@ + + + +CSS Grid Layout Test: Positioned grid items + + + + + +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-001.html new file mode 100644 index 00000000000..a03ce153b30 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-001.html @@ -0,0 +1,69 @@ + + + + + + + + + +
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-002.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-002.html new file mode 100644 index 00000000000..2b4d71756d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-002.html @@ -0,0 +1,69 @@ + + + + + + + + + +
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-003.html new file mode 100644 index 00000000000..2e0c5f29f39 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-003.html @@ -0,0 +1,50 @@ + + + + + + + + + +
    +

    +

    +

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-004.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-004.html new file mode 100644 index 00000000000..233c88a01f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-004.html @@ -0,0 +1,31 @@ + + + + + + + + +
    +

    +

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-005.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-005.html new file mode 100644 index 00000000000..c217a3b6de6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-005.html @@ -0,0 +1,8 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    + +

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-fieldset-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-fieldset-001.html new file mode 100644 index 00000000000..207fabb166b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-fieldset-001.html @@ -0,0 +1,48 @@ + + + + + + + + +
    +
    +
    + +
    + +
    + +
    +
    +
    +
    + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-fieldset-002.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-fieldset-002.html new file mode 100644 index 00000000000..dbbca161501 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-fieldset-002.html @@ -0,0 +1,49 @@ + + + + + + + + +
    +
    +
    + +
    + +
    + +
    +
    +
    +
    + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-fieldset-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-fieldset-003.html new file mode 100644 index 00000000000..38fc5b5eb87 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-fieldset-003.html @@ -0,0 +1,49 @@ + + + + + + + + +
    +
    +
    + +
    + +
    + +
    +
    +
    +
    + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-001.html new file mode 100644 index 00000000000..d00472474b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-001.html @@ -0,0 +1,261 @@ + + + + + + + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-002.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-002.html new file mode 100644 index 00000000000..b6df9d7d733 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-002.html @@ -0,0 +1,262 @@ + + + + + + + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-003.html new file mode 100644 index 00000000000..7fdc921b278 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-003.html @@ -0,0 +1,130 @@ + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-004.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-004.html new file mode 100644 index 00000000000..447f008e0e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-flex-004.html @@ -0,0 +1,131 @@ + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-grid-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-grid-001.html new file mode 100644 index 00000000000..d59e70601a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-grid-001.html @@ -0,0 +1,112 @@ + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-grid-002.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-grid-002.html new file mode 100644 index 00000000000..686587bc940 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-grid-002.html @@ -0,0 +1,113 @@ + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-grid-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-grid-003.html new file mode 100644 index 00000000000..f561e13cfa2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-grid-003.html @@ -0,0 +1,113 @@ + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-line-clamp-001.tentative.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-line-clamp-001.tentative.html new file mode 100644 index 00000000000..27e48bc7cc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-line-clamp-001.tentative.html @@ -0,0 +1,129 @@ + + + + + + + + + +
    +
    +
    +



    +
    +
    + +
    +
    +
    +



    +
    +
    + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +

    +
    +
    + +
    +
    +
    +

    +
    +
    + + + +
    +
    +
    +




    +
    +
    + +
    +
    +
    +




    +
    +
    + + +
    +
    +
    +



    +
    +
    + +
    +
    +
    +



    +
    +
    + + +
    +
    +
    +


    +
    +
    + +
    +
    +
    +


    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-line-clamp-002.tentative.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-line-clamp-002.tentative.html new file mode 100644 index 00000000000..a51c43f4067 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-line-clamp-002.tentative.html @@ -0,0 +1,130 @@ + + + + + + + + + +
    +
    +
    +



    +
    +
    + +
    +
    +
    +



    +
    +
    + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +

    +
    +
    + +
    +
    +
    +

    +
    +
    + + + +
    +
    +
    +




    +
    +
    + +
    +
    +
    +




    +
    +
    + + +
    +
    +
    +



    +
    +
    + +
    +
    +
    +



    +
    +
    + + +
    +
    +
    +


    +
    +
    + +
    +
    +
    +


    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-line-clamp-003.tentative.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-line-clamp-003.tentative.html new file mode 100644 index 00000000000..689c952dbba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-line-clamp-003.tentative.html @@ -0,0 +1,130 @@ + + + + + + + + + +
    +
    +
    +



    +
    +
    + +
    +
    +
    +



    +
    +
    + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +

    +
    +
    + +
    +
    +
    +

    +
    +
    + + + +
    +
    +
    +




    +
    +
    + +
    +
    +
    +




    +
    +
    + + +
    +
    +
    +



    +
    +
    + +
    +
    +
    +



    +
    +
    + + +
    +
    +
    +


    +
    +
    + +
    +
    +
    +


    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-multicol-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-multicol-001.html new file mode 100644 index 00000000000..d7d6faabb1a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-multicol-001.html @@ -0,0 +1,143 @@ + + + + + + + + + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-multicol-002.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-multicol-002.html new file mode 100644 index 00000000000..d237f4c2e2b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-multicol-002.html @@ -0,0 +1,145 @@ + + + + + + + + + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-multicol-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-multicol-003.html new file mode 100644 index 00000000000..52b2403f881 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-multicol-003.html @@ -0,0 +1,145 @@ + + + + + + + + + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    + + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    +
    +
    +

    +
    +
    +

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-overflow-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-overflow-001.html new file mode 100644 index 00000000000..66f9eb1bcf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-overflow-001.html @@ -0,0 +1,91 @@ + + + + + + + + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-overflow-002.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-overflow-002.html new file mode 100644 index 00000000000..b74dbf750be --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-overflow-002.html @@ -0,0 +1,92 @@ + + + + + + + + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-overflow-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-overflow-003.html new file mode 100644 index 00000000000..569dd1ae373 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-overflow-003.html @@ -0,0 +1,92 @@ + + + + + + + + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-table-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-table-001.html new file mode 100644 index 00000000000..0cafef6ecca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-table-001.html @@ -0,0 +1,97 @@ + + + + + + + + +
    +
    + + + + + + + + + + + +
    top




    bottom
    +
    + +
    +
    + + + + + + + + + + + +
    top




    bottom
    +
    + +
    +
    + + + + + + + + + + + +
    +
    + +
    +
    + + + + + + + + + + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-table-002.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-table-002.html new file mode 100644 index 00000000000..6fc444ff843 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-table-002.html @@ -0,0 +1,66 @@ + + + + + + + + +
    +
    + + + + + + + + + + + +
    top




    bottom
    +
    + +
    +
    + + + + + + + + + + + +
    top




    bottom
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-table-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-table-003.html new file mode 100644 index 00000000000..43ba6ae86df --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-baseline-table-003.html @@ -0,0 +1,66 @@ + + + + + + + + +
    +
    + + + + + + + + + + + +
    top




    bottom
    +
    + +
    +
    + + + + + + + + + + + +
    top




    bottom
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-003.html index bca78d76569..dc7f350af51 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-003.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-003.html @@ -22,6 +22,7 @@ } #item2 { width: 50px; + margin: 0 10px; background: green; } #item3 { @@ -36,15 +37,15 @@ + + + + +
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-justify-baseline-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-justify-baseline-003.html new file mode 100644 index 00000000000..623f8491153 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-justify-baseline-003.html @@ -0,0 +1,51 @@ + + + + + + + + + +
    +

    +

    +

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-justify-baseline-004.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-justify-baseline-004.html new file mode 100644 index 00000000000..b2e1d6d2efb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-justify-baseline-004.html @@ -0,0 +1,51 @@ + + + + + + + + + +
    +

    +

    +

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-justify-baseline-005.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-justify-baseline-005.html new file mode 100644 index 00000000000..ea835caa800 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-justify-baseline-005.html @@ -0,0 +1,26 @@ + + + + + + + + +
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    line1
    line2
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html index 3939c5b4620..c9e630cbac4 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html @@ -41,7 +41,7 @@
    ÉÉ É ÉÉÉ É ÉÉ É
    -
    É É ÉÉ
    +
    É É ÉÉ
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html index f2f23cbe265..e96f8da6e72 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html @@ -52,7 +52,7 @@
    -
    É É ÉÉ
    +
    É É ÉÉ
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html index 1160895f401..19a4f5193bf 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html @@ -52,7 +52,7 @@
    -
    É É ÉÉ
    +
    É É ÉÉ
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html index f40d06386ed..f3f70790c98 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html @@ -40,8 +40,9 @@ -
    Horizontal grid and verticalLR item with relative width
    +
    Horizontal grid and verticalLR item with fixed width
    +
    É É ÉÉ
    @@ -50,9 +51,10 @@
    Horizontal grid and verticalRL item with fixed width
    -
    -
    -
    É É ÉÉ
    + +
    +
    +
    É É ÉÉ
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html index 5ddf4495921..723f3d30902 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html @@ -11,7 +11,6 @@ -

    4x1 with orthogonal items, but opposite block-flow direction.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-ref.html index 9c2f6e45218..8593ea1abce 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-ref.html @@ -36,7 +36,35 @@ body { margin: 0; }

    1x4 with parallel items, but opposite block-flow direction.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002-ref.html index a99656f94e2..735ea557868 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002-ref.html @@ -25,18 +25,15 @@ body { margin: 0; } } .extraTopPadding { padding-top: 30px; } .extraBottomPadding { padding-bottom: 30px; } -.top { vertical-align: top; } .item { display: inline-block; } -.item.verticalLR, .item.verticalRL { margin: 10px 6px 4px 12px; } -.item.horizontalTB { margin: 10px 6px 4px 0px; } - +.item.verticalLR, .item.verticalRL { margin-bottom: 0px; }

    1x4 with parallel and orthogonal items.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003-ref.html index 58f68d5b258..fd966d16a15 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003-ref.html @@ -26,12 +26,12 @@ body { margin: 0; } } .extraTopPadding { padding-top: 30px; } .extraBottomPadding { padding-bottom: 30px; } -.top { vertical-align: top; } .item { display: inline-block; } +.item.verticalLR, .item.verticalRL { margin-bottom: 0px; }

    1x4 with orthogonal items.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005-ref.html index 5e2f6da9d5f..c38b6c76115 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005-ref.html @@ -28,11 +28,12 @@ body { margin: 0; } .extraRightPadding { padding-right: 30px; } .inline { display: inline-block; } .item { display: inline-block; } +.item.horizontalTB:not(.bottom) { margin-left: 0px; } .bottom { vertical-align: bottom; }

    4x1 with parallel and orthogonal items.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    É
    É
    É
    É
    É
    É
    É
    É
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007-ref.html index e92a90ef269..cba725f4256 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007-ref.html @@ -31,5 +31,19 @@ body { margin: 0; }

    4x1 with orthogonal items, but opposite block-flow direction.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002-ref.html index 1aef905f16b..9a7a53969d3 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002-ref.html @@ -26,9 +26,9 @@ body { margin: 0; } .extraLeftPadding { padding-left: 30px; } .extraRightPadding { padding-right: 30px; } .item { display: inline-block; } -.bottom { vertical-align: bottom; } +.item.horizontalTB { margin-left: 0px; }

    1x4 with parallel and orthogonal items.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004-ref.html index cd6569ffbfd..1ce8267ee7d 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004-ref.html @@ -26,9 +26,8 @@ body { margin: 0; } } .extraTopPadding { padding-top: 30px; } .item { display: inline-block; } -.top { vertical-align: top; }

    1x4 with orthogonal items.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005-ref.html index 571a77d3431..fb68579d9ae 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005-ref.html @@ -28,9 +28,8 @@ body { margin: 0; } .item { display: inline-block; } .item.verticalLR, .item.verticalRL { margin: 10px 6px 0px 12px; } .item.horizontalTB { margin: 10px 6px 4px 0px; } -.top { vertical-align: top; }

    4x1 with parallel and orthogonal items.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007-ref.html index fe00a5f5a2e..6f5641448d5 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007-ref.html @@ -30,5 +30,19 @@ body { margin: 0; }

    1x4 with parallel items, but opposite block-flow direction.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002-ref.html index 3be7c42ee5d..ef6b45c9c97 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002-ref.html @@ -26,9 +26,9 @@ body { margin: 0; } .extraLeftPadding { padding-left: 30px; } .extraRightPadding { padding-right: 30px; } .item { display: inline-block; } -.top { vertical-align: top; } +.item.horizontalTB { margin-left: 0px; }

    1x4 with parallel and orthogonal items.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003-ref.html index 03307a601de..b72fc8817a4 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003-ref.html @@ -27,9 +27,8 @@ body { margin: 0; } .extraLeftPadding { padding-left: 30px; } .extraRightPadding { padding-right: 30px; } .item { display: inline-block; } -.top { vertical-align: top; }

    1x4 with orthogonal items.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004-ref.html index 2e3e032ac8c..bab35922666 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004-ref.html @@ -26,9 +26,8 @@ body { margin: 0; } } .extraBottomPadding { padding-bottom: 30px; } .item { display: inline-block; } -.top { vertical-align: top; }

    4x1 with parallel items.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005-ref.html index 067129b8dc9..da72a5f0179 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005-ref.html @@ -26,9 +26,9 @@ body { margin: 0; } .extraTopPadding { padding-top: 30px; } .extraBottomPadding { padding-bottom: 30px; } .item { display: inline-block; } -.top { vertical-align: top; } +.item.verticalRL { margin-bottom: 0px; }

    4x1 with parallel and orthogonal items.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    É
    É
    É
    É
    +
    É
    É
    É
    É
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007-ref.html index ffa3e0512a9..30658b8cc73 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007-ref.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007-ref.html @@ -30,5 +30,19 @@ body { margin: 0; }

    1x4 with parallel items, but opposite block-flow direction.

    -
    É
    É
    É
    É
    -
    É
    É
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    +
    +
    +
    É
    É
    +
    +
    +
    É
    É
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-composition.html b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-composition.html new file mode 100644 index 00000000000..2db49bc53ee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-composition.html @@ -0,0 +1,247 @@ + + + + + grid-template-columns composition + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-interpolation.html b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-interpolation.html index 5da3dea6cca..55df24f7082 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-interpolation.html +++ b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-interpolation.html @@ -8,6 +8,11 @@ + + + + + +
    + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-neutral-keyframe-002.html b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-neutral-keyframe-002.html new file mode 100644 index 00000000000..6cd163711ee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-neutral-keyframe-002.html @@ -0,0 +1,26 @@ + + + + + grid-template-columns neutral keyframe + + + + + + + +
    + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-neutral-keyframe-003.html b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-neutral-keyframe-003.html new file mode 100644 index 00000000000..80187cf6848 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-neutral-keyframe-003.html @@ -0,0 +1,28 @@ + + + + + grid-template-columns neutral keyframe + + + + + + + +
    + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-neutral-keyframe-004.html b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-neutral-keyframe-004.html new file mode 100644 index 00000000000..a207aa713c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-columns-neutral-keyframe-004.html @@ -0,0 +1,26 @@ + + + + + grid-template-columns neutral keyframe + + + + + + + +
    + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-composition.html b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-composition.html new file mode 100644 index 00000000000..42f9c92e9ad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-composition.html @@ -0,0 +1,247 @@ + + + + + grid-template-rows composition + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-interpolation.html b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-interpolation.html index c1ff70c49ec..f749cbd832b 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-interpolation.html +++ b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-interpolation.html @@ -8,6 +8,11 @@ + + + + + +
    + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-neutral-keyframe-002.html b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-neutral-keyframe-002.html new file mode 100644 index 00000000000..f63d45b4a71 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-neutral-keyframe-002.html @@ -0,0 +1,26 @@ + + + + + grid-template-rows neutral keyframe + + + + + + + +
    + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-neutral-keyframe-003.html b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-neutral-keyframe-003.html new file mode 100644 index 00000000000..5ffd67528ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-neutral-keyframe-003.html @@ -0,0 +1,28 @@ + + + + + grid-template-rows neutral keyframe + + + + + + + +
    + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-neutral-keyframe-004.html b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-neutral-keyframe-004.html new file mode 100644 index 00000000000..941e8436248 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/animation/grid-template-rows-neutral-keyframe-004.html @@ -0,0 +1,26 @@ + + + + + grid-template-rows neutral keyframe + + + + + + + +
    + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-001-ref.html new file mode 100644 index 00000000000..df8393a1f03 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-001-ref.html @@ -0,0 +1,31 @@ + + + +grid item with border-box and max-content should include borders + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-001.html b/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-001.html new file mode 100644 index 00000000000..8d3cda88b44 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-001.html @@ -0,0 +1,35 @@ + + + +grid item with border-box and max-content should include borders + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-002-ref.html new file mode 100644 index 00000000000..df8393a1f03 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-002-ref.html @@ -0,0 +1,31 @@ + + + +grid item with border-box and max-content should include borders + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-002.html b/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-002.html new file mode 100644 index 00000000000..fe3e6db0d7a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/child-border-box-and-max-content-002.html @@ -0,0 +1,34 @@ + + + +grid item with border-box and max-content should include borders + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html b/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html index 38fde5ba20d..4ffa89bce52 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html @@ -157,7 +157,7 @@ '': ['1', '1'], ' ': ['1 a', '1 a'], 'span ': ['span 1', 'span 1'], - 'span ': ['span a', 'span 1 a'], + 'span ': ['span a', 'span a'], 'span ': ['span 2 a', 'span 2 a'], 'reset': ['auto', 'auto'], }, @@ -168,7 +168,7 @@ '': ['1', '1'], ' ': ['1 a', '1 a'], 'span ': ['span 1', 'span 1'], - 'span ': ['span a', 'span 1 a'], + 'span ': ['span a', 'span a'], 'span ': ['span 2 a', 'span 2 a'], 'reset': ['auto', 'auto'], }, @@ -179,7 +179,7 @@ '': ['1', '1'], ' ': ['1 a', '1 a'], 'span ': ['span 1', 'span 1'], - 'span ': ['span a', 'span 1 a'], + 'span ': ['span a', 'span a'], 'span ': ['span 2 a', 'span 2 a'], 'reset': ['auto', 'auto'], }, @@ -190,7 +190,7 @@ '': ['1', '1'], ' ': ['1 a', '1 a'], 'span ': ['span 1', 'span 1'], - 'span ': ['span a', 'span 1 a'], + 'span ': ['span a', 'span a'], 'span ': ['span 2 a', 'span 2 a'], 'reset': ['auto', 'auto'], }, @@ -202,7 +202,7 @@ '': ['1 / 3', '1 / 3'], ' ': ['1 a / 2 b', '1 a / 2 b'], 'span ': ['span 1 / span 2', 'span 1 / span 2'], - 'span ': ['span a / span b', 'span 1 a / span 1 b'], + 'span ': ['span a / span b', 'span a / span b'], 'span ': ['span 2 a / span 3 b', 'span 2 a / span 3 b'], 'reset': ['auto', 'auto'], }, @@ -214,7 +214,7 @@ '': ['1 / 3', '1 / 3'], ' ': ['1 a / 2 b', '1 a / 2 b'], 'span ': ['span 1 / span 2', 'span 1 / span 2'], - 'span ': ['span a / span b', 'span 1 a / span 1 b'], + 'span ': ['span a / span b', 'span a / span b'], 'span ': ['span 2 a / span 3 b', 'span 2 a / span 3 b'], 'reset': ['auto', 'auto'], }, @@ -226,7 +226,7 @@ '': ['1 / 2 / 3 / 4', '1 / 2 / 3 / 4'], ' ': ['1 a / 2 b / 3 c / 4 d', '1 a / 2 b / 3 c / 4 d'], 'span ': ['span 1 / span 2 / span 3 / span 4', 'span 1 / span 2 / span 3 / span 4'], - 'span ': ['span a / span b / span c / span d', 'span 1 a / span 1 b / span 1 c / span 1 d'], + 'span ': ['span a / span b / span c / span d', 'span a / span b / span c / span d'], 'span ': ['span 2 a / span 3 b / span 4 c / span 5 d', 'span 2 a / span 3 b / span 4 c / span 5 d'], 'reset': ['auto', 'auto'], }, diff --git a/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-001.html b/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-001.html index d48e9aefcc6..f6ec2bb9973 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-001.html @@ -44,16 +44,16 @@

    Horizontal 4x1 grid with parallel and orthogonal items.

    -
    -
    É
    +
    +
    É
    É
    -
    É
    +
    É
    É
    -
    -
    É
    +
    +
    É
    É
    -
    É
    +
    É
    É
    diff --git a/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-003.html b/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-003.html index bbc7b049d99..30245347857 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-003.html +++ b/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-003.html @@ -45,17 +45,17 @@ body { margin: 0; }

    Vertical LR 4x1 grid with parallel and orthogonal items.

    -
    -
    É
    -
    É
    +
    +
    É
    +
    É
    É
    -
    É
    +
    É
    -
    +
    É
    -
    É
    -
    É
    -
    É
    +
    É
    +
    É
    +
    É

    diff --git a/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-004.html b/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-004.html index ae91e811509..3fb71ab90d9 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-004.html +++ b/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-004.html @@ -44,17 +44,17 @@

    Vertical RL 4x1 grid with parallel and orthogonal items.

    -
    -
    É
    -
    É
    +
    +
    É
    +
    É
    É
    -
    É
    +
    É
    -
    +
    É
    -
    É
    -
    É
    -
    É
    +
    É
    +
    É
    +
    É

    diff --git a/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height.html b/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height.html index 8fd1c49b7df..6625a321d38 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height.html +++ b/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height.html @@ -2,6 +2,7 @@ + - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-003.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-003.html deleted file mode 100644 index 8551a0109ed..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-003.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - CSS Grid Test: abs.pos. subgrid edge cases - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004-ref.html deleted file mode 100644 index ac47309df22..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004-ref.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - Reference: abs.pos. subgrid edge cases - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004.html deleted file mode 100644 index b66143c36c1..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - CSS Grid Test: abs.pos. subgrid edge cases - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002-ref.html new file mode 100644 index 00000000000..5d4b9c81788 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002-ref.html @@ -0,0 +1,64 @@ + + + + + Reference: subgrid auto track sizing + + + + + +
    +
    + The cat can not be separated from milk +
    +
    + +
    +
    + The cat can not be separated from milk +
    +
    + +
    +
    + The cat can not be separated from milk +
    +
    + +
    +
    + The cat can not be separated from milk +
    +
    + +
    +
    + The cat can not be separated from milk +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002.html new file mode 100644 index 00000000000..c44c9d39259 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002.html @@ -0,0 +1,80 @@ + + + + + Test: subgrid auto track sizing + + + + + + + +
    +
    + The cat can not be separated from milk +
    +
    + +
    +
    +
    + The cat can not be separated from milk +
    +
    +
    + +
    +
    +
    + The cat can not be separated from milk +
    +
    +
    + +
    +
    +
    + The cat can not be separated from milk +
    +
    +
    + +
    +
    +
    + The cat can not be separated from milk +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/grid-subgridded-axis-auto-repeater-crash-003.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/grid-subgridded-axis-auto-repeater-crash-003.html new file mode 100644 index 00000000000..eeb97967f7a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/grid-subgridded-axis-auto-repeater-crash-003.html @@ -0,0 +1,23 @@ + + + + +CSS Grid Layout Test: Grid with a subgridded axis and an auto repeater as line name list + + + + +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/grid-template-computed-nogrid.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/grid-template-computed-nogrid.html index 6c2042fde78..ccfe67a5c0f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/grid-template-computed-nogrid.html +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/grid-template-computed-nogrid.html @@ -16,12 +16,15 @@
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/grid-template-valid.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/grid-template-valid.html index 76ac318bd38..d568e973e9a 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/grid-template-valid.html +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/grid-template-valid.html @@ -22,6 +22,7 @@ test_valid_value("grid-template-rows", 'subgrid [a] [b] [] [c]'); test_valid_value("grid-template-rows", 'subgrid [] [] [] [c]'); test_valid_value("grid-template-rows", 'subgrid [] [] [] []'); test_valid_value("grid-template-rows", 'subgrid repeat(auto-fill, [a])'); +test_valid_value("grid-template-rows", 'subgrid repeat(auto-fill, [])'); test_valid_value("grid-template-rows", 'subgrid [a] repeat(auto-fill, [b])'); test_valid_value("grid-template-rows", 'subgrid [a] repeat(auto-fill, [b]) [c]'); test_valid_value("grid-template-rows", 'subgrid [] repeat(auto-fill, []) []'); @@ -41,6 +42,7 @@ test_valid_value("grid-template-columns", 'subgrid [a] [b] [] [c]'); test_valid_value("grid-template-columns", 'subgrid [] [] [] [c]'); test_valid_value("grid-template-columns", 'subgrid [] [] [] []'); test_valid_value("grid-template-columns", 'subgrid repeat(auto-fill, [a])'); +test_valid_value("grid-template-columns", 'subgrid repeat(auto-fill, [])'); test_valid_value("grid-template-columns", 'subgrid [a] repeat(auto-fill, [b])'); test_valid_value("grid-template-columns", 'subgrid [a] repeat(auto-fill, [b]) [c]'); test_valid_value("grid-template-columns", 'subgrid [] repeat(auto-fill, []) []'); @@ -53,4 +55,4 @@ test_valid_value("grid-template-columns", 'subgrid [a] repeat(2, [b]) repeat(aut - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/independent-formatting-context-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/independent-formatting-context-ref.html new file mode 100644 index 00000000000..79b90c340d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/independent-formatting-context-ref.html @@ -0,0 +1,35 @@ + + + + + Test: subgrid disabled if grid item establishes independent formatting context + + + + + + +
    +
    + +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/independent-formatting-context.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/independent-formatting-context.html new file mode 100644 index 00000000000..888b23c2f62 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/independent-formatting-context.html @@ -0,0 +1,61 @@ + + + + + Test: subgrid disabled if grid item establishes independent formatting context + + + + + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-002-ref.html new file mode 100644 index 00000000000..2399328becc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-002-ref.html @@ -0,0 +1,40 @@ + + + + + Reference: subgrid item using line names from outer grid + + + + + +
    +
    + +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-002.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-002.html index a10a4d019b9..574e353f877 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-002.html +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-002.html @@ -8,7 +8,7 @@ CSS Grid Test: subgrid item using line names from outer grid - + + + + +
    + +
    +
    + x +
    +
    +
    + +
    + +
    +
    + x +
    +
    +
    + +
    + +
    +
    + x +
    +
    +
    + +
    + +
    +
    + x +
    +
    +
    + +
    + +
    +
    + x +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-009.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-009.html new file mode 100644 index 00000000000..bd8a7768720 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-009.html @@ -0,0 +1,76 @@ + + + + + CSS Grid Test: subgrid line names are not inherited to a non-subgridded axis + + + + + + + +
    + +
    +
    + x +
    +
    +
    + +
    + +
    +
    + x +
    +
    +
    + +
    + +
    +
    + x +
    +
    +
    + +
    + +
    +
    + x +
    +
    +
    + +
    + +
    +
    + x +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-010-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-010-ref.html new file mode 100644 index 00000000000..9232f1dcf2a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-010-ref.html @@ -0,0 +1,106 @@ + + + + + CSS Grid Test: subgrid implicit line names are clamped to the subgrid axis + + + + + + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-010.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-010.html new file mode 100644 index 00000000000..f22cfe3303e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-010.html @@ -0,0 +1,107 @@ + + + + + CSS Grid Test: subgrid implicit line names are clamped to the subgrid axis + + + + + + + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + +
    + +
    + x +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-011-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-011-ref.html new file mode 100644 index 00000000000..40f35439808 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-011-ref.html @@ -0,0 +1,41 @@ + + + + + CSS Grid Test: subgrid line names do not apply to non-subgrids + + + + + + +
    + + x +
    + +
    + +
    + x +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-011.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-011.html new file mode 100644 index 00000000000..d3bb734447f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-011.html @@ -0,0 +1,42 @@ + + + + + CSS Grid Test: subgrid line names do not apply to non-subgrids + + + + + + + +
    + + x +
    + +
    + +
    + x +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-001.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-001.html index 12010c32f29..8ecbccbea64 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-001.html @@ -14,6 +14,10 @@ html,body { color:black; background-color:white; font:10px/1 monospace; padding:0; margin:0; } +#report { + white-space: pre-wrap; +} + .grid { display: inline-grid; width: 50px; @@ -28,8 +32,8 @@ html,body { background: grey; } -.fit-0a { grid-template-columns: repeat(auto-fit, [y] 30px) [z] 1px [z] 1px [z] 1px [z] 1px [z] } -.fit-0b { grid-template-columns: [x] repeat(auto-fit, [y] 30px) [z] 1px [z] 1px [z] 1px [z] } +.fit-0a { grid-template-columns: repeat(auto-fit, [y] 30px) [z] 1px [z] 1px [z] 1px [z] 1px [z] minmax(0, auto) } +.fit-0b { grid-template-columns: [x] repeat(auto-fit, [y] 30px) [z] 1px [z] 1px [z] 1px [z] minmax(0, auto) minmax(0, auto) } .fit-0c { grid-template-columns: [x] 1px [x] repeat(auto-fit, [y] 10px) [z] 1px [z] 1px [z] } .fit-0d { grid-template-columns: [x] 2px [x] 2px [x] repeat(auto-fit, [y] 10px) [z] 1px [z] } .fit-0e { grid-template-columns: [x] 2px [x] 2px [x] 2px [x] repeat(auto-fit, [y] 10px) [z] } @@ -49,18 +53,18 @@ html,body { .fit-1e { grid-template-columns: [x] 2px [x] 2px [x] 2px [x] repeat(auto-fit, [y] 10px) } .fit-2a { grid-template-columns: repeat(auto-fit, [y] 10px) [z] 1px [z] 1px [z] } -.fit-2b { grid-template-columns: [x] repeat(auto-fit, [y] 10px) [z] 1px [z] } -.fit-2c { grid-template-columns: [x] 2px [x] repeat(auto-fit, [y] 10px) [z] } +.fit-2b { grid-template-columns: [x] repeat(auto-fit, [y] 10px) [z] 1px [z] minmax(0, auto) } +.fit-2c { grid-template-columns: [x] 2px [x] repeat(auto-fit, [y] 10px) [z] minmax(0, auto) } .fit-2d { grid-template-columns: [x] 2px [x] 2px [x] repeat(auto-fit, [y] 10px) } -.fit-3a { grid-template-columns: repeat(auto-fit, [y] 10px) [z] 1px [z] } -.fit-3b { grid-template-columns: [x] repeat(auto-fit, [y] 10px) [z] } -.fit-3c { grid-template-columns: [x] 2px [x] repeat(auto-fit, [y] 10px) } +.fit-3a { grid-template-columns: repeat(auto-fit, [y] 10px) [z] 1px [z] minmax(0, auto) } +.fit-3b { grid-template-columns: [x] repeat(auto-fit, [y] 10px) [z] minmax(0, auto) } +.fit-3c { grid-template-columns: [x] 2px [x] repeat(auto-fit, [y] 10px) minmax(0, auto) } -.fit-4a { grid-template-columns: repeat(auto-fit, [y] 10px) [z] } -.fit-4b { grid-template-columns: [x] repeat(auto-fit, [y] 10px) } +.fit-4a { grid-template-columns: repeat(auto-fit, [y] 10px) [z] minmax(0, auto) } +.fit-4b { grid-template-columns: [x] repeat(auto-fit, [y] 10px) minmax(0, auto) } -.fit-5 { grid-template-columns: repeat(auto-fit, [y] 10px) } +.fit-5 { grid-template-columns: repeat(auto-fit, [y] 10px) minmax(0, auto) } .subgrid > :nth-child(2n) { background: black; } .subgrid > :nth-child(2n+1) { background: pink; } @@ -433,10 +437,12 @@ html,body {
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-002.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-002.html index d46f59b99f5..b113f47a0b2 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-002.html +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-002.html @@ -14,6 +14,10 @@ html,body { color:black; background-color:white; font:10px/1 monospace; padding:0; margin:0; } +#report { + white-space: pre-wrap; +} + .grid { display: inline-grid; height: 50px; @@ -32,8 +36,8 @@ html,body { background: grey; } -.fit-0a { grid-template-rows: repeat(auto-fit, [y] 30px) [z] 1px [z] 1px [z] 1px [z] 1px [z] } -.fit-0b { grid-template-rows: [x] repeat(auto-fit, [y] 30px) [z] 1px [z] 1px [z] 1px [z] } +.fit-0a { grid-template-rows: repeat(auto-fit, [y] 30px) [z] 1px [z] 1px [z] 1px [z] 1px [z] minmax(0, auto) } +.fit-0b { grid-template-rows: [x] repeat(auto-fit, [y] 30px) [z] 1px [z] 1px [z] 1px [z] minmax(0, auto) minmax(0, auto) } .fit-0c { grid-template-rows: [x] 1px [x] repeat(auto-fit, [y] 10px) [z] 1px [z] 1px [z] } .fit-0d { grid-template-rows: [x] 2px [x] 2px [x] repeat(auto-fit, [y] 10px) [z] 1px [z] } .fit-0e { grid-template-rows: [x] 2px [x] 2px [x] 2px [x] repeat(auto-fit, [y] 10px) [z] } @@ -53,18 +57,18 @@ html,body { .fit-1e { grid-template-rows: [x] 2px [x] 2px [x] 2px [x] repeat(auto-fit, [y] 10px) } .fit-2a { grid-template-rows: repeat(auto-fit, [y] 10px) [z] 1px [z] 1px [z] } -.fit-2b { grid-template-rows: [x] repeat(auto-fit, [y] 10px) [z] 1px [z] } -.fit-2c { grid-template-rows: [x] 2px [x] repeat(auto-fit, [y] 10px) [z] } +.fit-2b { grid-template-rows: [x] repeat(auto-fit, [y] 10px) [z] 1px [z] minmax(0, auto) } +.fit-2c { grid-template-rows: [x] 2px [x] repeat(auto-fit, [y] 10px) [z] minmax(0, auto) } .fit-2d { grid-template-rows: [x] 2px [x] 2px [x] repeat(auto-fit, [y] 10px) } -.fit-3a { grid-template-rows: repeat(auto-fit, [y] 10px) [z] 1px [z] } -.fit-3b { grid-template-rows: [x] repeat(auto-fit, [y] 10px) [z] } -.fit-3c { grid-template-rows: [x] 2px [x] repeat(auto-fit, [y] 10px) } +.fit-3a { grid-template-rows: repeat(auto-fit, [y] 10px) [z] 1px [z] minmax(0, auto) } +.fit-3b { grid-template-rows: [x] repeat(auto-fit, [y] 10px) [z] minmax(0, auto) } +.fit-3c { grid-template-rows: [x] 2px [x] repeat(auto-fit, [y] 10px) minmax(0, auto) } -.fit-4a { grid-template-rows: repeat(auto-fit, [y] 10px) [z] } -.fit-4b { grid-template-rows: [x] repeat(auto-fit, [y] 10px) } +.fit-4a { grid-template-rows: repeat(auto-fit, [y] 10px) [z] minmax(0, auto) } +.fit-4b { grid-template-rows: [x] repeat(auto-fit, [y] 10px) minmax(0, auto) } -.fit-5 { grid-template-rows: repeat(auto-fit, [y] 10px) } +.fit-5 { grid-template-rows: repeat(auto-fit, [y] 10px) minmax(0, auto) } .subgrid > :nth-child(2n) { background: black; } .subgrid > :nth-child(2n+1) { background: pink; } @@ -437,10 +441,12 @@ html,body {
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-001-ref.html new file mode 100644 index 00000000000..dd4b0dccf21 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-001-ref.html @@ -0,0 +1,55 @@ + + + + Reference: baseline-aligned subgrid item with padding + + + + + + +
    + +
    +  A +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-001.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-001.html new file mode 100644 index 00000000000..95469c0018e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-001.html @@ -0,0 +1,56 @@ + + + + CSS Grid Test: baseline-aligned subgrid item with padding + + + + + + + + +
    + +
    +  A +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-002-ref.html new file mode 100644 index 00000000000..3008d31e030 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-002-ref.html @@ -0,0 +1,54 @@ + + + + Reference: baseline-aligned subgrid item with orthogonal writing-mode + + + + + + +
    + +
    +  A +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-002.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-002.html new file mode 100644 index 00000000000..12a17d7cc4b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-002.html @@ -0,0 +1,57 @@ + + + + CSS Grid Test: baseline-aligned subgrid item with orthogonal writing-mode + + + + + + + + +
    + +
    +  A +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-003-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-003-ref.html new file mode 100644 index 00000000000..d6da254d887 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-003-ref.html @@ -0,0 +1,37 @@ + + + + + CSS Grid Test: baseline-aligned subgrid item + + + + + + +
    +
    A
    +
    A
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-003.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-003.html new file mode 100644 index 00000000000..da8e550fb4f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-003.html @@ -0,0 +1,52 @@ + + + + + CSS Grid Test: baseline-aligned subgrid item + + + + + + + +
    +
    A
    +
    +
    A
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-004-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-004-ref.html new file mode 100644 index 00000000000..4240df1659e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-004-ref.html @@ -0,0 +1,36 @@ + + + + + CSS Grid Test: baseline-aligned subgrid item + + + + + + +
    +
    A
    +
    A
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-004.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-004.html new file mode 100644 index 00000000000..c2bcaccc330 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-004.html @@ -0,0 +1,54 @@ + + + + + CSS Grid Test: baseline-aligned subgrid item + + + + + + + +
    +
    A
    +
    +
    A
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-001-ref.html deleted file mode 100644 index 30f4bf7a969..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-001-ref.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - Reference: subgrid margin/border/padding that overflow the edge track - - - - - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-001.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-001.html deleted file mode 100644 index a9aec76a9f0..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-001.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - CSS Grid Test: subgrid margin/border/padding that overflow the edge track - - - - - - - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-002.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-002.html deleted file mode 100644 index 1bd1fa67bfc..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-002.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - CSS Grid Test: orthogonal writing-mode subgrid margin/border/padding that overflow the edge track - - - - - - - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-003-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-003-ref.html deleted file mode 100644 index d771427f6e5..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-003-ref.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - Reference: subgrid margin/border/padding that overflow the edge track - - - - - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-003.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-003.html deleted file mode 100644 index 45afcb56cbd..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-003.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - CSS Grid Test: subgrid margin/border/padding that overflow the edge track - - - - - - - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - - - diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-004-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-004-ref.html deleted file mode 100644 index 5188a3c9fbf..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-004-ref.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - CSS Grid Reference: Subgrid with margin/border/padding and 'overflow' property - - - - - -

    All the following grid containers should have the same rendering.

    - -

    Test 1: Subgrid has overflow:visible

    -
    -
    -
    -
    -
    -
    -
    -
    - -

    Test 2: Subgrid has overflow:auto

    -
    -
    -
    -
    -
    -
    -
    -
    - -

    Test 3: Subgrid has overflow:hidden

    -
    -
    -
    -
    -
    -
    -
    -
    - diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-004.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-004.html deleted file mode 100644 index e9a446bc5bf..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-004.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - CSS Grid Test: Subgrid with margin/border/padding and 'overflow' property - - - - - - - - -

    All the following grid containers should have the same rendering.

    - -

    Test 1: Subgrid has overflow:visible

    -
    -
    -
    -
    -
    -
    -
    -
    - -

    Test 2: Subgrid has overflow:auto

    -
    -
    -
    -
    -
    -
    -
    -
    - -

    Test 3: Subgrid has overflow:hidden

    -
    -
    -
    -
    -
    -
    -
    -
    - diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-reflow-root-crash.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-reflow-root-crash.html new file mode 100644 index 00000000000..1e2b9081eb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-reflow-root-crash.html @@ -0,0 +1,15 @@ + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-stretch-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-stretch-ref.html new file mode 100644 index 00000000000..33e8669da01 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-stretch-ref.html @@ -0,0 +1,42 @@ + + + + CSS Grid Test: The subgrid is always stretched in its subgridded dimension(s) + + + + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-stretch.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-stretch.html new file mode 100644 index 00000000000..321e12d2a3b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/subgrid-stretch.html @@ -0,0 +1,96 @@ + + + + CSS Grid Test: The subgrid is always stretched in its subgridded dimension(s) + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/whitespace-reattach.html b/tests/wpt/web-platform-tests/css/css-grid/whitespace-reattach.html new file mode 100644 index 00000000000..f97934eb30e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/whitespace-reattach.html @@ -0,0 +1,15 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +text +
    + diff --git a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-018.html b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-018.html new file mode 100644 index 00000000000..95bef09bbe4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-018.html @@ -0,0 +1,22 @@ + + +CSS Highlight API Test: Range across contain boundary is painted + + + + +One two three… + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-inheritance-003-ref.html b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-inheritance-003-ref.html new file mode 100644 index 00000000000..cdab7615e4c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-inheritance-003-ref.html @@ -0,0 +1,10 @@ + + + + +
    foobar
    + diff --git a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-inheritance-003.html b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-inheritance-003.html new file mode 100644 index 00000000000..e449ebf334f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-inheritance-003.html @@ -0,0 +1,23 @@ + + +CSS Highlight API Test: Inheritance + + + + + +
    foobar
    + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-overlapping-highlights-001-ref.html b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-overlapping-highlights-001-ref.html index 8049ba2257c..3c08ad55aef 100644 --- a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-overlapping-highlights-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-overlapping-highlights-001-ref.html @@ -4,9 +4,13 @@ body { font-size: 3em; font-weight: bolder; + + } + #affected1 { + color: red; } #affected2 { color: green; } -This should have default style (black).This should have 'highlight2' style (green). \ No newline at end of file +This should have 'highlight1' style (red).This should have 'highlight2' style (green). \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-overlapping-highlights-001.html b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-overlapping-highlights-001.html index 25f4e7e362a..0b380574bc5 100644 --- a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-overlapping-highlights-001.html +++ b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-overlapping-highlights-001.html @@ -16,21 +16,19 @@ color: green; } -This should have default style (black).This should have 'highlight2' style (green). +This should have 'highlight1' style (red).This should have 'highlight2' style (green). \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-002.html b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-002.html index be4280966e2..43a0b06c35e 100644 --- a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-002.html +++ b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-002.html @@ -1,21 +1,21 @@ -CSS Highlight API Test: +CSS Highlight API Test: StaticRange across contain boundary is painted - + One two three… \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-004.html b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-004.html deleted file mode 100644 index 14e9766a981..00000000000 --- a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-004.html +++ /dev/null @@ -1,30 +0,0 @@ - - - -CSS Highlight API Test: - - - - - -One two three… - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-005.html b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-005.html deleted file mode 100644 index b955b0fcee4..00000000000 --- a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-005.html +++ /dev/null @@ -1,30 +0,0 @@ - - - -CSS Highlight API Test: - - - - - -One two three… - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-006.html b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-006.html deleted file mode 100644 index 8436102240d..00000000000 --- a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-006.html +++ /dev/null @@ -1,29 +0,0 @@ - - - -CSS Highlight API Test: - - - - - -One two three… - - diff --git a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-007.html b/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-007.html deleted file mode 100644 index 03a7ee6d545..00000000000 --- a/tests/wpt/web-platform-tests/css/css-highlight-api/painting/custom-highlight-painting-staticrange-007.html +++ /dev/null @@ -1,29 +0,0 @@ - - - -CSS Highlight API Test: - - - - - -One two three… - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/css-color-4-colors-default-to-oklab-gradient.html b/tests/wpt/web-platform-tests/css/css-images/gradient/css-color-4-colors-default-to-oklab-gradient.html new file mode 100644 index 00000000000..5be18ac30ff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/css-color-4-colors-default-to-oklab-gradient.html @@ -0,0 +1,21 @@ + + + + CSS color 4 colors default to OKLab gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-001-ref.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-001-ref.html new file mode 100644 index 00000000000..8f3070fcbe4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-001-ref.html @@ -0,0 +1,15 @@ + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-001.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-001.html new file mode 100644 index 00000000000..98a9d923458 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-001.html @@ -0,0 +1,27 @@ + + + + Gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-002-ref.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-002-ref.html new file mode 100644 index 00000000000..4db29f5ce9e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-002-ref.html @@ -0,0 +1,18 @@ + + + + Gradient interpolation + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-002.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-002.html new file mode 100644 index 00000000000..5a0790ab0d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-002.html @@ -0,0 +1,27 @@ + + + + Gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-003-ref.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-003-ref.html new file mode 100644 index 00000000000..4db29f5ce9e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-003-ref.html @@ -0,0 +1,18 @@ + + + + Gradient interpolation + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-003.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-003.html new file mode 100644 index 00000000000..86f76a7365c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-003.html @@ -0,0 +1,27 @@ + + + + Gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-004-ref.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-004-ref.html new file mode 100644 index 00000000000..f197386bcfb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-004-ref.html @@ -0,0 +1,17 @@ + + + + Gradient interpolation + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-004.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-004.html new file mode 100644 index 00000000000..ada406fd2a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-004.html @@ -0,0 +1,28 @@ + + + + Gradient interpolation + + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-005-ref.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-005-ref.html new file mode 100644 index 00000000000..b4a36ff6d0e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-005-ref.html @@ -0,0 +1,18 @@ + + + + Gradient interpolation + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-005.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-005.html new file mode 100644 index 00000000000..1165fcb5a69 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-005.html @@ -0,0 +1,27 @@ + + + + Gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-006-ref.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-006-ref.html new file mode 100644 index 00000000000..8ed6e683b27 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-006-ref.html @@ -0,0 +1,18 @@ + + + + Gradient interpolation + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-006.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-006.html new file mode 100644 index 00000000000..e719d2e110a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-006.html @@ -0,0 +1,27 @@ + + + + Gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-007-ref.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-007-ref.html new file mode 100644 index 00000000000..b4a36ff6d0e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-007-ref.html @@ -0,0 +1,18 @@ + + + + Gradient interpolation + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-007.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-007.html new file mode 100644 index 00000000000..e85fec2b4de --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-007.html @@ -0,0 +1,27 @@ + + + + Gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-008-ref.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-008-ref.html new file mode 100644 index 00000000000..b4a36ff6d0e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-008-ref.html @@ -0,0 +1,18 @@ + + + + Gradient interpolation + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-008.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-008.html new file mode 100644 index 00000000000..5201062f8e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-008.html @@ -0,0 +1,27 @@ + + + + Gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-009-ref.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-009-ref.html new file mode 100644 index 00000000000..b4a36ff6d0e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-009-ref.html @@ -0,0 +1,18 @@ + + + + Gradient interpolation + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-009.html b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-009.html new file mode 100644 index 00000000000..d361bdc3f1c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/gradient-eval-009.html @@ -0,0 +1,27 @@ + + + + Gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/legacy-color-gradient.html b/tests/wpt/web-platform-tests/css/css-images/gradient/legacy-color-gradient.html new file mode 100644 index 00000000000..8fe3ca83d87 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/legacy-color-gradient.html @@ -0,0 +1,21 @@ + + + + Legacy color gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/oklab-gradient-expected.html b/tests/wpt/web-platform-tests/css/css-images/gradient/oklab-gradient-expected.html new file mode 100644 index 00000000000..ca2232e3809 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/oklab-gradient-expected.html @@ -0,0 +1,19 @@ + + + + OKLab gradient interpolation + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/oklab-gradient.html b/tests/wpt/web-platform-tests/css/css-images/gradient/oklab-gradient.html new file mode 100644 index 00000000000..71230ef5997 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/oklab-gradient.html @@ -0,0 +1,21 @@ + + + + OKLab gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/resources/oklab-gradient.png b/tests/wpt/web-platform-tests/css/css-images/gradient/resources/oklab-gradient.png new file mode 100644 index 00000000000..9e52fd9b84b Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-images/gradient/resources/oklab-gradient.png differ diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/resources/red-green-gradient-linear-colorspace.png b/tests/wpt/web-platform-tests/css/css-images/gradient/resources/red-green-gradient-linear-colorspace.png new file mode 100644 index 00000000000..e379a5df3e1 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-images/gradient/resources/red-green-gradient-linear-colorspace.png differ diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/resources/srgb-gradient.png b/tests/wpt/web-platform-tests/css/css-images/gradient/resources/srgb-gradient.png new file mode 100644 index 00000000000..1fc6660919a Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-images/gradient/resources/srgb-gradient.png differ diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/resources/xyz-gradient.png b/tests/wpt/web-platform-tests/css/css-images/gradient/resources/xyz-gradient.png new file mode 100644 index 00000000000..eb3ab789366 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-images/gradient/resources/xyz-gradient.png differ diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-gradient-expected.html b/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-gradient-expected.html new file mode 100644 index 00000000000..49a402d68e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-gradient-expected.html @@ -0,0 +1,19 @@ + + + + sRGB gradient interpolation + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-gradient.html b/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-gradient.html new file mode 100644 index 00000000000..e27c637e22e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-gradient.html @@ -0,0 +1,21 @@ + + + + sRGb gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-linear-gradient-expected.html b/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-linear-gradient-expected.html new file mode 100644 index 00000000000..34f660f6f02 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-linear-gradient-expected.html @@ -0,0 +1,19 @@ + + + + sRGB-linear gradient interpolation + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-linear-gradient.html b/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-linear-gradient.html new file mode 100644 index 00000000000..0869f3dfbfa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/srgb-linear-gradient.html @@ -0,0 +1,21 @@ + + + + sRGB-linear gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/xyz-gradient-expected.html b/tests/wpt/web-platform-tests/css/css-images/gradient/xyz-gradient-expected.html new file mode 100644 index 00000000000..a435bbfd588 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/xyz-gradient-expected.html @@ -0,0 +1,19 @@ + + + + XYZ gradient interpolation + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradient/xyz-gradient.html b/tests/wpt/web-platform-tests/css/css-images/gradient/xyz-gradient.html new file mode 100644 index 00000000000..f760f148cd2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/gradient/xyz-gradient.html @@ -0,0 +1,21 @@ + + + + XYZ gradient interpolation + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/gradients-with-border.html b/tests/wpt/web-platform-tests/css/css-images/gradients-with-border.html index ab964aeb909..cfe751da6b4 100644 --- a/tests/wpt/web-platform-tests/css/css-images/gradients-with-border.html +++ b/tests/wpt/web-platform-tests/css/css-images/gradients-with-border.html @@ -7,6 +7,7 @@ + - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-002.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-002.html deleted file mode 100644 index 334ec840aa6..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-002.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - -CSS Images Module Level 4: image-resolution scaling up from image - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-003.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-003.html deleted file mode 100644 index c7a5cd58366..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-003.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - -CSS Images Module Level 4: image-resolution scaling down from image - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-004.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-004.html deleted file mode 100644 index dd6a1b997b6..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-004.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - -CSS Images Module Level 4: units in filters are not affected by manual image-resolution - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-005.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-005.html deleted file mode 100644 index 0496ec5955c..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-005.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - -CSS Images Module Level 4: units in filters are not affected by image-resolution - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-006.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-006.html deleted file mode 100644 index 0ffbbd6331f..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-006.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - -CSS Images Module Level 4: units in filters are not affected by image-resolution - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-007.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-007.html deleted file mode 100644 index f47777ff9e3..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-007.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - -CSS Images Module Level 4: image-resolution scaling from image with animorphic aspect ratio - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-008.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-008.html deleted file mode 100644 index 9ec62d38ae7..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-008.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - -CSS Images Module Level 4: image-resolution set manually applies to background images - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-009.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-009.html deleted file mode 100644 index fcd49705171..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-009.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - -CSS Images Module Level 4: image-resolution from images applies to background images - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-010.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-010.html deleted file mode 100644 index a512d5c4b00..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-010.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - -CSS Images Module Level 4: image-resolution set manually applies to background images and filters are unaffected - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-011.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-011.html deleted file mode 100644 index b7a1724be15..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-011.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - -CSS Images Module Level 4: image-resolution set manually applies to background images and filters are unaffected - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/reference/100x100-blue-blur4px.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/reference/100x100-blue-blur4px.html deleted file mode 100644 index f7b541ceec9..00000000000 --- a/tests/wpt/web-platform-tests/css/css-images/image-resolution/reference/100x100-blue-blur4px.html +++ /dev/null @@ -1,2 +0,0 @@ - -
    diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-192dpi.png b/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-192dpi.png deleted file mode 100644 index 2e81d91d08d..00000000000 Binary files a/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-192dpi.png and /dev/null differ diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48dpi.png b/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48dpi.png deleted file mode 100644 index 6c3dbbd4103..00000000000 Binary files a/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48dpi.png and /dev/null differ diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48x192dpi.png b/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48x192dpi.png deleted file mode 100644 index ee02902174a..00000000000 Binary files a/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48x192dpi.png and /dev/null differ diff --git a/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-linear.html b/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-linear.html index c739a2a71d2..806845da43b 100644 --- a/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-linear.html +++ b/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-linear.html @@ -3,6 +3,7 @@ + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-contain-intrinsic-size.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-contain-intrinsic-size.html new file mode 100644 index 00000000000..411aff11a49 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-contain-intrinsic-size.html @@ -0,0 +1,20 @@ + + +CSS object-view-box on an element with contain-intrinsic-size + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-empty-bounds-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-empty-bounds-ref.html new file mode 100644 index 00000000000..9cc48196d81 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-empty-bounds-ref.html @@ -0,0 +1,13 @@ + + +CSS object-view-box with empty bounds : ref + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-empty-bounds.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-empty-bounds.html new file mode 100644 index 00000000000..b793182a9d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-empty-bounds.html @@ -0,0 +1,15 @@ + + +CSS object-view-box with empty bounds + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-canvas-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-canvas-ref.html new file mode 100644 index 00000000000..821c2f333f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-canvas-ref.html @@ -0,0 +1,69 @@ + + +CSS object-view-box with object-fit:contain (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-canvas.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-canvas.html new file mode 100644 index 00000000000..ad9b33db85f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-canvas.html @@ -0,0 +1,50 @@ + + + +CSS object-view-box with object-fit:contain + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-img-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-img-ref.html new file mode 100644 index 00000000000..7a4ac607d50 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-img-ref.html @@ -0,0 +1,69 @@ + + +CSS object-view-box with object-fit:contain (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-img.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-img.html new file mode 100644 index 00000000000..d2e4c08a051 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-img.html @@ -0,0 +1,50 @@ + + + +CSS object-view-box with object-fit:contain + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-svg-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-svg-ref.html new file mode 100644 index 00000000000..b6fea8087bc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-svg-ref.html @@ -0,0 +1,69 @@ + + +CSS object-view-box with object-fit:contain (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-svg.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-svg.html new file mode 100644 index 00000000000..cfe711fb10c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-svg.html @@ -0,0 +1,50 @@ + + + +CSS object-view-box with object-fit:contain + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-video-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-video-ref.html new file mode 100644 index 00000000000..174c4d3bf93 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-video-ref.html @@ -0,0 +1,69 @@ + + +CSS object-view-box with object-fit:contain (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-video.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-video.html new file mode 100644 index 00000000000..bd4184cc07f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-contain-video.html @@ -0,0 +1,50 @@ + + + +CSS object-view-box with object-fit:contain + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-canvas-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-canvas-ref.html new file mode 100644 index 00000000000..558cfe8ee36 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-canvas-ref.html @@ -0,0 +1,72 @@ + + +CSS object-view-box with object-fit:contain (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-canvas.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-canvas.html new file mode 100644 index 00000000000..38976c563a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-canvas.html @@ -0,0 +1,47 @@ + + + +CSS object-view-box with object-fit:contain + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-img-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-img-ref.html new file mode 100644 index 00000000000..7e2bdc754dc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-img-ref.html @@ -0,0 +1,72 @@ + + +CSS object-view-box with object-fit:contain (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-img.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-img.html new file mode 100644 index 00000000000..1103788435e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-img.html @@ -0,0 +1,47 @@ + + + +CSS object-view-box with object-fit:contain + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-svg-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-svg-ref.html new file mode 100644 index 00000000000..e449c60f5eb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-svg-ref.html @@ -0,0 +1,72 @@ + + +CSS object-view-box with object-fit:contain (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-svg.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-svg.html new file mode 100644 index 00000000000..4efe28574ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-svg.html @@ -0,0 +1,47 @@ + + + +CSS object-view-box with object-fit:contain + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-video-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-video-ref.html new file mode 100644 index 00000000000..5f67394f61d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-video-ref.html @@ -0,0 +1,72 @@ + + +CSS object-view-box with object-fit:contain (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-video.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-video.html new file mode 100644 index 00000000000..bc519a68fc6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-cover-video.html @@ -0,0 +1,47 @@ + + + +CSS object-view-box with object-fit:contain + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-canvas-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-canvas-ref.html new file mode 100644 index 00000000000..be3b221400a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-canvas-ref.html @@ -0,0 +1,143 @@ + + +CSS object-view-box with object-fit:fill (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + +
    + +
    +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-canvas.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-canvas.html new file mode 100644 index 00000000000..4341564195a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-canvas.html @@ -0,0 +1,95 @@ + + + +CSS object-view-box with object-fit:fill + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-img-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-img-ref.html new file mode 100644 index 00000000000..32c97c8312f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-img-ref.html @@ -0,0 +1,143 @@ + + +CSS object-view-box with object-fit:fill (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + +
    + +
    +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-img.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-img.html new file mode 100644 index 00000000000..c9d938bfa3a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-img.html @@ -0,0 +1,95 @@ + + + +CSS object-view-box with object-fit:fill + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-svg-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-svg-ref.html new file mode 100644 index 00000000000..74c98d6fd3a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-svg-ref.html @@ -0,0 +1,143 @@ + + +CSS object-view-box with object-fit:fill (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + +
    + +
    +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-svg.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-svg.html new file mode 100644 index 00000000000..38c54e96186 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-svg.html @@ -0,0 +1,95 @@ + + + +CSS object-view-box with object-fit:fill + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-video-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-video-ref.html new file mode 100644 index 00000000000..eb46dde0876 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-video-ref.html @@ -0,0 +1,143 @@ + + +CSS object-view-box with object-fit:fill (ref) + + + + + + +
    + +
    +
    + +
    +
    + +
    + +
    + +
    +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-video.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-video.html new file mode 100644 index 00000000000..c9f91b6e466 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-fill-video.html @@ -0,0 +1,95 @@ + + + +CSS object-view-box with object-fit:fill + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-canvas-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-canvas-ref.html new file mode 100644 index 00000000000..afb695bf349 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-canvas-ref.html @@ -0,0 +1,52 @@ + + +CSS object-view-box with object-fit:none (ref) + + + + + + +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-canvas.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-canvas.html new file mode 100644 index 00000000000..6fe8c16efee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-canvas.html @@ -0,0 +1,37 @@ + + + +CSS object-view-box with object-fit:none + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-img-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-img-ref.html new file mode 100644 index 00000000000..74d5fc737f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-img-ref.html @@ -0,0 +1,52 @@ + + +CSS object-view-box with object-fit:none (ref) + + + + + + +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-img.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-img.html new file mode 100644 index 00000000000..f4a7412297f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-img.html @@ -0,0 +1,37 @@ + + + +CSS object-view-box with object-fit:none + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-svg-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-svg-ref.html new file mode 100644 index 00000000000..da14fa024dd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-svg-ref.html @@ -0,0 +1,52 @@ + + +CSS object-view-box with object-fit:none (ref) + + + + + + +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-svg.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-svg.html new file mode 100644 index 00000000000..c1036921651 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-svg.html @@ -0,0 +1,37 @@ + + + +CSS object-view-box with object-fit:none + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-video-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-video-ref.html new file mode 100644 index 00000000000..f10e1c18d49 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-video-ref.html @@ -0,0 +1,52 @@ + + +CSS object-view-box with object-fit:none (ref) + + + + + + +
    + +
    +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-video.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-video.html new file mode 100644 index 00000000000..34b08572e99 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-fit-none-video.html @@ -0,0 +1,37 @@ + + + +CSS object-view-box with object-fit:none + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-iframe-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-iframe-ref.html new file mode 100644 index 00000000000..e014e103815 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-iframe-ref.html @@ -0,0 +1,12 @@ + + +CSS object-view-box with an svg with no intrinsic size : ref + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-iframe.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-iframe.html new file mode 100644 index 00000000000..a144a8ff316 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-iframe.html @@ -0,0 +1,14 @@ + + +CSS object-view-box on an iframe should be no-op + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-interpolation.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-interpolation.html new file mode 100644 index 00000000000..18ac72db70d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-interpolation.html @@ -0,0 +1,60 @@ + + + +clip-path-interpolation + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-negative-bounds-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-negative-bounds-ref.html new file mode 100644 index 00000000000..3b4eaac30ee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-negative-bounds-ref.html @@ -0,0 +1,13 @@ + + +CSS object-view-box with a negative size : ref + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-negative-bounds.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-negative-bounds.html new file mode 100644 index 00000000000..34dd6075b40 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-negative-bounds.html @@ -0,0 +1,15 @@ + + +CSS object-view-box with a negative size + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-parsing.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-parsing.html new file mode 100644 index 00000000000..da17b7936fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-parsing.html @@ -0,0 +1,31 @@ + + + + +CSS object-view-box: computed values + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-property-changed-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-property-changed-ref.html new file mode 100644 index 00000000000..8974dfd6630 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-property-changed-ref.html @@ -0,0 +1,25 @@ + + +Changing CSS object-view-box should trigger relayout : ref + + + + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-property-changed.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-property-changed.html new file mode 100644 index 00000000000..2574558ea1e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-property-changed.html @@ -0,0 +1,34 @@ + + +Changing CSS object-view-box should trigger relayout + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-auto-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-auto-ref.html new file mode 100644 index 00000000000..54e90777fa8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-auto-ref.html @@ -0,0 +1,11 @@ + + +CSS object-view-box on an element with rect() auto : ref + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-auto.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-auto.html new file mode 100644 index 00000000000..97f18c781a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-auto.html @@ -0,0 +1,14 @@ + + +CSS object-view-box on an element with rect() auto + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-percentage-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-percentage-ref.html new file mode 100644 index 00000000000..3d413fb5ce9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-percentage-ref.html @@ -0,0 +1,20 @@ + + +CSS object-view-box on an element with rect() percent values : ref + + + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-percentage.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-percentage.html new file mode 100644 index 00000000000..45f05938d20 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-percentage.html @@ -0,0 +1,14 @@ + + +CSS object-view-box on an element with rect() percent values + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-ref.html new file mode 100644 index 00000000000..b27a5b8f83c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect-ref.html @@ -0,0 +1,21 @@ + + +CSS object-view-box on an element with rect() : ref + + + + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect.html new file mode 100644 index 00000000000..2a0a8d307bd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-rect.html @@ -0,0 +1,14 @@ + + +CSS object-view-box on an element with rect() + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-same-size-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-same-size-ref.html new file mode 100644 index 00000000000..9e237a82b9d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-same-size-ref.html @@ -0,0 +1,13 @@ + + +CSS object-view-box with same size as intrinsic size : ref + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-same-size.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-same-size.html new file mode 100644 index 00000000000..0daa3601557 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-same-size.html @@ -0,0 +1,15 @@ + + +CSS object-view-box with same size as intrinsic size + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-size-containment-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-size-containment-ref.html new file mode 100644 index 00000000000..24097c6883a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-size-containment-ref.html @@ -0,0 +1,17 @@ + + +CSS object-view-box on an element with size containment : ref + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-size-containment.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-size-containment.html new file mode 100644 index 00000000000..c58e6735bf4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-size-containment.html @@ -0,0 +1,18 @@ + + +CSS object-view-box on an element with size containment + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-svg-img-no-size-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-svg-img-no-size-ref.html new file mode 100644 index 00000000000..ca1ea59e278 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-svg-img-no-size-ref.html @@ -0,0 +1,12 @@ + + +CSS object-view-box with an svg with no intrinsic size : ref + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-svg-img-no-size.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-svg-img-no-size.html new file mode 100644 index 00000000000..1d1c97a6e5f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-svg-img-no-size.html @@ -0,0 +1,15 @@ + + +CSS object-view-box with an svg with no intrinsic size + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-transition-mutation.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-transition-mutation.html new file mode 100644 index 00000000000..1542afad019 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-transition-mutation.html @@ -0,0 +1,26 @@ + +Unrelated mutation does not affect object-view-box transition + + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-canvas-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-canvas-ref.html new file mode 100644 index 00000000000..d9942ed5356 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-canvas-ref.html @@ -0,0 +1,31 @@ + + + +CSS object-view-box with vertical writing mode : ref + + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-canvas.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-canvas.html new file mode 100644 index 00000000000..8e0aaea2746 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-canvas.html @@ -0,0 +1,25 @@ + + + +CSS object-view-box with vertical writing mode + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-img-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-img-ref.html new file mode 100644 index 00000000000..9bcdb8ba0b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-img-ref.html @@ -0,0 +1,31 @@ + + + +CSS object-view-box with vertical writing mode : ref + + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-img.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-img.html new file mode 100644 index 00000000000..547a2ed3317 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-img.html @@ -0,0 +1,25 @@ + + + +CSS object-view-box with vertical writing mode + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-svg-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-svg-ref.html new file mode 100644 index 00000000000..c350dcfe5f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-svg-ref.html @@ -0,0 +1,31 @@ + + + +CSS object-view-box with vertical writing mode : ref + + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-svg.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-svg.html new file mode 100644 index 00000000000..5d90bb6026a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-svg.html @@ -0,0 +1,25 @@ + + + +CSS object-view-box with vertical writing mode + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-video-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-video-ref.html new file mode 100644 index 00000000000..f42fe0162b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-video-ref.html @@ -0,0 +1,31 @@ + + + +CSS object-view-box with vertical writing mode : ref + + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-video.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-video.html new file mode 100644 index 00000000000..0dd2e79daef --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-writing-mode-video.html @@ -0,0 +1,25 @@ + + + +CSS object-view-box with vertical writing mode + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh-percentage-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh-percentage-ref.html new file mode 100644 index 00000000000..23d2e063162 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh-percentage-ref.html @@ -0,0 +1,20 @@ + + +CSS object-view-box on an element with xywh() with percentage values : ref + + + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh-percentage.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh-percentage.html new file mode 100644 index 00000000000..0f1d59343ef --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh-percentage.html @@ -0,0 +1,14 @@ + + +CSS object-view-box on an element with xywh() with percentage values + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh-ref.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh-ref.html new file mode 100644 index 00000000000..85ca9d368a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh-ref.html @@ -0,0 +1,21 @@ + + +CSS object-view-box on an element with xywh() : ref + + + + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh.html b/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh.html new file mode 100644 index 00000000000..258ff6f083e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/object-view-box-xywh.html @@ -0,0 +1,14 @@ + + +CSS object-view-box on an element with xywh() + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/parsing/gradient-interpolation-method-computed.html b/tests/wpt/web-platform-tests/css/css-images/parsing/gradient-interpolation-method-computed.html new file mode 100644 index 00000000000..9593a59777a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/parsing/gradient-interpolation-method-computed.html @@ -0,0 +1,108 @@ + + + + +CSS Images Module Level 4: parsing gradients with color interpolation methods + + + + + + + + + +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/parsing/gradient-interpolation-method-invalid.html b/tests/wpt/web-platform-tests/css/css-images/parsing/gradient-interpolation-method-invalid.html new file mode 100644 index 00000000000..336a387e3c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/parsing/gradient-interpolation-method-invalid.html @@ -0,0 +1,46 @@ + + + + +CSS Images Module Level 4: parsing invalid gradients with color interpolation methods + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/parsing/gradient-interpolation-method-valid.html b/tests/wpt/web-platform-tests/css/css-images/parsing/gradient-interpolation-method-valid.html new file mode 100644 index 00000000000..a5ae5c0dd98 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/parsing/gradient-interpolation-method-valid.html @@ -0,0 +1,93 @@ + + + + +CSS Images Module Level 4: parsing gradients with color interpolation methods + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-images/radial-gradient-transition-hint-crash.html b/tests/wpt/web-platform-tests/css/css-images/radial-gradient-transition-hint-crash.html new file mode 100644 index 00000000000..51519a1936f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/radial-gradient-transition-hint-crash.html @@ -0,0 +1,11 @@ + +Color transition hint between values that are far apart + + +
    + +PASS if no crash diff --git a/tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient.html b/tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient.html index 548de864a05..9a9587f29f6 100644 --- a/tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient.html +++ b/tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient.html @@ -4,6 +4,7 @@ + +
    + <__TAG__ class="view_box_subset"> +
    +
    + <__TAG__ class="view_box_subset_with_position"> +
    +
    + <__TAG__ class="view_box_subset_with_scaling"> +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-contain-template.html b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-contain-template.html new file mode 100644 index 00000000000..f874e65b88d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-contain-template.html @@ -0,0 +1,49 @@ + + +CSS object-view-box with object-fit:contain + + + + + + + +<__TAG__ class="view_box_subset"> +<__TAG__ class="view_box_subset_with_position"> +<__TAG__ class="view_box_subset_with_scaling"> + + diff --git a/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-cover-ref-template.html b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-cover-ref-template.html new file mode 100644 index 00000000000..2e830c0bae2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-cover-ref-template.html @@ -0,0 +1,71 @@ + +CSS object-view-box with object-fit:contain (ref) + + + + + + +
    + <__TAG__ class="view_box_subset"> +
    +
    + <__TAG__ class="view_box_subset_with_position"> +
    +
    + <__TAG__ class="view_box_subset_with_scaling"> +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-cover-template.html b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-cover-template.html new file mode 100644 index 00000000000..85664a20b26 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-cover-template.html @@ -0,0 +1,46 @@ + + +CSS object-view-box with object-fit:contain + + + + + + + + +<__TAG__ class="view_box_subset"> +<__TAG__ class="view_box_subset_with_position"> +<__TAG__ class="view_box_subset_with_scaling"> + + diff --git a/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-fill-ref-template.html b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-fill-ref-template.html new file mode 100644 index 00000000000..574e2912860 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-fill-ref-template.html @@ -0,0 +1,142 @@ + +CSS object-view-box with object-fit:fill (ref) + + + + + + +
    + <__TAG__ class="view_box_subset"> +
    +
    + <__TAG__ class="view_box_subset_with_position"> +
    +
    + <__TAG__ class="view_box_subset_with_scaling"> +
    + +
    + <__TAG__> +
    +
    + <__TAG__ class="view_box_superset_with_position"> +
    +
    + <__TAG__ class="view_box_superset_with_scaling"> +
    + +
    + <__TAG__ class="view_box_intersection"> +
    + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-fill-template.html b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-fill-template.html new file mode 100644 index 00000000000..ee2d83e8f20 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-fill-template.html @@ -0,0 +1,94 @@ + + +CSS object-view-box with object-fit:fill + + + + + + + +<__TAG__ class="view_box_subset"> +<__TAG__ class="view_box_subset_with_position"> +<__TAG__ class="view_box_subset_with_scaling"> + +<__TAG__ class="view_box_superset"> +<__TAG__ class="view_box_superset_with_position"> +<__TAG__ class="view_box_superset_with_scaling"> + +<__TAG__ class="view_box_intersection"> + +<__TAG__ class="view_box_no_intersection"> + + diff --git a/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-none-ref-template.html b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-none-ref-template.html new file mode 100644 index 00000000000..861d9230a38 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-none-ref-template.html @@ -0,0 +1,51 @@ + +CSS object-view-box with object-fit:none (ref) + + + + + + +
    + <__TAG__ class="view_box_subset"> +
    +
    + <__TAG__ class="view_box_subset_with_position"> +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-none-template.html b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-none-template.html new file mode 100644 index 00000000000..ab0c083d219 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-fit-none-template.html @@ -0,0 +1,36 @@ + + +CSS object-view-box with object-fit:none + + + + + + + + +<__TAG__ class="view_box_subset"> +<__TAG__ class="view_box_subset_with_position"> + + diff --git a/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-writing-mode-ref-template.html b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-writing-mode-ref-template.html new file mode 100644 index 00000000000..764ba985fd7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-writing-mode-ref-template.html @@ -0,0 +1,30 @@ + + +CSS object-view-box with vertical writing mode : ref + + + + + + +
    + <__TAG__ class="view_box_subset"> +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-writing-mode-template.html b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-writing-mode-template.html new file mode 100644 index 00000000000..a8c1189a96c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/support/object-view-box-writing-mode-template.html @@ -0,0 +1,24 @@ + + +CSS object-view-box with vertical writing mode + + + + + + + +<__TAG__ class="view_box_subset"> + + diff --git a/tests/wpt/web-platform-tests/css/css-images/support/testHelper.js b/tests/wpt/web-platform-tests/css/css-images/support/testHelper.js new file mode 100644 index 00000000000..e2806336e1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/support/testHelper.js @@ -0,0 +1,30 @@ +function paintCanvases() { + for (let canvas of document.getElementsByTagName("canvas")) { + canvas.width = 50; + canvas.height = 100; + + let ctx = canvas.getContext("2d"); + ctx.fillStyle = 'blue'; + ctx.fillRect(0, 0, 25, 50); + + ctx.fillStyle = 'green'; + ctx.fillRect(25, 0, 25, 50); + + ctx.fillStyle = 'red'; + ctx.fillRect(0, 50, 25, 50); + + ctx.fillStyle = 'yellow'; + ctx.fillRect(25, 50, 50, 50); + } +} + +function populateElements(imageSource) { + let images = document.getElementsByTagName("img"); + for (var i = 0; i < images.length; i++) + images[i].src = imageSource; + + paintCanvases(); + + for (let video of document.getElementsByTagName("video")) + video.poster = "support/exif-orientation-6-ru.jpg"; +} diff --git a/tests/wpt/web-platform-tests/css/css-images/tiled-radial-gradients.html b/tests/wpt/web-platform-tests/css/css-images/tiled-radial-gradients.html index 6615e8be358..f644a6e294c 100644 --- a/tests/wpt/web-platform-tests/css/css-images/tiled-radial-gradients.html +++ b/tests/wpt/web-platform-tests/css/css-images/tiled-radial-gradients.html @@ -6,6 +6,7 @@ + + + + +
  6. + + diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/baseline/flex-baseline.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/baseline/flex-baseline.https.html index 0b0e147a2cf..ce869bee373 100644 --- a/tests/wpt/web-platform-tests/css/css-layout-api/baseline/flex-baseline.https.html +++ b/tests/wpt/web-platform-tests/css/css-layout-api/baseline/flex-baseline.https.html @@ -10,10 +10,10 @@ padding: 0 10px; width: 80px; height: 100px; + align-items: baseline; } .child { - align-self: baseline; color: red; } @@ -31,6 +31,7 @@
    +
    text
    diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/chrome-bug-1291449-crash.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/chrome-bug-1291449-crash.https.html new file mode 100644 index 00000000000..d13fed0179b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/chrome-bug-1291449-crash.https.html @@ -0,0 +1,11 @@ + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/chrome-bug-1296664-crash.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/chrome-bug-1296664-crash.https.html new file mode 100644 index 00000000000..9e523fb181e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/chrome-bug-1296664-crash.https.html @@ -0,0 +1,18 @@ + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-slot-order-ref.html b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-slot-order-ref.html new file mode 100644 index 00000000000..3d045965de8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-slot-order-ref.html @@ -0,0 +1,22 @@ + + + + HTML LI element: counter order with Shadow DOM and SLOT + + + + + + +
      +
    1. One
    2. +
    3. Two
    4. +
        +
      1. Two Point One
      2. +
      +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-slot-order.html b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-slot-order.html new file mode 100644 index 00000000000..09bdb25e0f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-slot-order.html @@ -0,0 +1,35 @@ + + + + HTML LI element: counter order with Shadow DOM and SLOT + + + + + + + +
    +
  7. Two Point One
  8. +
  9. Two
  10. +
  11. One
  12. +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-order-display-contents-ref.html b/tests/wpt/web-platform-tests/css/css-lists/counter-order-display-contents-ref.html new file mode 100644 index 00000000000..a876204f666 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-order-display-contents-ref.html @@ -0,0 +1,27 @@ + + + + CSS counter order with Shadow DOM and SLOT + + + + + + + +
    +
    One
    +
    Two
    +
    Three
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-order-display-contents.html b/tests/wpt/web-platform-tests/css/css-lists/counter-order-display-contents.html new file mode 100644 index 00000000000..70dbc5de8ed --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-order-display-contents.html @@ -0,0 +1,30 @@ + + + + CSS counter order with "display: contents" + + + + + + + +
    +
    One
    +
    +
    +
    Two
    +
    +
    +
    Three
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order-ref.html b/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order-ref.html new file mode 100644 index 00000000000..a876204f666 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order-ref.html @@ -0,0 +1,27 @@ + + + + CSS counter order with Shadow DOM and SLOT + + + + + + + +
    +
    One
    +
    Two
    +
    Three
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order-scoping-ref.html b/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order-scoping-ref.html new file mode 100644 index 00000000000..c78bb263a93 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order-scoping-ref.html @@ -0,0 +1,39 @@ + + + + CSS counter order and scope with Shadow DOM and SLOT + + + + + + + +
    +
    One
    +
    Two
    +
    Three
    +
    Reset1
    +
    Four
    +
    Five
    +
    Six
    +
    Reset2
    +
    Seven
    +
    Eight
    +
    Nine
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order-scoping.html b/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order-scoping.html new file mode 100644 index 00000000000..ca87761901a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order-scoping.html @@ -0,0 +1,66 @@ + + + + CSS counter order and scope with Shadow DOM and SLOT + + + + + + +
    +
    Three
    +
    One
    + +
    Six
    +
    Four
    + +
    Reset2
    + +
    Nine
    +
    Seven
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order.html b/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order.html new file mode 100644 index 00000000000..e481402911c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-slot-order.html @@ -0,0 +1,40 @@ + + + + CSS counter order and scope with Shadow DOM and SLOT + + + + + + + +
    +
    Three
    +
    Two
    +
    One
    +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-lists/crashtests/chrome-counter-in-multicol-details-crash.html b/tests/wpt/web-platform-tests/css/css-lists/crashtests/chrome-counter-in-multicol-details-crash.html new file mode 100644 index 00000000000..d992f0a1d96 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/crashtests/chrome-counter-in-multicol-details-crash.html @@ -0,0 +1,16 @@ + +Crash removing element before counter inside multicol details element + + +
    + +
    + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-lists/crashtests/chrome-legacy-propagation-crash.html b/tests/wpt/web-platform-tests/css/css-lists/crashtests/chrome-legacy-propagation-crash.html new file mode 100644 index 00000000000..8ec14ce0905 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/crashtests/chrome-legacy-propagation-crash.html @@ -0,0 +1,18 @@ + +HTML root list-item crash during direction-propagation from body + + +

    Pass if no crash.

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-lists/crashtests/chrome-legacy-propagation-remove-body-crash.html b/tests/wpt/web-platform-tests/css/css-lists/crashtests/chrome-legacy-propagation-remove-body-crash.html new file mode 100644 index 00000000000..94b57285e1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/crashtests/chrome-legacy-propagation-remove-body-crash.html @@ -0,0 +1,21 @@ + +BODY list-item crash inserting extra BODY + + + +

    Pass if no crash.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-lists/list-marker-containing-control-char-crash.html b/tests/wpt/web-platform-tests/css/css-lists/list-marker-containing-control-char-crash.html new file mode 100644 index 00000000000..280ef342626 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/list-marker-containing-control-char-crash.html @@ -0,0 +1,21 @@ + + + + + + + + +
      +
    1. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-increment-invalid.html b/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-increment-invalid.html index 2138584913d..b893d537ceb 100644 --- a/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-increment-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-increment-invalid.html @@ -18,6 +18,12 @@ test_invalid_value('counter-increment', '3'); test_invalid_value('counter-increment', '99 imagenum'); test_invalid_value('counter-increment', 'section -1, imagenum 99'); test_invalid_value('counter-increment', 'section 3.14'); +test_invalid_value('counter-increment', 'inherit 1'); +test_invalid_value('counter-increment', 'initial 1'); +test_invalid_value('counter-increment', 'unset 1'); +test_invalid_value('counter-increment', 'default 1'); +test_invalid_value('counter-increment', 'revert 1'); +test_invalid_value('counter-increment', 'revert-layer 1'); diff --git a/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-reset-invalid.html b/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-reset-invalid.html index d79736001f7..18e406bd175 100644 --- a/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-reset-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-reset-invalid.html @@ -20,6 +20,12 @@ test_invalid_value('counter-reset', '99 imagenum'); test_invalid_value('counter-reset', '99 reversed(imagenum)'); test_invalid_value('counter-reset', 'section -1, imagenum 99'); test_invalid_value('counter-reset', 'section 3.14'); +test_invalid_value('counter-reset', 'inherit 0'); +test_invalid_value('counter-reset', 'initial 0'); +test_invalid_value('counter-reset', 'unset 0'); +test_invalid_value('counter-reset', 'default 0'); +test_invalid_value('counter-reset', 'revert 0'); +test_invalid_value('counter-reset', 'revert-layer 0'); diff --git a/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-set-invalid.html b/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-set-invalid.html index e955049222c..7b2f500fa4d 100644 --- a/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-set-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-lists/parsing/counter-set-invalid.html @@ -18,6 +18,12 @@ test_invalid_value('counter-set', '3'); test_invalid_value('counter-set', '99 imagenum'); test_invalid_value('counter-set', 'section -1, imagenum 99'); test_invalid_value('counter-set', 'section 3.14'); +test_invalid_value('counter-set', 'inherit 2'); +test_invalid_value('counter-set', 'initial 2'); +test_invalid_value('counter-set', 'unset 2'); +test_invalid_value('counter-set', 'default 2'); +test_invalid_value('counter-set', 'revert 2'); +test_invalid_value('counter-set', 'revert-layer 2'); diff --git a/tests/wpt/web-platform-tests/css/css-logical/logicalprops-with-deferred-writing-mode.html b/tests/wpt/web-platform-tests/css/css-logical/logicalprops-with-deferred-writing-mode.html new file mode 100644 index 00000000000..a213d375bdf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/logicalprops-with-deferred-writing-mode.html @@ -0,0 +1,175 @@ + + +Logical properties with deferred <code>writing-mode</code> + + + + + + +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape.html b/tests/wpt/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape.html new file mode 100644 index 00000000000..ad3e2a0bdbb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape.html @@ -0,0 +1,170 @@ + + + +clip-path-interpolation + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter.html index a4f54904e1e..cbfa8baaa76 100644 --- a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter.html +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter.html @@ -2,6 +2,7 @@ + + + +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fixed-position-rounding-error-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fixed-position-rounding-error-ref.html new file mode 100644 index 00000000000..a069e4d3ae5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fixed-position-rounding-error-ref.html @@ -0,0 +1,17 @@ + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fixed-position-rounding-error.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fixed-position-rounding-error.html new file mode 100644 index 00000000000..12d984b32a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fixed-position-rounding-error.html @@ -0,0 +1,48 @@ + + + + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fixed-position.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fixed-position.html new file mode 100644 index 00000000000..a9f278d8837 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fixed-position.html @@ -0,0 +1,59 @@ + + + + + + + + + + +
    +
    +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fragmented-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fragmented-ref.html new file mode 100644 index 00000000000..8883679acaa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fragmented-ref.html @@ -0,0 +1,4 @@ + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fragmented.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fragmented.html new file mode 100644 index 00000000000..470a2788cce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-fragmented.html @@ -0,0 +1,42 @@ + + + + + + + + +
    +
    +
    +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-missing-0-percent-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-missing-0-percent-ref.html new file mode 100644 index 00000000000..200edcd0382 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-missing-0-percent-ref.html @@ -0,0 +1,14 @@ + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-missing-0-percent.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-missing-0-percent.html new file mode 100644 index 00000000000..4d4fee1b5b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-missing-0-percent.html @@ -0,0 +1,44 @@ + + + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-none-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-none-ref.html new file mode 100644 index 00000000000..f47e9f31b07 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-none-ref.html @@ -0,0 +1,21 @@ + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-none.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-none.html new file mode 100644 index 00000000000..73b8a473354 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-none.html @@ -0,0 +1,54 @@ + + + + + + + + + +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg-ref.html new file mode 100644 index 00000000000..6cc3b4d58bd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg-ref.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg-zoom-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg-zoom-ref.html new file mode 100644 index 00000000000..8d620ceb698 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg-zoom-ref.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg-zoom.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg-zoom.html new file mode 100644 index 00000000000..c79c098c622 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg-zoom.html @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg.html new file mode 100644 index 00000000000..676fe5ee578 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-svg.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-zoom-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-zoom-ref.html new file mode 100644 index 00000000000..99126195a13 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-zoom-ref.html @@ -0,0 +1,17 @@ + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-zoom.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-zoom.html new file mode 100644 index 00000000000..5573318a516 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-zoom.html @@ -0,0 +1,42 @@ + + + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length1-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length1-ref.html new file mode 100644 index 00000000000..0feacb50bae --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length1-ref.html @@ -0,0 +1,14 @@ + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length1.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length1.html new file mode 100644 index 00000000000..d6d04858b5a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length1.html @@ -0,0 +1,50 @@ + + + + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length2-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length2-ref.html new file mode 100644 index 00000000000..0feacb50bae --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length2-ref.html @@ -0,0 +1,14 @@ + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length2.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length2.html new file mode 100644 index 00000000000..0d86120ef35 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length2.html @@ -0,0 +1,50 @@ + + + + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length3-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length3-ref.html new file mode 100644 index 00000000000..853f47f9ba3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length3-ref.html @@ -0,0 +1,14 @@ + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length3.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length3.html new file mode 100644 index 00000000000..3c8141ad2de --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/animations/two-clip-path-animation-diff-length3.html @@ -0,0 +1,53 @@ + + + + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1b.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1b.html index 2c18099abab..c253c3c9db1 100644 --- a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1b.html +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-borderBox-1b.html @@ -8,6 +8,7 @@ + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1a.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1a.html index 4feb6a265a9..97680121fe7 100644 --- a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1a.html +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-contentBox-1a.html @@ -8,6 +8,7 @@ + +
    diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-round-zero-size.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-round-zero-size.html new file mode 100644 index 00000000000..d42ee6f5360 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-round-zero-size.html @@ -0,0 +1,18 @@ + + +CSS clip path with zero box size + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-scaled-video-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-scaled-video-ref.html new file mode 100644 index 00000000000..43ebcc8dc7c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-scaled-video-ref.html @@ -0,0 +1,2 @@ + +

    Expect no hairlines below.

    diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-scaled-video.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-scaled-video.html new file mode 100644 index 00000000000..c92702d8e78 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-scaled-video.html @@ -0,0 +1,46 @@ + + + + + + + + +

    Expect no hairlines below.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-001.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-001.html new file mode 100644 index 00000000000..6033e9743e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-001.html @@ -0,0 +1,25 @@ + + + + CSS Masking: Test clip-path property and shape function with nonzero fill + + + + + + +

    The test passes if there are a green filled rect.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-002-units.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-002-units.html new file mode 100644 index 00000000000..b928876a0af --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-002-units.html @@ -0,0 +1,37 @@ + + + + CSS Masking: Test clip-path property and shape function with evenodd fill + + + + + + + +

    The test passes if there are a green hollow rect.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-002.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-002.html new file mode 100644 index 00000000000..3cb39f8d448 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-002.html @@ -0,0 +1,25 @@ + + + + CSS Masking: Test clip-path property and shape function with evenodd fill + + + + + + +

    The test passes if there are a green hollow rect.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-003.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-003.html new file mode 100644 index 00000000000..22e7d9aaf53 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-003.html @@ -0,0 +1,36 @@ + + + + CSS Masking: Test clip-path property and shape function with nonzero fill + + + + + + +

    You should see no red.

    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-004.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-004.html new file mode 100644 index 00000000000..14e3ba6329d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-004.html @@ -0,0 +1,35 @@ + + + + CSS Masking: Test clip-path property and shape function with nonzero fill + + + + + + +

    You should see no red.

    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-001.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-001.html new file mode 100644 index 00000000000..1d881e5bd58 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-001.html @@ -0,0 +1,39 @@ + + + + CSS Masking: Test clip-path nonzero path interpolation + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-002.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-002.html new file mode 100644 index 00000000000..9d8ab65b2d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-002.html @@ -0,0 +1,39 @@ + + + + CSS Masking: Test clip-path evenodd path interpolation + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-backdrop-filter.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-backdrop-filter.html index c605a913243..68d462ab802 100644 --- a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-backdrop-filter.html +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-backdrop-filter.html @@ -2,6 +2,7 @@ + + +

    You should see no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-shape-004-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-shape-004-ref.html new file mode 100644 index 00000000000..ec8f9410795 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-shape-004-ref.html @@ -0,0 +1,22 @@ + + + + Reference of CSS Masking: Test clip-path property and shape function with nonzero fill + + + + +

    You should see no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-circle-offset.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-circle-offset.html index 155dbc2aac1..975f9418661 100644 --- a/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-circle-offset.html +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-circle-offset.html @@ -4,7 +4,7 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-ellipse-offset.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-ellipse-offset.html index c6329825aae..3925926ac14 100644 --- a/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-ellipse-offset.html +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-ellipse-offset.html @@ -4,7 +4,7 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-fixed-values-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-fixed-values-ref.html new file mode 100644 index 00000000000..537b77d30ac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-fixed-values-ref.html @@ -0,0 +1,49 @@ + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-fixed-values.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-fixed-values.html new file mode 100644 index 00000000000..801cfe08d94 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/svg-clip-path-fixed-values.html @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-clip-exclude.html b/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-clip-exclude.html index f3d4c78d7a1..375fe2de233 100644 --- a/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-clip-exclude.html +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-image/mask-image-clip-exclude.html @@ -4,6 +4,7 @@ + mask-image + mask-clip + mask-composite: exclude on different background boxes +
    +Middle of second page diff --git a/tests/wpt/web-platform-tests/css/css-multicol/auto-fill-auto-size-002-print.html b/tests/wpt/web-platform-tests/css/css-multicol/auto-fill-auto-size-002-print.html new file mode 100644 index 00000000000..4e0243212e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/auto-fill-auto-size-002-print.html @@ -0,0 +1,11 @@ + + + + + +
    +
    +
    +Middle of second page diff --git a/tests/wpt/web-platform-tests/css/css-multicol/balance-break-avoidance-002.html b/tests/wpt/web-platform-tests/css/css-multicol/balance-break-avoidance-002.html new file mode 100644 index 00000000000..4506ef6add5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/balance-break-avoidance-002.html @@ -0,0 +1,12 @@ + + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/baseline-008.html b/tests/wpt/web-platform-tests/css/css-multicol/baseline-008.html index 89381ab3d59..beb19ca4474 100644 --- a/tests/wpt/web-platform-tests/css/css-multicol/baseline-008.html +++ b/tests/wpt/web-platform-tests/css/css-multicol/baseline-008.html @@ -2,7 +2,7 @@ - +

    There should be a green square below.

    -
    -
    +
    +
    line1
    line2
    +
    +
    line1
    line2
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/change-fragmentainer-size-003.html b/tests/wpt/web-platform-tests/css/css-multicol/change-fragmentainer-size-003.html new file mode 100644 index 00000000000..b8fae275022 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/change-fragmentainer-size-003.html @@ -0,0 +1,18 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/column-fill-balance-orthog-block-001.html b/tests/wpt/web-platform-tests/css/css-multicol/column-fill-balance-orthog-block-001.html new file mode 100644 index 00000000000..be665763df4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/column-fill-balance-orthog-block-001.html @@ -0,0 +1,44 @@ + + + + + CSS Writing Modes Test: 'column-fill: balance' of a vertical writing mode block in orthogonal context + + + + + + + + + + + + + +

    Test passes if the word "TEXT" is unbroken and rotated 90 degrees clock-wise. + +

    +
    TEXT
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/as-baseline-aligned-grid-item.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/as-baseline-aligned-grid-item.html new file mode 100644 index 00000000000..f9a9e1dad0d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/as-baseline-aligned-grid-item.html @@ -0,0 +1,6 @@ + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/balance-with-forced-break.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/balance-with-forced-break.html new file mode 100644 index 00000000000..794f7617665 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/balance-with-forced-break.html @@ -0,0 +1,13 @@ + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/body-becomes-spanner-html-becomes-vertical-rl.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/body-becomes-spanner-html-becomes-vertical-rl.html new file mode 100644 index 00000000000..7cd544b71cb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/body-becomes-spanner-html-becomes-vertical-rl.html @@ -0,0 +1,12 @@ + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/break-before-multicol-caption.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/break-before-multicol-caption.html new file mode 100644 index 00000000000..ac6f444eaad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/break-before-multicol-caption.html @@ -0,0 +1,12 @@ + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1293905.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1293905.html new file mode 100644 index 00000000000..2f1bd84528f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1293905.html @@ -0,0 +1,19 @@ + + + +
    +
    +
    +
    +
    +
    + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1297118.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1297118.html new file mode 100644 index 00000000000..5c96614db2d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1297118.html @@ -0,0 +1,12 @@ + + + +
    +
    +
    + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1301281.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1301281.html new file mode 100644 index 00000000000..0c34e088902 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1301281.html @@ -0,0 +1,22 @@ + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1303256.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1303256.html new file mode 100644 index 00000000000..072af7d4ef8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1303256.html @@ -0,0 +1,9 @@ + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1314866.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1314866.html new file mode 100644 index 00000000000..538586ab5de --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/chrome-bug-1314866.html @@ -0,0 +1,5 @@ + + +
    +
    x
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/dynamic-simplified-layout-break-propagation.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/dynamic-simplified-layout-break-propagation.html new file mode 100644 index 00000000000..c675b50f942 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/dynamic-simplified-layout-break-propagation.html @@ -0,0 +1,13 @@ + + +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/fit-content-with-spanner-and-auto-scrollbar-sibling.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/fit-content-with-spanner-and-auto-scrollbar-sibling.html new file mode 100644 index 00000000000..105da399b19 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/fit-content-with-spanner-and-auto-scrollbar-sibling.html @@ -0,0 +1,11 @@ + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/float-becomes-non-float-spanner-surprises-inside.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/float-becomes-non-float-spanner-surprises-inside.html new file mode 100644 index 00000000000..073c85e10c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/float-becomes-non-float-spanner-surprises-inside.html @@ -0,0 +1,13 @@ + + + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/float-becomes-spanner.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/float-becomes-spanner.html new file mode 100644 index 00000000000..90a4c9079c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/float-becomes-spanner.html @@ -0,0 +1,15 @@ + + + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/forced-break-in-oof-in-column-balancing-nested.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/forced-break-in-oof-in-column-balancing-nested.html new file mode 100644 index 00000000000..02b3295444a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/forced-break-in-oof-in-column-balancing-nested.html @@ -0,0 +1,11 @@ + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/forced-break-in-oof-in-column-balancing.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/forced-break-in-oof-in-column-balancing.html new file mode 100644 index 00000000000..31cafba9a21 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/forced-break-in-oof-in-column-balancing.html @@ -0,0 +1,11 @@ + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/inline-with-spanner-in-overflowed-container-before-multicol-float.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/inline-with-spanner-in-overflowed-container-before-multicol-float.html new file mode 100644 index 00000000000..69abc9bcf99 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/inline-with-spanner-in-overflowed-container-before-multicol-float.html @@ -0,0 +1,15 @@ + + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/margin-and-break-before-child-spanner.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/margin-and-break-before-child-spanner.html new file mode 100644 index 00000000000..8ec36250cf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/margin-and-break-before-child-spanner.html @@ -0,0 +1,9 @@ + + + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/move-linebreak-to-different-column.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/move-linebreak-to-different-column.html new file mode 100644 index 00000000000..aff5ddce0cd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/move-linebreak-to-different-column.html @@ -0,0 +1,16 @@ + + + +
    +
    +





    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/crashtests/multicol-block-in-inline-crash.html b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/multicol-block-in-inline-crash.html new file mode 100644 index 00000000000..037b558ac0b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/crashtests/multicol-block-in-inline-crash.html @@ -0,0 +1,12 @@ + + + + aaaaa aaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaa +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-table-cell-height-002.xht b/tests/wpt/web-platform-tests/css/css-multicol/table/multicol-table-cell-height-002.xht similarity index 99% rename from tests/wpt/web-platform-tests/css/css-multicol/multicol-table-cell-height-002.xht rename to tests/wpt/web-platform-tests/css/css-multicol/table/multicol-table-cell-height-002.xht index c7ece15d2d0..c66c475f12a 100644 --- a/tests/wpt/web-platform-tests/css/css-multicol/multicol-table-cell-height-002.xht +++ b/tests/wpt/web-platform-tests/css/css-multicol/table/multicol-table-cell-height-002.xht @@ -44,4 +44,4 @@
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-table-cell-vertical-align-001.xht b/tests/wpt/web-platform-tests/css/css-multicol/table/multicol-table-cell-vertical-align-001.xht similarity index 100% rename from tests/wpt/web-platform-tests/css/css-multicol/multicol-table-cell-vertical-align-001.xht rename to tests/wpt/web-platform-tests/css/css-multicol/table/multicol-table-cell-vertical-align-001.xht diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-table-cell-vertical-align-ref.xht b/tests/wpt/web-platform-tests/css/css-multicol/table/multicol-table-cell-vertical-align-ref.xht similarity index 100% rename from tests/wpt/web-platform-tests/css/css-multicol/multicol-table-cell-vertical-align-ref.xht rename to tests/wpt/web-platform-tests/css/css-multicol/table/multicol-table-cell-vertical-align-ref.xht diff --git a/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-as-multicol-ref.html b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-as-multicol-ref.html new file mode 100644 index 00000000000..2e5a6ba4603 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-as-multicol-ref.html @@ -0,0 +1,8 @@ + +

    You should see the word 'PASS' below.

    +
    +
    P
    +
    A
    +
    S
    +
    S
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-as-multicol.html b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-as-multicol.html new file mode 100644 index 00000000000..9df85f01928 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-as-multicol.html @@ -0,0 +1,12 @@ + + + +

    You should see the word 'PASS' below.

    +
    +
    P
    +
    + A
    + S
    + S
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-000-ref.html b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-000-ref.html new file mode 100644 index 00000000000..f8f1c9e19f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-000-ref.html @@ -0,0 +1,9 @@ + +

    You should see the text "first column" once in the first column, and the text + "second column" twice in the second column.

    +
    + first column
    +
    + second column
    + second column +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-000.html b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-000.html new file mode 100644 index 00000000000..27227e96a90 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-000.html @@ -0,0 +1,20 @@ + + + +

    You should see the text "first column" once in the first column, and the text + "second column" twice in the second column.

    +
    +
    + first column +
    +
    +
    + second column + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-001-ref.html b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-001-ref.html new file mode 100644 index 00000000000..ad7ff706c98 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-001-ref.html @@ -0,0 +1,13 @@ + +

    Test changing the contents of a table cell, increasing column height

    +

    You should see the text "first column" once in the first column, and the text + "second column" twice in the second column.

    +
    +
    + first column +
    +
    + second column
    + second column +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-001.html b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-001.html new file mode 100644 index 00000000000..5ecb7ec4087 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-content-change-001.html @@ -0,0 +1,20 @@ + + + +

    Test changing the contents of a table cell, increasing column height

    +

    You should see the text "first column" once in the first column, and the text + "second column" twice in the second column.

    +
    +
    + first column +
    +
    +
    + second column + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-multicol-nested-001.html b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-multicol-nested-001.html new file mode 100644 index 00000000000..5cb9eaf5643 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-multicol-nested-001.html @@ -0,0 +1,13 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-multicol-nested-002.html b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-multicol-nested-002.html new file mode 100644 index 00000000000..b250841f92f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-multicol-nested-002.html @@ -0,0 +1,13 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-multicol-nested-003.html b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-multicol-nested-003.html new file mode 100644 index 00000000000..f4e52910f1d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/table/table-cell-multicol-nested-003.html @@ -0,0 +1,13 @@ + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-nesting/conditional-properties-ref.html b/tests/wpt/web-platform-tests/css/css-nesting/conditional-properties-ref.html new file mode 100644 index 00000000000..0285acbf33f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/conditional-properties-ref.html @@ -0,0 +1,33 @@ + +Properties in nested conditional rules + + + + +

    Tests pass if block is green

    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/conditional-properties.html b/tests/wpt/web-platform-tests/css/css-nesting/conditional-properties.html new file mode 100644 index 00000000000..122b8635c1d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/conditional-properties.html @@ -0,0 +1,34 @@ + +Properties in nested conditional rules + + + + + +

    Tests pass if block is green

    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/conditional-rules-ref.html b/tests/wpt/web-platform-tests/css/css-nesting/conditional-rules-ref.html new file mode 100644 index 00000000000..945ed305136 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/conditional-rules-ref.html @@ -0,0 +1,33 @@ + +Conditional rules with nesting + + + + +

    Tests pass if block is green

    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/conditional-rules.html b/tests/wpt/web-platform-tests/css/css-nesting/conditional-rules.html new file mode 100644 index 00000000000..be925d5d873 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/conditional-rules.html @@ -0,0 +1,38 @@ + +Conditional rules with nesting + + + + + +

    Tests pass if block is green

    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/cssom.html b/tests/wpt/web-platform-tests/css/css-nesting/cssom.html new file mode 100644 index 00000000000..c7150cec5db --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/cssom.html @@ -0,0 +1,127 @@ + +Simple CSSOM manipulation of subrules + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/implicit-nesting-ref.html b/tests/wpt/web-platform-tests/css/css-nesting/implicit-nesting-ref.html new file mode 100644 index 00000000000..006216b60e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/implicit-nesting-ref.html @@ -0,0 +1,24 @@ + +Implicit nesting + + + + +

    Tests pass if block is green

    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/implicit-nesting.html b/tests/wpt/web-platform-tests/css/css-nesting/implicit-nesting.html new file mode 100644 index 00000000000..05b9e04fa84 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/implicit-nesting.html @@ -0,0 +1,61 @@ + +Implicit nesting + + + + + +

    Tests pass if block is green

    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/implicit-parent-insertion-crash.html b/tests/wpt/web-platform-tests/css/css-nesting/implicit-parent-insertion-crash.html new file mode 100644 index 00000000000..4be1e1c8f9e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/implicit-parent-insertion-crash.html @@ -0,0 +1,16 @@ + + +Use-after-free when inserting implicit parent selector + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/invalid-inner-rules.html b/tests/wpt/web-platform-tests/css/css-nesting/invalid-inner-rules.html new file mode 100644 index 00000000000..219dcac3f56 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/invalid-inner-rules.html @@ -0,0 +1,56 @@ + +Simple CSSOM manipulation of subrules + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/invalidation-001.html b/tests/wpt/web-platform-tests/css/css-nesting/invalidation-001.html new file mode 100644 index 00000000000..a9a4284cc30 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/invalidation-001.html @@ -0,0 +1,33 @@ + +CSS Selectors nested invalidation on changed parent + + + + + + + +
    +
    + Test passes if color is green. +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/invalidation-002.html b/tests/wpt/web-platform-tests/css/css-nesting/invalidation-002.html new file mode 100644 index 00000000000..8419c4526eb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/invalidation-002.html @@ -0,0 +1,33 @@ + +CSS Selectors nested invalidation on changed child + + + + + + + +
    +
    + Test passes if color is green. +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/invalidation-003.html b/tests/wpt/web-platform-tests/css/css-nesting/invalidation-003.html new file mode 100644 index 00000000000..d1d6d4b9aeb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/invalidation-003.html @@ -0,0 +1,34 @@ + +CSS Selectors nested invalidation with :has() + + + + + + + +
    + Test passes if color is green. +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/invalidation-004.html b/tests/wpt/web-platform-tests/css/css-nesting/invalidation-004.html new file mode 100644 index 00000000000..a66c47cf16b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/invalidation-004.html @@ -0,0 +1,30 @@ + +CSS Selectors nested invalidation through @media by selectorText + + + + + + + +
    + Test passes if color is green. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/nesting-basic-ref.html b/tests/wpt/web-platform-tests/css/css-nesting/nesting-basic-ref.html new file mode 100644 index 00000000000..c2f7c669497 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/nesting-basic-ref.html @@ -0,0 +1,29 @@ + +Basic nesting + + + + +

    Tests pass if block is green

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/nesting-basic.html b/tests/wpt/web-platform-tests/css/css-nesting/nesting-basic.html new file mode 100644 index 00000000000..6bc727a7319 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/nesting-basic.html @@ -0,0 +1,103 @@ + +Basic nesting + + + + + +

    Tests pass if block is green

    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/parsing.html b/tests/wpt/web-platform-tests/css/css-nesting/parsing.html new file mode 100644 index 00000000000..66d1566586c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/parsing.html @@ -0,0 +1,43 @@ + +CSS Selectors parsing + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/pseudo-part-crash.html b/tests/wpt/web-platform-tests/css/css-nesting/pseudo-part-crash.html new file mode 100644 index 00000000000..3ab521d71c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/pseudo-part-crash.html @@ -0,0 +1,12 @@ + + +Nesting pseudo element selectors should not crash + + + diff --git a/tests/wpt/web-platform-tests/css/css-nesting/serialize-group-rules-with-decls.tentative.html b/tests/wpt/web-platform-tests/css/css-nesting/serialize-group-rules-with-decls.tentative.html new file mode 100644 index 00000000000..c3b6bb7be74 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-nesting/serialize-group-rules-with-decls.tentative.html @@ -0,0 +1,69 @@ + +Serialization of declarations in group rules + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-outline/outline-width-rounding.tentative.html b/tests/wpt/web-platform-tests/css/css-outline/outline-width-rounding.tentative.html new file mode 100644 index 00000000000..162d938cf9c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-outline/outline-width-rounding.tentative.html @@ -0,0 +1,53 @@ + + + + + CSS Outline: width rounding + + + + + + + + + + + +

    + Test passes if outline widths are rounded up + when they are greater than 0 and less than 1, + and rounded down when they are greater than 1. +

    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-outline/reference/subpixel-outline-width-ref.tentative.html b/tests/wpt/web-platform-tests/css/css-outline/reference/subpixel-outline-width-ref.tentative.html new file mode 100644 index 00000000000..28d84fabb77 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-outline/reference/subpixel-outline-width-ref.tentative.html @@ -0,0 +1,44 @@ + + + + + CSS Outline: width computed value + + + + + + + + +

    + Test passes if outline widths are rounded up + when they are greater than 0 and less than 1, + and rounded down when they are greater than 1. +

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-outline/subpixel-outline-width.tentative.html b/tests/wpt/web-platform-tests/css/css-outline/subpixel-outline-width.tentative.html new file mode 100644 index 00000000000..a9fc0c49cf3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-outline/subpixel-outline-width.tentative.html @@ -0,0 +1,48 @@ + + + + + CSS Outline: width computed value + + + + + + + + + + + + +

    + Test passes if outline widths are rounded up + when they are greater than 0 and less than 1, + and rounded down when they are greater than 1. +

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/chrome-body-overflow-propagation-crash.html b/tests/wpt/web-platform-tests/css/css-overflow/chrome-body-overflow-propagation-crash.html new file mode 100644 index 00000000000..22607b4a4d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/chrome-body-overflow-propagation-crash.html @@ -0,0 +1,17 @@ + +CSS Overflow Test: Chrome scrollbar crash - multiple body elements, removed stylesheet + + +Pass if no crash + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/display-flex-svg-overflow-default-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/display-flex-svg-overflow-default-ref.html new file mode 100644 index 00000000000..2dce2449752 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/display-flex-svg-overflow-default-ref.html @@ -0,0 +1,16 @@ + + +display:flex on svg uses 0 as min size with default overflow + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/display-flex-svg-overflow-default.html b/tests/wpt/web-platform-tests/css/css-overflow/display-flex-svg-overflow-default.html new file mode 100644 index 00000000000..5fb69d0e09d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/display-flex-svg-overflow-default.html @@ -0,0 +1,24 @@ + + +display:flex on svg uses 0 as min size with default overflow + + + + +
    + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/margin-block-end-scroll-area-001.html b/tests/wpt/web-platform-tests/css/css-overflow/margin-block-end-scroll-area-001.html new file mode 100644 index 00000000000..3b8f4ca3f35 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/margin-block-end-scroll-area-001.html @@ -0,0 +1,67 @@ + + + + + CSS Overflow Test: margin-block-end, scrolling area height and scrollTop (complex) + + + + + + + + + + + + + + + + +

    Test passes if there is no red. + +

    + +
    + +
    + +

    + +

    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/orthogonal-flow-with-inline-end-margin.html b/tests/wpt/web-platform-tests/css/css-overflow/orthogonal-flow-with-inline-end-margin.html index 534dff9766d..f0af1fe3068 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/orthogonal-flow-with-inline-end-margin.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/orthogonal-flow-with-inline-end-margin.html @@ -11,6 +11,6 @@ test(function() { var container = document.getElementById("container"); assert_equals(container.scrollWidth, 100); - assert_equals(container.scrollHeight, 100); - }, "Only trailing *block* margins should affect overflow"); + assert_equals(container.scrollHeight, 300); + }); diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-body-propagation-010.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-body-propagation-010.html index 7a9966c151a..a3fcdaf3c5f 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/overflow-body-propagation-010.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-body-propagation-010.html @@ -7,7 +7,6 @@ + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-002-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-002-ref.html index 84110e57792..412602adae9 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-002-ref.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-002-ref.html @@ -8,6 +8,8 @@ overflow: auto; width: 100px; height: 100px; + /* Avoids some fuzz on scrollbar corners */ + scrollbar-color: blue blue; } .child { position: relative; diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-002.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-002.html index 79dcaad63ba..5f6d740e0bc 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-002.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-002.html @@ -9,6 +9,8 @@ overflow: auto; width: 100px; height: 100px; + /* Avoids some fuzz on scrollbar corners */ + scrollbar-color: blue blue; } .parent { width: 100px; diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-005-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-005-ref.html index 84110e57792..412602adae9 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-005-ref.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-005-ref.html @@ -8,6 +8,8 @@ overflow: auto; width: 100px; height: 100px; + /* Avoids some fuzz on scrollbar corners */ + scrollbar-color: blue blue; } .child { position: relative; diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-005.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-005.html index 2d03a969719..1b4b4aa943f 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-005.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-005.html @@ -9,6 +9,8 @@ overflow: auto; width: 100px; height: 100px; + /* Avoids some fuzz on scrollbar corners */ + scrollbar-color: blue blue; } .parent { width: 100px; diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-011-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-011-ref.html new file mode 100644 index 00000000000..684de0cf0cb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-011-ref.html @@ -0,0 +1,2 @@ + +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-011.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-011.html new file mode 100644 index 00000000000..5952f5e9ded --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-011.html @@ -0,0 +1,35 @@ + + +Overflow-clip-margin: child of a small-border-box out-of-view large-clip-margin parent is shown + + + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-border-box-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-border-box-ref.html new file mode 100644 index 00000000000..98de614875e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-border-box-ref.html @@ -0,0 +1,35 @@ + + +Overflow: verifies multi-col layout uses overflow-clip-margin correctly + + + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-border-box.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-border-box.html new file mode 100644 index 00000000000..a0a1e895a66 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-border-box.html @@ -0,0 +1,33 @@ + + +Overflow: verifies multi-col layout uses overflow-clip-margin correctly + + + + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-content-box-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-content-box-ref.html new file mode 100644 index 00000000000..be5e46e341f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-content-box-ref.html @@ -0,0 +1,36 @@ + + +Overflow: verifies multi-col layout uses overflow-clip-margin correctly + + + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-content-box.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-content-box.html new file mode 100644 index 00000000000..26c081e04c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-content-box.html @@ -0,0 +1,33 @@ + + +Overflow: verifies multi-col layout uses overflow-clip-margin correctly + + + + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-padding-box-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-padding-box-ref.html new file mode 100644 index 00000000000..3cfa1a7eba3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-padding-box-ref.html @@ -0,0 +1,31 @@ + + +Overflow: verifies multi-col layout uses overflow-clip-margin correctly + + + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-padding-box.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-padding-box.html new file mode 100644 index 00000000000..e3b3700608b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-mul-column-padding-box.html @@ -0,0 +1,33 @@ + + +Overflow: verifies multi-col layout uses overflow-clip-margin correctly + + + + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-svg-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-svg-ref.html new file mode 100644 index 00000000000..a40bd5aacee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-svg-ref.html @@ -0,0 +1,13 @@ + + +overflow-clip-margin applies to svg + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-svg.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-svg.html new file mode 100644 index 00000000000..db66ddbbdb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-svg.html @@ -0,0 +1,16 @@ + + +overflow-clip-margin applies to svg + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value-ref.html new file mode 100644 index 00000000000..000e12ad1bf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value-ref.html @@ -0,0 +1,52 @@ + + +Verifies overflow-clip-margin supports visual-box + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value-with-border-radius-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value-with-border-radius-ref.html new file mode 100644 index 00000000000..84b845fb5c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value-with-border-radius-ref.html @@ -0,0 +1,56 @@ + + +Verifies overflow-clip-margin supports visual-box + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value-with-border-radius.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value-with-border-radius.html new file mode 100644 index 00000000000..06ddb5c1630 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value-with-border-radius.html @@ -0,0 +1,37 @@ + + +Verifies overflow-clip-margin supports visual-box + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value.html new file mode 100644 index 00000000000..cfef4348144 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-and-value.html @@ -0,0 +1,35 @@ + + +Verifies overflow-clip-margin supports visual-box + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-ref.html new file mode 100644 index 00000000000..5a265c7a739 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box-ref.html @@ -0,0 +1,49 @@ + + +Verifies overflow-clip-margin supports visual-box + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box.html new file mode 100644 index 00000000000..db2c17fcc39 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-margin-visual-box.html @@ -0,0 +1,35 @@ + + +Verifies overflow-clip-margin supports visual-box + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-x-visible-y-svg-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-x-visible-y-svg-ref.html new file mode 100644 index 00000000000..31e831d011d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-x-visible-y-svg-ref.html @@ -0,0 +1,13 @@ + + +Overflow: can have different clip and visible value in x/y directions with svg + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-x-visible-y-svg.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-x-visible-y-svg.html new file mode 100644 index 00000000000..bd903cdfd68 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-x-visible-y-svg.html @@ -0,0 +1,17 @@ + + +Overflow: can have different clip and visible value in x/y directions with svg + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-y-visible-x-svg-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-y-visible-x-svg-ref.html new file mode 100644 index 00000000000..33b0a4d6ad4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-y-visible-x-svg-ref.html @@ -0,0 +1,13 @@ + + +Overflow: can have different clip and visible value in x/y directions with svg + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-y-visible-x-svg.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-y-visible-x-svg.html new file mode 100644 index 00000000000..8416af30470 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-clip-y-visible-x-svg.html @@ -0,0 +1,17 @@ + + +Overflow: can have different clip and visible value in x/y directions with svg + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-border-radius.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-border-radius.html new file mode 100644 index 00000000000..cec70d6b942 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-border-radius.html @@ -0,0 +1,19 @@ + + +Verifies overflow:visible doesn't clip using border-radius + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-display-table-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-display-table-ref.html new file mode 100644 index 00000000000..4552cb06da9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-display-table-ref.html @@ -0,0 +1,19 @@ + + +Verifies img elements are clipped with display:table + + + + +
    + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-display-table.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-display-table.html new file mode 100644 index 00000000000..b7e19aa616d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-display-table.html @@ -0,0 +1,19 @@ + + +Verifies img elements are clipped with display:table + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-object-position-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-object-position-ref.html new file mode 100644 index 00000000000..dde966c9917 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-object-position-ref.html @@ -0,0 +1,16 @@ + + +Verifies overflow applies to img elements + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-object-position.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-object-position.html new file mode 100644 index 00000000000..67e6febef27 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-object-position.html @@ -0,0 +1,16 @@ + + +Verifies overflow applies to img elements with object-position + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-ref.html new file mode 100644 index 00000000000..7764371702d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-ref.html @@ -0,0 +1,9 @@ + + +Verifies overflow applies to img elements + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-non-replaced-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-non-replaced-ref.html new file mode 100644 index 00000000000..426cb2be660 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-non-replaced-ref.html @@ -0,0 +1,20 @@ + + +Verifies overflow allows scrolling when rendering alt test for img elements + + + + +
    +I have +scrollbar ................................................................ +
    + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-non-replaced.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-non-replaced.html new file mode 100644 index 00000000000..6468c730688 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-non-replaced.html @@ -0,0 +1,18 @@ + + +Verifies overflow allows scrolling when rendering alt test for img elements + + + + + +I have scrollbar ................................................................ + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-replaced-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-replaced-ref.html new file mode 100644 index 00000000000..50793440a52 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-replaced-ref.html @@ -0,0 +1,18 @@ + + +Verifies overflow:scroll on a replaced element clips to content box but doesn't generate scrollbars + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-replaced.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-replaced.html new file mode 100644 index 00000000000..0657596d4f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-scroll-replaced.html @@ -0,0 +1,20 @@ + + +Verifies overflow:scroll on a replaced element clips to content box but doesn't generate scrollbars + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-svg-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-svg-ref.html new file mode 100644 index 00000000000..e81f5c158a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-svg-ref.html @@ -0,0 +1,9 @@ + + +Verifies overflow applies to img elements rendering svg + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-svg.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-svg.html new file mode 100644 index 00000000000..15285ca3b67 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img-svg.html @@ -0,0 +1,18 @@ + + +Verifies overflow applies to img elements rendering svg + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-img.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img.html new file mode 100644 index 00000000000..cd9d30ffaa3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-img.html @@ -0,0 +1,18 @@ + + +Verifies overflow applies to img elements + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-padding.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-padding.html index a77cac381fb..2d6efc391a4 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/overflow-padding.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-padding.html @@ -49,8 +49,8 @@

    green blocks get scrollbars, yellow do not.

    -

    Block child gets only block padding.

    -
    +

    Block child gets block and inline padding.

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-video-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-video-ref.html new file mode 100644 index 00000000000..4a8a83e04a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-video-ref.html @@ -0,0 +1,21 @@ + + + +Verifies overflow applies to video elements + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-video.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-video.html new file mode 100644 index 00000000000..1721f8732be --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-video.html @@ -0,0 +1,29 @@ + + + +Verifies overflow applies to video elements + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/paint-containment-svg-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/paint-containment-svg-ref.html new file mode 100644 index 00000000000..a40bd5aacee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/paint-containment-svg-ref.html @@ -0,0 +1,13 @@ + + +overflow-clip-margin applies to svg + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/paint-containment-svg.html b/tests/wpt/web-platform-tests/css/css-overflow/paint-containment-svg.html new file mode 100644 index 00000000000..bf2939f7090 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/paint-containment-svg.html @@ -0,0 +1,18 @@ + + +overflow-clip-margin applies to svg when paint containment is specified + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/parsing/overflow-clip-margin-computed.html b/tests/wpt/web-platform-tests/css/css-overflow/parsing/overflow-clip-margin-computed.html new file mode 100644 index 00000000000..17f271b3703 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/parsing/overflow-clip-margin-computed.html @@ -0,0 +1,33 @@ + + + + +CSS Overflow: getComputedStyle() for overflow-clip-margin + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/parsing/overflow-clip-margin.html b/tests/wpt/web-platform-tests/css/css-overflow/parsing/overflow-clip-margin.html new file mode 100644 index 00000000000..bfa41285558 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/parsing/overflow-clip-margin.html @@ -0,0 +1,34 @@ + + + + +CSS Overflow: parsing overflow-clip-margin + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/reference/ref-if-there-is-no-red.xht b/tests/wpt/web-platform-tests/css/css-overflow/reference/ref-if-there-is-no-red.xht new file mode 100644 index 00000000000..a5b4e9f47a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/reference/ref-if-there-is-no-red.xht @@ -0,0 +1,18 @@ + + + + + + + CSS Reftest Reference + + + + + + + +

    Test passes if there is no red.

    + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-008-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-008-ref.html index dd1304daa9a..4ead437830f 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-008-ref.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-008-ref.html @@ -3,8 +3,7 @@ CSS Reference
    Line 1 -Line 2…
    Line A -Line B…
    Line 一 +Line 2 +Line 3
    Line A +Line B +Line C
    Line 一 Line 二…
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-024-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-024-ref.html index 9b81b6f1500..d4820a1b487 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-024-ref.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-024-ref.html @@ -3,8 +3,8 @@ CSS Reference
    Line 1 Line 2 -Line 3…
    +Line 3 +Line 4 +Line 5

    Following content.

    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-035-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-035-ref.html index f7488ba2ec6..230218399e3 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-035-ref.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-035-ref.html @@ -9,8 +9,7 @@ } #clamp { font-family: Ahem; - display: -webkit-box; - -webkit-box-orient: vertical; + display: block; overflow: hidden; /* can be removed once implementations update their old -webkit-line-clamp implementations */ } diff --git a/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-036-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-036-ref.html index 2219e3106d3..0de35e98ab3 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-036-ref.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-036-ref.html @@ -4,7 +4,7 @@ .clamp { display: -webkit-box; -webkit-box-orient: vertical; - width: 150px; + width: 10ch; font: 16px / 32px monospace; background-color: yellow; padding: 4px; @@ -13,5 +13,5 @@
    supercalifragilisticexpialidocious - supercalifragi… + supercali…
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-040-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-040-ref.html new file mode 100644 index 00000000000..f55be86e546 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-040-ref.html @@ -0,0 +1,16 @@ + + +CSS Test Reference + +
    Line 1 +Line 2… +Line 3 +Line 4 +Line 5
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-block-in-inline-001-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-block-in-inline-001-ref.html new file mode 100644 index 00000000000..79f2e409109 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/reference/webkit-line-clamp-block-in-inline-001-ref.html @@ -0,0 +1,17 @@ + + + +
    + 1
    + 2
    +
    3
    + 4
    + 5 +
    + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/resizer-no-size-change.tentative.html b/tests/wpt/web-platform-tests/css/css-overflow/resizer-no-size-change.tentative.html new file mode 100644 index 00000000000..a8c659dc48d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/resizer-no-size-change.tentative.html @@ -0,0 +1,107 @@ + + +Resizer should not set the width/height properties when size doesn't change + + + + + + + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/resizer-transform.tentative.html b/tests/wpt/web-platform-tests/css/css-overflow/resizer-transform.tentative.html new file mode 100644 index 00000000000..7b1af7f8f90 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/resizer-transform.tentative.html @@ -0,0 +1,44 @@ + + +Resizer should account for transforms to decide resize direction + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollable-overflow-padding.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollable-overflow-padding.html new file mode 100644 index 00000000000..6a37f73cb6c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/scrollable-overflow-padding.html @@ -0,0 +1,183 @@ + + + + + + + + + + + + +
    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + + +
    +
    +
    +
    +
    + + +
    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    + + +
    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    + + +
    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    + + +
    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    + + +
    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollable-overflow-vertical-rl-dynamic.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollable-overflow-vertical-rl-dynamic.html new file mode 100644 index 00000000000..07f32290174 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/scrollable-overflow-vertical-rl-dynamic.html @@ -0,0 +1,18 @@ + + + + + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-abspos-001-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-abspos-001-ref.html new file mode 100644 index 00000000000..29a2a996152 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-abspos-001-ref.html @@ -0,0 +1,19 @@ + +CSS Overflow Reference: scrollbar-gutter is accounted for in abspos sizing + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-abspos-001.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-abspos-001.html new file mode 100644 index 00000000000..946cd203e7f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-abspos-001.html @@ -0,0 +1,25 @@ + +CSS Overflow Test: scrollbar-gutter is accounted for in abspos sizing + + + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/text-overflow-ellipsis-003-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/text-overflow-ellipsis-003-ref.html new file mode 100644 index 00000000000..42349bbead8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/text-overflow-ellipsis-003-ref.html @@ -0,0 +1,30 @@ + + +
    +
    + +
    +
    + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/text-overflow-ellipsis-003.html b/tests/wpt/web-platform-tests/css/css-overflow/text-overflow-ellipsis-003.html new file mode 100644 index 00000000000..a2570c558bf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/text-overflow-ellipsis-003.html @@ -0,0 +1,44 @@ + + + + + + +
    +
    + +
    +
    + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-023.html b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-023.html index b9be4f60851..7f03513baa8 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-023.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-023.html @@ -25,10 +25,10 @@ Line 4 Line 5

    Following content.

    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-036.html b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-036.html index cc5fb5b13ed..b8d7b194f05 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-036.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-036.html @@ -8,7 +8,7 @@ display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; - width: 150px; + width: 10ch; font: 16px / 32px monospace; background-color: yellow; padding: 4px; diff --git a/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-040.html b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-040.html new file mode 100644 index 00000000000..fa885c8088d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-040.html @@ -0,0 +1,23 @@ + + +CSS Overflow: line-clamp with explicit height + + + + + +
    Line 1 +Line 2 +Line 3 +Line 4 +Line 5
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-041-crash.html b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-041-crash.html new file mode 100644 index 00000000000..3f4bf3c8ef5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-041-crash.html @@ -0,0 +1,8 @@ + + + +
    +
    +


    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-042-crash.html b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-042-crash.html new file mode 100644 index 00000000000..1a5fe2e246f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-042-crash.html @@ -0,0 +1,13 @@ + + + +
    +
    + Line 1
    + Line 2
    + Line 3
    + Line 4
    + Line 5
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-043.html b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-043.html new file mode 100644 index 00000000000..54f0ac538da --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-043.html @@ -0,0 +1,23 @@ + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    + + FAIL
    + FAIL
    + FAIL
    + FAIL
    + FAIL
    + FAIL
    + FAIL
    + FAIL
    + FAIL
    + FAIL
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-block-in-inline-001.html b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-block-in-inline-001.html new file mode 100644 index 00000000000..75d1de3bf5b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/webkit-line-clamp-block-in-inline-001.html @@ -0,0 +1,22 @@ + + + + + + +
    + + 1
    + 2
    +
    3
    + 4
    + 5 +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-page/page-rule-declarations-003.html b/tests/wpt/web-platform-tests/css/css-page/page-rule-declarations-003.html new file mode 100644 index 00000000000..aaf0bbb1a8c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-page/page-rule-declarations-003.html @@ -0,0 +1,75 @@ + + +CSS Paged Media: parsing @page selectors + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-page/page-rule-declarations-004.html b/tests/wpt/web-platform-tests/css/css-page/page-rule-declarations-004.html new file mode 100644 index 00000000000..94d0f8291d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-page/page-rule-declarations-004.html @@ -0,0 +1,66 @@ + + +CSS Paged Media: parsing invalid @page selectors + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-page/parsing/page-invalid.html b/tests/wpt/web-platform-tests/css/css-page/parsing/page-invalid.html index 7af7ccb9a30..2c373a7d7f2 100644 --- a/tests/wpt/web-platform-tests/css/css-page/parsing/page-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-page/parsing/page-invalid.html @@ -9,4 +9,5 @@ test_invalid_value("page", "not,valid"); test_invalid_value("page", "123px"); test_invalid_value("page", "calc(10%+1px)"); + test_invalid_value("page", "default"); diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/geometry-border-image-001-ref.html b/tests/wpt/web-platform-tests/css/css-paint-api/geometry-border-image-001-ref.html index 23a48d55737..d3050502944 100644 --- a/tests/wpt/web-platform-tests/css/css-paint-api/geometry-border-image-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-paint-api/geometry-border-image-001-ref.html @@ -12,7 +12,7 @@ var context = canvas.getContext("2d"); // height=200, as well as a border-width=10 and border-image-slice: fill. All of // them combined meaning that it draws to the (200+10*2)*(200+10*2) area, but // stretch it to fit into the 200*200 area. -// So in this ref test, we create a 200*200 canvas. We draw to a 220*220 area +// So in this reftest, we create a 200*200 canvas. We draw to a 220*220 area // and scale it to fit the 200*200 canvas. context.scale(200/220, 200/220); context.fillStyle = 'green'; diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/paint2d-canvasFilter.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/paint2d-canvasFilter.tentative.https.html similarity index 100% rename from tests/wpt/web-platform-tests/css/css-paint-api/paint2d-canvasFilter.https.html rename to tests/wpt/web-platform-tests/css/css-paint-api/paint2d-canvasFilter.tentative.https.html diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/parsing/paint-function-valid.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/parsing/paint-function-valid.https.html new file mode 100644 index 00000000000..187bd9e94c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-paint-api/parsing/paint-function-valid.https.html @@ -0,0 +1,47 @@ + + +CSS Painting API Level 1: parsing paint() with valid values + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-position/change-insets-inside-strict-containment-nested.html b/tests/wpt/web-platform-tests/css/css-position/change-insets-inside-strict-containment-nested.html new file mode 100644 index 00000000000..b70ef0e667b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/change-insets-inside-strict-containment-nested.html @@ -0,0 +1,19 @@ + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-position/crashtests/scroll-tree-parent-construction.html b/tests/wpt/web-platform-tests/css/css-position/crashtests/scroll-tree-parent-construction.html new file mode 100644 index 00000000000..8a5bf542538 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/crashtests/scroll-tree-parent-construction.html @@ -0,0 +1,52 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-position/position-absolute-multicol-001.html b/tests/wpt/web-platform-tests/css/css-position/position-absolute-multicol-001.html new file mode 100644 index 00000000000..08132188cec --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-absolute-multicol-001.html @@ -0,0 +1,15 @@ + + +CSS Positioned Layout Test: Absolute positioned element inside multicol + + + + +

    Test passes if there is the word "PASS" below.

    +
    +
    +
    +
    +
    PASS
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/position-fixed-dynamic-transformed-sibling-ref.html b/tests/wpt/web-platform-tests/css/css-position/position-fixed-dynamic-transformed-sibling-ref.html new file mode 100644 index 00000000000..a51b0a0b10e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-fixed-dynamic-transformed-sibling-ref.html @@ -0,0 +1,17 @@ + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/position-fixed-dynamic-transformed-sibling.html b/tests/wpt/web-platform-tests/css/css-position/position-fixed-dynamic-transformed-sibling.html new file mode 100644 index 00000000000..50c464812df --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-fixed-dynamic-transformed-sibling.html @@ -0,0 +1,40 @@ + + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-position/position-fixed-video-controls-print.html b/tests/wpt/web-platform-tests/css/css-position/position-fixed-video-controls-print.html new file mode 100644 index 00000000000..685762c377a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-fixed-video-controls-print.html @@ -0,0 +1,7 @@ + + + + + +
    a
    + diff --git a/tests/wpt/web-platform-tests/css/css-position/position-relative-table-caption.html b/tests/wpt/web-platform-tests/css/css-position/position-relative-table-caption.html new file mode 100644 index 00000000000..20ff6288800 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-relative-table-caption.html @@ -0,0 +1,43 @@ + +position:relative should work on table captions + + + + + +
    +
    + + +
    +
    + +
    You should see a green box above. No red should be visible.
    + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-bottom-002.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-bottom-002.html new file mode 100644 index 00000000000..980de2e651b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-bottom-002.html @@ -0,0 +1,121 @@ + + + + + CSS Position Test: sticky element with bottom offset specified with px unit + + + + + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + + + +

    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-bottom-003.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-bottom-003.html new file mode 100644 index 00000000000..649dfc9d364 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-bottom-003.html @@ -0,0 +1,121 @@ + + + + + CSS Position Test: sticky element with bottom offset specified with percentage unit + + + + + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + + + +

    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-001-ref.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-001-ref.html new file mode 100644 index 00000000000..0d760d18dce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-001-ref.html @@ -0,0 +1,2 @@ + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-001.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-001.html new file mode 100644 index 00000000000..dd58327388f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-001.html @@ -0,0 +1,18 @@ + +CSS Positioned Layout Test: a sticky element contained by fixed under a scroller not containing fixed + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-002-ref.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-002-ref.html new file mode 100644 index 00000000000..2fa0a2a9ed4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-002-ref.html @@ -0,0 +1,9 @@ + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-002.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-002.html new file mode 100644 index 00000000000..225012b9ec8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-002.html @@ -0,0 +1,17 @@ + +CSS Positioned Layout Test: a sticky element contained by fixed under a scroller not containing fixed + + + + + +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-003.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-003.html new file mode 100644 index 00000000000..434b2797055 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-003.html @@ -0,0 +1,18 @@ + +CSS Positioned Layout Test: a sticky element contained by absolute under a scroller not containing absolute + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-004-ref.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-004-ref.html new file mode 100644 index 00000000000..fa9f2b7dc05 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-004-ref.html @@ -0,0 +1,9 @@ + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-004.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-004.html new file mode 100644 index 00000000000..ed14d62ac44 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-escape-scroller-004.html @@ -0,0 +1,17 @@ + +CSS Positioned Layout Test: a sticky element contained by absolute under a scroller not containing absolute + + + + + +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-fixed-ancestor-002.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-fixed-ancestor-002.html new file mode 100644 index 00000000000..dc3c383ea5e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-fixed-ancestor-002.html @@ -0,0 +1,53 @@ + + + + + CSS Positioned Layout Test: a sticky element inside a fixed ancestor + + + + + + + + + + + + + +
    + +
    FAIL
    + +
    PASS
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-fixed-ancestor-003.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-fixed-ancestor-003.html new file mode 100644 index 00000000000..382112cae42 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-fixed-ancestor-003.html @@ -0,0 +1,44 @@ + + + + + CSS Positioned Layout Test: a sticky element inside a fixed ancestor + + + + + + + + + +
    + +
    FAIL
    + +
    PASS
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-001.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-001.html new file mode 100644 index 00000000000..1b1f9d0afbf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-001.html @@ -0,0 +1,41 @@ + + + + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-002.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-002.html new file mode 100644 index 00000000000..5b4c81df673 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-002.html @@ -0,0 +1,41 @@ + + + + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-003.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-003.html new file mode 100644 index 00000000000..50e0e259800 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-003.html @@ -0,0 +1,50 @@ + + + + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-004.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-004.html new file mode 100644 index 00000000000..68b933a319d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-flex-item-004.html @@ -0,0 +1,51 @@ + + + + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-left-002.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-left-002.html new file mode 100644 index 00000000000..868b58adb04 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-left-002.html @@ -0,0 +1,96 @@ + + + + + CSS Position Test: sticky element with left offset specified with px unit + + + + + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + + + +

    + +
    + +
    + + + +
    + +
    + +
    + + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-left-003.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-left-003.html new file mode 100644 index 00000000000..3114981a69a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-left-003.html @@ -0,0 +1,96 @@ + + + + + CSS Position Test: sticky element with left offset specified with percentage unit + + + + + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + + + +

    + +
    + +
    + + + +
    + +
    + +
    + + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-overflow-clip-container-ref.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-overflow-clip-container-ref.html new file mode 100644 index 00000000000..2a29b435a7e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-overflow-clip-container-ref.html @@ -0,0 +1,38 @@ + + +Sticky elements should not consider overflow: clip containers as possible scroll ancestor + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-overflow-clip-container.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-overflow-clip-container.html new file mode 100644 index 00000000000..63356349afe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-overflow-clip-container.html @@ -0,0 +1,41 @@ + + +Sticky elements should not consider overflow: clip containers as possible scroll ancestor + + + + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-right-002.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-right-002.html new file mode 100644 index 00000000000..e83189a498e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-right-002.html @@ -0,0 +1,96 @@ + + + + + CSS Position Test: sticky element with right offset specified with px unit + + + + + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + + + +

    + +
    + +
    + + + +
    + +
    + +
    + + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-right-003.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-right-003.html new file mode 100644 index 00000000000..ea712a99daa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-right-003.html @@ -0,0 +1,96 @@ + + + + + CSS Position Test: sticky element with right offset specified with percentage unit + + + + + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + + + +

    + +
    + +
    + + + +
    + +
    + +
    + + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-scrolled-remove-sibling.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-scrolled-remove-sibling.html index f2cf8a98b30..845454e1b3d 100644 --- a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-scrolled-remove-sibling.html +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-scrolled-remove-sibling.html @@ -1,21 +1,99 @@ - - -

    Test passes if there is a filled green square, and no scrollbars

    -
    -
    -
    -
    - - - + + + + CSS Positioned Layout Test: element with 'position: sticky' and removing a sibling in the vertical axis and in the horizontal axis + + + + + + + + + + + + + + +

    Test passes if there is a filled green square and no scrollbar. + +

    + +
    + +
    + +
    + + +
    + +
    + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-stacking-context-002.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-stacking-context-002.html new file mode 100644 index 00000000000..1cc162880a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-stacking-context-002.html @@ -0,0 +1,47 @@ + + + + + CSS Positioned Layout Test: an element with 'position: sticky' creates a stacking context + + + + + + + + + +

    Test passes if there is a filled green square and no red. + +

    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-top-002.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-top-002.html new file mode 100644 index 00000000000..e8025d679ed --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-top-002.html @@ -0,0 +1,121 @@ + + + + + CSS Position Test: sticky element with top offset specified with px unit + + + + + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + + + +

    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-top-003.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-top-003.html new file mode 100644 index 00000000000..574b1b359bc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-top-003.html @@ -0,0 +1,121 @@ + + + + + CSS Position Test: sticky element with top offset specified with percentage unit + + + + + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + + + +

    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-top-and-bottom-003.html b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-top-and-bottom-003.html new file mode 100644 index 00000000000..af68bcef729 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/position-sticky-top-and-bottom-003.html @@ -0,0 +1,102 @@ + + + + + CSS Position Test: sticky element with top and bottom offsets specified with percentage unit + + + + + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + + + +

    + +
    + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + + + + +
    + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-bottom-002-ref.html b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-bottom-002-ref.html new file mode 100644 index 00000000000..253ca7eebed --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-bottom-002-ref.html @@ -0,0 +1,78 @@ + + + + + CSS Reftest Reference + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + +

    + +
    + +
    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-fixed-ancestor-002-ref.html b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-fixed-ancestor-002-ref.html new file mode 100644 index 00000000000..abdc1dbcfa7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-fixed-ancestor-002-ref.html @@ -0,0 +1,20 @@ + + + + + CSS Reference File + + + + + +
    PASS
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-left-002-ref.html b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-left-002-ref.html new file mode 100644 index 00000000000..75aa9a4c1f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-left-002-ref.html @@ -0,0 +1,74 @@ + + + + + CSS Reftest Reference + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + +

    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-right-002-ref.html b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-right-002-ref.html new file mode 100644 index 00000000000..3230e476b5c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-right-002-ref.html @@ -0,0 +1,68 @@ + + + + + CSS Reftest Reference + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + +

    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-top-002-ref.html b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-top-002-ref.html new file mode 100644 index 00000000000..4a95591a56e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-top-002-ref.html @@ -0,0 +1,83 @@ + + + + + CSS Reftest Reference + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + +

    + +
    + +
    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-top-and-bottom-003-ref.html b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-top-and-bottom-003-ref.html new file mode 100644 index 00000000000..36af9a33bc5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/sticky/reference/position-sticky-top-and-bottom-003-ref.html @@ -0,0 +1,83 @@ + + + + + CSS Reftest Reference + + + + + + + +

    Test passes if there are 3 filled green squares and no red. + +

    + +
    + +
    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-position/sticky/support/100x100-red.png b/tests/wpt/web-platform-tests/css/css-position/sticky/support/100x100-red.png new file mode 100644 index 00000000000..57bf3ddc521 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/css-position/sticky/support/100x100-red.png differ diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/at-property-viewport-units-dynamic.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/at-property-viewport-units-dynamic.html new file mode 100644 index 00000000000..68adff6887c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/at-property-viewport-units-dynamic.html @@ -0,0 +1,41 @@ + +@property: viewport units in initial value (dynamic) + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/at-property-viewport-units.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/at-property-viewport-units.html new file mode 100644 index 00000000000..51520c2a709 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/at-property-viewport-units.html @@ -0,0 +1,91 @@ + +@property: viewport units in initial value + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/crashtests/initial-in-audio-crash.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/crashtests/initial-in-audio-crash.html new file mode 100644 index 00000000000..dfc2b850a51 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/crashtests/initial-in-audio-crash.html @@ -0,0 +1,13 @@ + + + + diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing.html index 31094d25b79..f9022764b1a 100644 --- a/tests/wpt/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing.html +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing.html @@ -145,6 +145,7 @@ assert_invalid("initial", "initial"); assert_invalid("inherit", "inherit"); assert_invalid("unset", "unset"); assert_invalid("revert", "revert"); +assert_invalid("revert-layer", "revert-layer"); assert_invalid("default", "default"); assert_invalid("|initial", "10px"); assert_invalid("|INHERIT", "10px"); @@ -153,20 +154,28 @@ assert_invalid("|REVert", "red"); assert_invalid("|deFAUlt", "1"); // Invalid initialValue +// The 6 tests that follow are not clearly backed by the specification, +// but (at least other than the one for 'default') they're probably a +// good idea and we should change the spec. See +// https://github.com/w3c/css-houdini-drafts/issues/1076 . assert_invalid("*", "initial"); assert_invalid("*", "inherit"); assert_invalid("*", "unset"); assert_invalid("*", "revert"); +assert_invalid("*", "revert-layer"); assert_invalid("*", "default"); +// ... end possibly-invalid tests. assert_invalid("", "initial"); assert_invalid("", "inherit"); assert_invalid("", "unset"); assert_invalid("", "revert"); +assert_invalid("", "revert-layer"); assert_invalid("", "default"); assert_invalid("+", "foo initial bar"); assert_invalid("+", "foo inherit bar"); assert_invalid("+", "foo unset bar"); assert_invalid("+", "foo revert bar"); +assert_invalid("+", "foo revert-layer bar"); assert_invalid("+", "foo default bar"); assert_invalid("*", ")"); diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-property-computation.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-property-computation.html index f03b257246e..ec2d35c7fb9 100644 --- a/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-property-computation.html +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-property-computation.html @@ -7,6 +7,7 @@ @@ -107,6 +108,8 @@ test_computed_value('', '25.4mm', '96px'); test_computed_value('', '6pc', '96px'); test_computed_value('', '72pt', '96px'); +test_computed_value('', '10lh', '200px'); + test_computed_value('', '17em', '170px'); test_computed_value('', '18%', '18%'); test_computed_value('', 'calc(19em - 2%)', 'calc(-2% + 190px)'); @@ -167,4 +170,6 @@ test_computed_value('', '1dppx', '1dppx'); test_computed_value('', '96dpi', '1dppx'); test_computed_value('', 'calc(1dppx + 96dpi)', '2dppx'); +test_computed_value('*', 'url(why)', 'url(why)'); + diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/unit-cycles.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/unit-cycles.html index f8eba17f218..9454c95ac30 100644 --- a/tests/wpt/web-platform-tests/css/css-properties-values-api/unit-cycles.html +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/unit-cycles.html @@ -18,6 +18,7 @@ register_length('--font-size-ex'); register_length('--font-size-ch'); register_length('--font-size-px'); + register_length('--font-size-lh'); register_length('--font-size-em-via-var'); register_length('--font-size-rem-via-var'); register_length('--font-size-ex-via-var'); @@ -25,6 +26,9 @@ register_length('--font-size-em-inherited', true); register_length('--font-size-ex-inherited', true); register_length('--font-size-ch-inherited', true); + register_length('--line-height-lh'); + register_length('--line-height-lh-via-var'); + register_length('--line-height-lh-inherited', true); @@ -81,6 +91,7 @@ } let unsetFontSize = compute_dimension('1em', 'unset'); + const unsetLineHeight = "normal"; add_result_callback(function(){ target.attributeStyleMap.clear(); @@ -111,6 +122,12 @@ assert_property_equals('--font-size-ch', '0px'); }, 'Lengths with ch units may not be referenced from font-size'); + test(function() { + target.style = 'font-size: var(--font-size-lh);'; + assert_property_equals('font-size', unsetFontSize); + assert_property_equals('--font-size-lh', '0px'); + }, 'Lengths with lh units may not be referenced from font-size'); + test(function() { target.style = 'font-size: var(--font-size-rem);'; let expected = compute_dimension('2rem', 'unset', document.documentElement); @@ -125,11 +142,22 @@ assert_property_equals('--font-size-rem', '0px', root); }, 'Lengths with rem units may not be referenced from font-size on root element'); + test(function() { + target.style = 'line-height: var(--line-height-lh);'; + assert_property_equals('line-height', unsetLineHeight); + assert_property_equals('--line-height-lh', '0px'); + }, 'Lengths with lh units may not be referenced from line-height'); + test(function() { target.style = 'font-size: var(--noexist, var(--font-size-em));'; assert_property_equals('font-size', unsetFontSize); }, 'Fallback may not use font-relative units'); + test(function() { + target.style = 'line-height: var(--noexist, var(--line-height-lh));'; + assert_property_equals('line-height', unsetLineHeight); + }, 'Fallback may not use line-height-relative units'); + test(function() { target.style = 'font-size: var(--font-size-em, 42px);'; assert_property_equals('font-size', unsetFontSize); @@ -152,6 +180,11 @@ root.style = 'font-size: unset;'; }, 'Fallback not triggered while inside rem unit cycle on root element'); + test(function() { + target.style = 'line-height: var(--line-height-lh, 42px);'; + assert_property_equals('line-height', unsetLineHeight); + }, 'Fallback not triggered while inside lh unit cycle'); + test(function() { target.style = 'font-size: var(--font-size-em-via-var);'; assert_property_equals('font-size', unsetFontSize); @@ -178,6 +211,12 @@ root.style = 'font-size: unset'; }, 'Lengths with rem units are detected via var references'); + test(function() { + target.style = 'line-height: var(--line-height-lh-via-var);'; + assert_property_equals('line-height', unsetLineHeight); + assert_property_equals('--line-height-lh-via-var', '0px'); + }, 'Lengths with lh units are detected via var references'); + test(function() { let expected4em = compute_dimension('4em', 'unset'); target.style = 'font-size: var(--font-size-em-inherited);'; @@ -199,4 +238,11 @@ assert_property_equals('--font-size-ch-inherited', expected4ch); }, 'Inherited lengths with ch units may be used'); + test(function() { + let expected4lh = compute_dimension('4lh', 'unset'); + target.style = 'line-height: var(--line-height-lh-inherited);'; + assert_property_equals('line-height', expected4lh); + assert_property_equals('--line-height-lh-inherited', expected4lh); + }, 'Inherited lengths with lh units may be used'); + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/backdrop-animate-002.html b/tests/wpt/web-platform-tests/css/css-pseudo/backdrop-animate-002.html index 4d897a0637b..6fd153becde 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/backdrop-animate-002.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/backdrop-animate-002.html @@ -4,6 +4,8 @@ Dialog contents + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/chrome-first-letter-inside-replaced-crash.html b/tests/wpt/web-platform-tests/css/css-pseudo/chrome-first-letter-inside-replaced-crash.html new file mode 100644 index 00000000000..cf9e2d71633 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/chrome-first-letter-inside-replaced-crash.html @@ -0,0 +1,21 @@ + +Chrome issue 1370386 + + + +
    +
    + x +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/dir-pseudo-on-bdi-element.html b/tests/wpt/web-platform-tests/css/css-pseudo/dir-pseudo-on-bdi-element.html new file mode 100644 index 00000000000..434434461dd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/dir-pseudo-on-bdi-element.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/dir-pseudo-on-input-element.html b/tests/wpt/web-platform-tests/css/css-pseudo/dir-pseudo-on-input-element.html new file mode 100644 index 00000000000..3bb49790e99 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/dir-pseudo-on-input-element.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-green-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-green-ref.html new file mode 100644 index 00000000000..99e9c334bf2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-green-ref.html @@ -0,0 +1,3 @@ + +CSS Test Reference +
    This text should be green.
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-nested-gcs.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-nested-gcs.html new file mode 100644 index 00000000000..6777e5468f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-nested-gcs.html @@ -0,0 +1,14 @@ + +CSS Pseudo Test: Query ::first-line computed style before outer block ::first-line matches + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-005-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-005-ref.html new file mode 100644 index 00000000000..20d2b0bdb3a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-005-ref.html @@ -0,0 +1,24 @@ + + +CSS Pseudo-Elements Test: highlight cascade: inheritance with both universal and non-universal rules + + + + + +
    yellow white white
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-005.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-005.html new file mode 100644 index 00000000000..008f56aded9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-005.html @@ -0,0 +1,23 @@ + + +CSS Pseudo-Elements Test: highlight cascade: inheritance with both universal and non-universal rules + + + + + + + + +
    yellow white white
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-006-ref.xhtml b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-006-ref.xhtml new file mode 100644 index 00000000000..df0a56123e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-006-ref.xhtml @@ -0,0 +1,18 @@ + + +CSS Pseudo-Elements Test: highlight cascade: inheritance with both universal and namespace-universal rules + + + + +
    +
    green
    +
    green
    +
    green
    +
    green
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-006.xhtml b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-006.xhtml new file mode 100644 index 00000000000..fb6d07f8f0b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-006.xhtml @@ -0,0 +1,34 @@ + + +CSS Pseudo-Elements Test: highlight cascade: inheritance with both universal and namespace-universal rules + + + + + + + + +
    + +
    green
    + +
    green
    + +
    green
    + +
    green
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-007.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-007.html new file mode 100644 index 00000000000..de0322d9103 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-cascade-007.html @@ -0,0 +1,75 @@ + + +CSS Pseudo-Elements Test: highlight cascade: inheritance with both universal and non-universal rules + + + + + + + + + +
    +
    M
    +
    W
    +
    U
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-computed-inheritance.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-computed-inheritance.html new file mode 100644 index 00000000000..d67ae828818 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-computed-inheritance.html @@ -0,0 +1,43 @@ + + +CSS Pseudo-Elements Test: highlight selectors inheritance getComputedStyle for currentcolor + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-computed-visited.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-computed-visited.html new file mode 100644 index 00000000000..207cb7b7dd1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-computed-visited.html @@ -0,0 +1,42 @@ + + +CSS Pseudo-Elements Test: highlight selectors getComputedStyle for currentcolor on visited + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-computed.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-computed.html new file mode 100644 index 00000000000..97c31809dfc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-computed.html @@ -0,0 +1,68 @@ + + +CSS Pseudo-Elements Test: highlight selectors getComputedStyle for currentcolor + + + + + +
    +
    + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-001-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-001-ref.html new file mode 100644 index 00000000000..93e2002f4aa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-001-ref.html @@ -0,0 +1,45 @@ + + + +CSS Pseudo-Elements Test: Reference + + + + +
    example - empty
    +
    example - color-currentcolor
    +
    example - backgroundcolor-currentcolor
    +
    example - textdecorationcolor-currentcolor
    +
    example - color-currentcolor-backgroundcolor-currentcolor
    +
    example - color-currentcolor-backgroundcolor-blue
    +
    example - color-blue-backgroundcolor-currentcolor
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-001.html new file mode 100644 index 00000000000..8f347f119e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-001.html @@ -0,0 +1,62 @@ + + +CSS Pseudo-Elements Test: Custom Highlights currentcolor painting single layer + + + + + + + +
    example - empty
    +
    example - color-currentcolor
    +
    example - backgroundcolor-currentcolor
    +
    example - textdecorationcolor-currentcolor
    +
    example - color-currentcolor-backgroundcolor-currentcolor
    +
    example - color-currentcolor-backgroundcolor-blue
    +
    example - color-blue-backgroundcolor-currentcolor
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-002-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-002-ref.html new file mode 100644 index 00000000000..11ca501065e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-002-ref.html @@ -0,0 +1,49 @@ + + + +CSS Pseudo-Elements Test: Reference + + + + +
    example - empty
    +
    example - color-currentcolor
    +
    example - backgroundcolor-currentcolor
    +
    example - textdecorationcolor-currentcolor
    +
    example - color-currentcolor-backgroundcolor-currentcolor
    +
    example - color-currentcolor-backgroundcolor-blue
    +
    example - color-blue-backgroundcolor-currentcolor
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-002.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-002.html new file mode 100644 index 00000000000..bd5d5f4abb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-properties-002.html @@ -0,0 +1,71 @@ + + +CSS Pseudo-Elements Test: Custom Highlights currentcolor painting two layers + + + + + + + +
    example - empty
    +
    example - color-currentcolor
    +
    example - backgroundcolor-currentcolor
    +
    example - textdecorationcolor-currentcolor
    +
    example - color-currentcolor-backgroundcolor-currentcolor
    +
    example - color-currentcolor-backgroundcolor-blue
    +
    example - color-blue-backgroundcolor-currentcolor
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-001-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-001-ref.html new file mode 100644 index 00000000000..d6ee33cda74 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-001-ref.html @@ -0,0 +1,14 @@ + + + + +
    example - textshadow-currentcolor
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-001.html new file mode 100644 index 00000000000..141556f935b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-001.html @@ -0,0 +1,33 @@ + +CSS Pseudo-Elements Test: Custom Highlights currentcolor painting single layer + + + + + + + +
    example - textshadow-currentcolor
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-002-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-002-ref.html new file mode 100644 index 00000000000..fb2696a55a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-002-ref.html @@ -0,0 +1,18 @@ + + + + +
    example - textshadow-currentcolor
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-002.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-002.html new file mode 100644 index 00000000000..77858729afa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-painting-text-shadow-002.html @@ -0,0 +1,43 @@ + +CSS Pseudo-Elements Test: Custom Highlights currentcolor painting two layers + + + + + + + +
    example - textshadow-currentcolor
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-001-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-001-ref.html new file mode 100644 index 00000000000..794796a88f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-001-ref.html @@ -0,0 +1,113 @@ + + + +CSS Pseudo-Elements Test: Reference + + + + +
    example - empty
    +
    example - color-currentcolor
    +
    example - color-initial
    +
    example - color-inherit
    +
    example - color-unset
    +
    example - color-cyan
    +
    example - backgroundcolor-currentcolor
    +
    example - color-currentcolor-backgroundcolor-currentcolor
    +
    example - color-initial-backgroundcolor-currentcolor
    +
    example - color-inherit-backgroundcolor-currentcolor
    +
    example - color-inset-backgroundcolor-currentcolor
    +
    example - color-cyan-backgroundcolor-currentcolor
    +
    example - backgroundcolor-blue
    +
    example - color-currentcolor-backgroundcolor-blue
    +
    example - color-initial-backgroundcolor-blue
    +
    example - color-inherit-backgroundcolor-blue
    +
    example - color-inset-backgroundcolor-blue
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-001.html new file mode 100644 index 00000000000..a1512f014df --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-001.html @@ -0,0 +1,105 @@ + + +CSS Pseudo-Elements Test: Custom Highlights currentcolor, initial, inherit, unset painting + + + + + + +
    example - empty
    +
    example - color-currentcolor
    +
    example - color-initial
    +
    example - color-inherit
    +
    example - color-unset
    +
    example - color-cyan
    +
    example - backgroundcolor-currentcolor
    +
    example - color-currentcolor-backgroundcolor-currentcolor
    +
    example - color-initial-backgroundcolor-currentcolor
    +
    example - color-inherit-backgroundcolor-currentcolor
    +
    example - color-inset-backgroundcolor-currentcolor
    +
    example - color-cyan-backgroundcolor-currentcolor
    +
    example - backgroundcolor-blue
    +
    example - color-currentcolor-backgroundcolor-blue
    +
    example - color-initial-backgroundcolor-blue
    +
    example - color-inherit-backgroundcolor-blue
    +
    example - color-inset-backgroundcolor-blue
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-002-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-002-ref.html new file mode 100644 index 00000000000..31759483174 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-002-ref.html @@ -0,0 +1,20 @@ + + + +CSS Pseudo-Elements Test: Reference + + + + +
    green
    +
    green
    +
    blue
    +
    blue
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-002.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-002.html new file mode 100644 index 00000000000..fc5698faa1e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-explicit-default-002.html @@ -0,0 +1,45 @@ + + +CSS Pseudo-Elements Test: Custom Highlights color inherit painting + + + + + + +
    green
    +
    green
    +
    +
    blue
    +
    blue
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-implicit-default-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-implicit-default-001.html new file mode 100644 index 00000000000..ecf787b9b41 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-implicit-default-001.html @@ -0,0 +1,27 @@ + + +CSS Pseudo-Elements Test: implicit defaulting of ‘color’ in :root highlights + + + +

    Pass if text below is green on lime, and the text itself represents green, not initial (black).

    +
    FAIL
    +
    FAIL
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-implicit-default-002.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-implicit-default-002.html new file mode 100644 index 00000000000..420cc5ba15e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-implicit-default-002.html @@ -0,0 +1,28 @@ + + +CSS Pseudo-Elements Test: implicit defaulting of ‘color’ in :root highlights + + + + +

    Pass if text below is green on lime, and the text itself represents green, not initial (black).

    +
    FAIL
    +
    FAIL
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-implicit-default-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-implicit-default-ref.html new file mode 100644 index 00000000000..67ecb8df640 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-currentcolor-root-implicit-default-ref.html @@ -0,0 +1,22 @@ + + +CSS Reftest Reference +

    Pass if text below is green on lime, and the text itself represents green, not initial (black).

    +
    rgb(0, 128, 0)
    +
    rgb(0, 128, 0)
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-003.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-003.html index 89a279370cc..b09ef52dd73 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-003.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-003.html @@ -23,10 +23,9 @@ Decoration paints are ordered by text-decoration-line (underline, overline, text, line-through), then by highlight overlay (originating, ::grammar-error, ::spelling-error, - ::target-text, ::selection). See options (d, d, d) in - csswg-drafts#6022 for more details. + ::target-text, ::selection). */ - * { + *, *::selection { text-decoration-skip-ink: none; text-decoration-skip: none; } diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-004.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-004.html index 7abccb52453..26ded65f871 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-004.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-004.html @@ -24,8 +24,7 @@ Decoration paints are ordered by text-decoration-line (underline, overline, text, line-through), then by highlight overlay (originating, ::grammar-error, ::spelling-error, - ::target-text, ::selection). See options (d, d, d) in - csswg-drafts#6022 for more details. + ::target-text, ::selection). */ * { text-decoration-skip-ink: none; diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-currentcolor-005-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-currentcolor-005-ref.html new file mode 100644 index 00000000000..39d26e83872 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-currentcolor-005-ref.html @@ -0,0 +1,17 @@ + + + +CSS Pseudo-Elements Test: Reference + + + +visited +unvisited diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-currentcolor-005.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-currentcolor-005.html new file mode 100644 index 00000000000..f5c15aafa99 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-currentcolor-005.html @@ -0,0 +1,42 @@ + + +CSS Pseudo-Elements Test: Custom Highlights currentcolor on visited + + + + + + +visited +unvisited + + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-soft-hyphens-001-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-soft-hyphens-001-ref.html new file mode 100644 index 00000000000..f1485ca9226 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-soft-hyphens-001-ref.html @@ -0,0 +1,15 @@ + + +CSS Pseudo-Elements Test: highlight painting: soft hyphens + + +

    Pass if only the letter T is visible below, not the hyphens. +

    The­Quick­Brown­Fox­Jumps­Over­The­Lazy­Dog­The­Quick­Brown­Fox­Jumps­Over­The­Lazy­Dog­The­Quick­Brown­Fox­Jumps­Over­The­Lazy­Dog
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-soft-hyphens-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-soft-hyphens-001.html new file mode 100644 index 00000000000..17b5f6a37c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-soft-hyphens-001.html @@ -0,0 +1,28 @@ + + +CSS Pseudo-Elements Test: highlight painting: soft hyphens + + + + + + + + +

    Pass if only the letter T is visible below, not the hyphens. +

    The­Quick­Brown­Fox­Jumps­Over­The­Lazy­Dog­The­Quick­Brown­Fox­Jumps­Over­The­Lazy­Dog­The­Quick­Brown­Fox­Jumps­Over­The­Lazy­Dog
    + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-soft-hyphens-002-crash.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-soft-hyphens-002-crash.html new file mode 100644 index 00000000000..eb80d489099 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-painting-soft-hyphens-002-crash.html @@ -0,0 +1,12 @@ + + +CSS Pseudo-Elements Test: highlight painting: soft hyphens near atomic inlines + + + + +aaaaaaaaaaaaa­a + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-004.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-004.html new file mode 100644 index 00000000000..61e2b7d7f07 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-004.html @@ -0,0 +1,27 @@ + + +CSS Pseudo-Elements Test: paired cascade: rule includes highlight pseudos other than ::selection + + + + + + +

    Test passes if the text below does not appear to be highlighted (test again). +

    quick
    + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-004.tentative.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-004.tentative.html deleted file mode 100644 index cc1d4daa971..00000000000 --- a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-004.tentative.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -CSS Pseudo-Elements Test: paired cascade: rule includes highlight pseudos other than ::selection - - - - - - -

    Test passes if the text below does not appear to be highlighted (test again). -

    quick
    - diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-005.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-005.html new file mode 100644 index 00000000000..50677c811e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-005.html @@ -0,0 +1,25 @@ + + +CSS Pseudo-Elements Test: paired cascade: UA default highlight colors are not used when highlight pseudo has declared color value of unset + + + + + + + +

    Test passes if the text below does not appear to be highlighted. +

    quick
    + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-005.tentative.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-005.tentative.html deleted file mode 100644 index 4d402292eb5..00000000000 --- a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-paired-cascade-005.tentative.html +++ /dev/null @@ -1,26 +0,0 @@ - - - -CSS Pseudo-Elements Test: paired cascade: UA default highlight colors are not used when highlight pseudo has declared color value of unset - - - - - - - -

    Test passes if the text below does not appear to be highlighted. -

    quick
    - diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-pseudos-computed.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-pseudos-computed.html index 9374ec7f528..f0d848e19c9 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-pseudos-computed.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-pseudos-computed.html @@ -5,10 +5,22 @@ +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/highlight-pseudos-visited-computed-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-pseudos-visited-computed-001.html new file mode 100644 index 00000000000..a2b18effccd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/highlight-pseudos-visited-computed-001.html @@ -0,0 +1,50 @@ + + +CSS Pseudo-Elements Test: highlight selectors getComputedStyle on visited + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/lang-pseudo-class-across-shadow-boundaries-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/lang-pseudo-class-across-shadow-boundaries-ref.html new file mode 100644 index 00000000000..eda713a7eda --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/lang-pseudo-class-across-shadow-boundaries-ref.html @@ -0,0 +1,7 @@ + + + +

    Test passes if you see a single 100px by 100px green box below.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/lang-pseudo-class-across-shadow-boundaries.html b/tests/wpt/web-platform-tests/css/css-pseudo/lang-pseudo-class-across-shadow-boundaries.html new file mode 100644 index 00000000000..ec1e1564981 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/lang-pseudo-class-across-shadow-boundaries.html @@ -0,0 +1,28 @@ + + + + + + + +

    Test passes if you see a single 100px by 100px green box below.

    + +
    +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-line-height-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-line-height-ref.html index 64b0d41a389..a32fb812f10 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/marker-line-height-ref.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-line-height-ref.html @@ -3,6 +3,7 @@ CSS Reftest Reference +
      +
    1. +
    2. +
    3. +
    +
      +
    1. +
    2. +
    3. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-transform-dynamic.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-transform-dynamic.html new file mode 100644 index 00000000000..f10b42ead6d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-transform-dynamic.html @@ -0,0 +1,42 @@ + + +::marker with dynamic 'text-transform' + + + + + + +
      +
    1. +
    2. +
    3. +
    +
      +
    1. +
    2. +
    3. +
    + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html index ab03b9825de..700d04aa83a 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html @@ -61,6 +61,7 @@ test_pseudo_computed_value("::marker", "animation-iteration-count", "infinite"); test_pseudo_computed_value("::marker", "animation-name", "anim"); test_pseudo_computed_value("::marker", "animation-play-state", "paused"); test_pseudo_computed_value("::marker", "animation-timing-function", "linear"); +test_pseudo_computed_value("::marker", "animation-composition", "add"); // ::marker supports transition properties. test_pseudo_computed_value("::marker", "transition", "display 1s linear 2s"); diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/placeholder-as-multicol-crash.html b/tests/wpt/web-platform-tests/css/css-pseudo/placeholder-as-multicol-crash.html new file mode 100644 index 00000000000..8407f95d7f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/placeholder-as-multicol-crash.html @@ -0,0 +1,7 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-001-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-001-ref.html new file mode 100644 index 00000000000..b51f889d11e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-001-ref.html @@ -0,0 +1,18 @@ + + +CSS Pseudo-Elements Test: Reference file + + + + +

    Test passes if when selecting the content "visited" has a green color and white background, and "unvisited" is selected with the default colors.

    +
    + visited + unvisited +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-001.html new file mode 100644 index 00000000000..08bc5e73239 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-001.html @@ -0,0 +1,25 @@ + + +CSS Pseudo-Elements Test: ::selection on visited and unvisited links + + + + + + + +

    Test passes if when selecting the content "visited" has a green color and white background, and "unvisited" is selected with the default colors.

    +
    + visited + unvisited +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-002-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-002-ref.html new file mode 100644 index 00000000000..e634c3a3dfd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-002-ref.html @@ -0,0 +1,18 @@ + + +CSS Pseudo-Elements Test: Reference file + + + + +

    Test passes if when selecting the content "visited" is selected with the default colors and "unvisited" has a green color and white background.

    +
    + visited + unvisited +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-002.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-002.html new file mode 100644 index 00000000000..52c2ae1ec2a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-002.html @@ -0,0 +1,25 @@ + + +CSS Pseudo-Elements Test: ::selection on visited and unvisited links + + + + + + + +

    Test passes if when selecting the content "visited" is selected with the default colors and "unvisited" has a green color and white background.

    +
    + visited + unvisited +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-003-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-003-ref.html new file mode 100644 index 00000000000..9b09f064663 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-003-ref.html @@ -0,0 +1,18 @@ + + +CSS Pseudo-Elements Test: Reference file + + + + +

    Test passes if when selecting the content both "visited" and "unvisited" have a green color and white background.

    +
    + visited + unvisited +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-003.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-003.html new file mode 100644 index 00000000000..e935531997f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-link-003.html @@ -0,0 +1,28 @@ + + +CSS Pseudo-Elements Test: ::selection on visited and unvisited links + + + + + + + +

    Test passes if when selecting the content both "visited" and "unvisited" have a green color and white background.

    +
    + visited + unvisited +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-universal-shadow-dom.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-universal-shadow-dom.html new file mode 100644 index 00000000000..738e7995430 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-universal-shadow-dom.html @@ -0,0 +1,30 @@ + + +CSS Pseudo-Elements Test: Universal ::selection in Shadow DOM + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-004-crash.html b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-004-crash.html new file mode 100644 index 00000000000..d8222233d51 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-004-crash.html @@ -0,0 +1,12 @@ + +CSS Pseudo-Elements Test: spelling error with unusual root element + + + + + +quikc + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-005-crash.html b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-005-crash.html new file mode 100644 index 00000000000..b45fcc75465 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-005-crash.html @@ -0,0 +1,11 @@ + +CSS Pseudo-Elements Test: spelling error with unusual root element + + + + + +quikc + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-006-notref.html b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-006-notref.html new file mode 100644 index 00000000000..76e8310ff13 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-006-notref.html @@ -0,0 +1,8 @@ + +CSS Pseudo-Elements Test: spelling error with originating decorations + + +quikc + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-006.html b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-006.html new file mode 100644 index 00000000000..e5e99f4260d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-006.html @@ -0,0 +1,13 @@ + +CSS Pseudo-Elements Test: spelling error with originating decorations + + + + + + + +quikc + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/target-text-008-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/target-text-008-ref.html new file mode 100644 index 00000000000..d9082b822fe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/target-text-008-ref.html @@ -0,0 +1,18 @@ + + + +CSS Pseudo-Elements Test: Reference + + + +

    Test passes if the link below has lime color and green background.

    +visited + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/target-text-008.html b/tests/wpt/web-platform-tests/css/css-pseudo/target-text-008.html new file mode 100644 index 00000000000..b1759124be5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/target-text-008.html @@ -0,0 +1,23 @@ + + +CSS Pseudo-Elements Test: ::target-text visited links + + + + + + +

    Test passes if the link below has lime color and green background.

    +visited + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/target-text-text-decoration-001-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/target-text-text-decoration-001-ref.html index b15f74c1dac..0ee37b1e8aa 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/target-text-text-decoration-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/target-text-text-decoration-001-ref.html @@ -4,6 +4,8 @@

    The test passes if the following line has a magenta underline.

    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/target-text-text-decoration-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/target-text-text-decoration-001.html index 1709ce70816..d90d5d96630 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/target-text-text-decoration-001.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/target-text-text-decoration-001.html @@ -7,6 +7,8 @@

    The test passes if the following line has a magenta underline.

    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/textpath-selection-011-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/textpath-selection-011-ref.html index 6950c32f1d5..6d07c71bc49 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/textpath-selection-011-ref.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/textpath-selection-011-ref.html @@ -15,7 +15,6 @@ /* color suppresses UA default background-color, but fill and stroke do not, so set explicitly - https://github.com/w3c/csswg-drafts/issues/6386 */ fill: green; /* diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/textpath-selection-011.html b/tests/wpt/web-platform-tests/css/css-pseudo/textpath-selection-011.html index 3d7254839ad..1e84519b0e5 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/textpath-selection-011.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/textpath-selection-011.html @@ -21,7 +21,6 @@ /* color suppresses UA default background-color, but fill and stroke do not, so set explicitly - https://github.com/w3c/csswg-drafts/issues/6386 */ fill: green; /* diff --git a/tests/wpt/web-platform-tests/css/css-ruby/block-ruby-001-ref.html b/tests/wpt/web-platform-tests/css/css-ruby/block-ruby-001-ref.html index b8d851fb532..076a2f01cfb 100644 --- a/tests/wpt/web-platform-tests/css/css-ruby/block-ruby-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-ruby/block-ruby-001-ref.html @@ -8,6 +8,17 @@ CSS Ruby Reference: basic 'block ruby' layout. -A
    ã¹ã‚‹
    B +A
    ã¹ã‚‹
    B A
    ã¹ã‚‹
    B -
    A
    ã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹
    B
    -
    -

    一二三四五六七八

    -

    一二三四五六七八

    +
    A
    ã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹
    B
    +
    +
    一二三四五六七八
    +
    一二三四五六七八
    diff --git a/tests/wpt/web-platform-tests/css/css-ruby/block-ruby-001.html b/tests/wpt/web-platform-tests/css/css-ruby/block-ruby-001.html index f6a058807c4..0602116aaca 100644 --- a/tests/wpt/web-platform-tests/css/css-ruby/block-ruby-001.html +++ b/tests/wpt/web-platform-tests/css/css-ruby/block-ruby-001.html @@ -11,6 +11,17 @@ Aã¹ã‚‹B -Aã¹ã‚‹B -
    Aã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹B
    -
    -

    一二三四五六七八

    -

    一二三四五六七八

    +Aã¹ã‚‹B +
    Aã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹ ã¹ã‚‹B
    +
    + 一二三四五六七八 + 一二三四五六七八
    diff --git a/tests/wpt/web-platform-tests/css/css-ruby/intra-base-white-space-001.html b/tests/wpt/web-platform-tests/css/css-ruby/intra-base-white-space-001.html new file mode 100644 index 00000000000..86468376c32 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ruby/intra-base-white-space-001.html @@ -0,0 +1,35 @@ + + + + + CSS Ruby Test: intra-base white space (complex) + + + + + + + + + + + + + b cd e + + aaaa + + + + diff --git a/tests/wpt/web-platform-tests/css/css-ruby/rbc-rtc-basic-001.html b/tests/wpt/web-platform-tests/css/css-ruby/rbc-rtc-basic-001.html index 8da4a04571d..758490a5536 100644 --- a/tests/wpt/web-platform-tests/css/css-ruby/rbc-rtc-basic-001.html +++ b/tests/wpt/web-platform-tests/css/css-ruby/rbc-rtc-basic-001.html @@ -7,6 +7,7 @@ CSS Ruby Test: rbc and rtc elements (basic) + diff --git a/tests/wpt/web-platform-tests/css/css-ruby/reference/intra-base-white-space-001-ref.html b/tests/wpt/web-platform-tests/css/css-ruby/reference/intra-base-white-space-001-ref.html new file mode 100644 index 00000000000..4615b53ea74 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ruby/reference/intra-base-white-space-001-ref.html @@ -0,0 +1,28 @@ + + + + + CSS Reference File + + + + + + + + ba caaea + + + + diff --git a/tests/wpt/web-platform-tests/css/css-ruby/reference/ruby-annotation-pairing-001-ref.html b/tests/wpt/web-platform-tests/css/css-ruby/reference/ruby-annotation-pairing-001-ref.html new file mode 100644 index 00000000000..2a8f9a836ff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ruby/reference/ruby-annotation-pairing-001-ref.html @@ -0,0 +1,36 @@ + + + + + CSS Reference File + + + + + + +
    A
    + +
    W Z
    + +
    A
    + +
    W Z
    + +
    A
    + +
    W Z
    diff --git a/tests/wpt/web-platform-tests/css/css-ruby/ruby-annotation-pairing-001.html b/tests/wpt/web-platform-tests/css/css-ruby/ruby-annotation-pairing-001.html new file mode 100644 index 00000000000..453ba96ebdc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ruby/ruby-annotation-pairing-001.html @@ -0,0 +1,40 @@ + + + + + CSS Ruby Test: single ruby annotation pairing + + + + + + + + + + + + + +

    W Z A

    + +
    A
    + +
    W Z
    + +

    W Z A

    diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout-vertical-ref.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout-vertical-ref.html new file mode 100644 index 00000000000..0026f2f888c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout-vertical-ref.html @@ -0,0 +1,45 @@ + + + + + + + + + + + +
    +
    +

    Anchor

    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout-vertical.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout-vertical.html new file mode 100644 index 00000000000..5b176a2042e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/nested-overflow-subtree-layout-vertical.html @@ -0,0 +1,52 @@ + + + + Test that subtree layout with nested overflow preserves scroll anchoring in vertical mode. + + + + + + + + + +
    +
    +

    Anchor

    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.html new file mode 100644 index 00000000000..b0cde7fed1e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.html @@ -0,0 +1,57 @@ + +Ignore snap points orthogonal to scroll snap axis + + + + + +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/input/keyboard.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/input/keyboard.html index b8ad3e001d8..7b0c6c05742 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/input/keyboard.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/input/keyboard.html @@ -16,7 +16,7 @@ -
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/input/snap-area-overflow-boundary.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/input/snap-area-overflow-boundary.html index ce9f73ef239..c497845263f 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/input/snap-area-overflow-boundary.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/input/snap-area-overflow-boundary.html @@ -37,7 +37,7 @@ -
    +
    Header 1
    diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-margin-visibility-check.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-margin-visibility-check.html index faebf8f0d8f..a072c142ad5 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-margin-visibility-check.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-margin-visibility-check.html @@ -19,7 +19,7 @@ body { margin: 0 } height: 100px; background-color: blue; scroll-margin: 100px; - margin-left: 450px; + margin-left: 510px; } @@ -32,10 +32,12 @@ body { margin: 0 } + + +
    +
    +
    1
    +
    2
    +
    3
    +
    4
    +
    5
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-001.html similarity index 100% rename from tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop.html rename to tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-001.html diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-002.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-002.html new file mode 100644 index 00000000000..cadafe2a82d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-002.html @@ -0,0 +1,238 @@ + + + + + + + + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change.html index 10e90d3cff4..4615487f56b 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change.html @@ -1,6 +1,6 @@ - + + +
    +
    +
    + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + TARGETTARGETTARGETTARGET + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.html new file mode 100644 index 00000000000..c86f39b9d6c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.html @@ -0,0 +1,95 @@ + + + + Updating the scroll-snap-type of the root element should make it resnap accordingly. + This is another vairant of changing-scroll-snap-type.html for the root element. + + + + + + +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/not-resnap-outside-proximity-threshold.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/not-resnap-outside-proximity-threshold.html new file mode 100644 index 00000000000..b2c5720efb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/not-resnap-outside-proximity-threshold.html @@ -0,0 +1,66 @@ + + + Not re-snap once after a scroll operation has finished without snapping + because the scroll destination was outside of the snap proximity threshold. + + + + + + + + +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html index 6ceab295e4c..7ad659d8a6d 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html @@ -74,7 +74,7 @@ const x_target = document.getElementById("x-axis-target"); const y_target = document.getElementById("y-axis-target"); const scroller = document.getElementById("scroller"); -test(() => { +test(t => { // The scroller should be snapped to the two closest points on first layout. assert_equals(scroller.scrollTop, 200); assert_equals(scroller.scrollLeft, 200); diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-intended-direction.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-intended-direction.html new file mode 100644 index 00000000000..4a1b56d2512 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-intended-direction.html @@ -0,0 +1,48 @@ + +`intended direction` scroll snaps only at points ahead of the scroll direction + + + + + + +
    +
    +
    1
    +
    2
    +
    3
    +
    4
    +
    5
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-on-focus.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-on-focus.html new file mode 100644 index 00000000000..9b6f6f413e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-on-focus.html @@ -0,0 +1,55 @@ + +Scroll snap on Element.focus() + + + + + +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-both.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-both.html index da10f982f1f..cde329bcc38 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-both.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-both.html @@ -54,7 +54,7 @@ div {
    + + +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/both-part-and-exportparts.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/both-part-and-exportparts.html new file mode 100644 index 00000000000..6cd945c6c07 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/both-part-and-exportparts.html @@ -0,0 +1,32 @@ + +CSS Shadow Parts - ::part() rules when element has both @part and @exportparts + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/reference/shape-outside-padding-box-003-ref.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/reference/shape-outside-padding-box-003-ref.html new file mode 100644 index 00000000000..a5cb5e82a5b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/reference/shape-outside-padding-box-003-ref.html @@ -0,0 +1,11 @@ + + +

    The test passes if there is a green square and no red.

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-border-box-003.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-border-box-003.html new file mode 100644 index 00000000000..fd97e01202e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-border-box-003.html @@ -0,0 +1,54 @@ + +CSS Test: right float, shape-outside:border-box and shape-margin + + + + + + + + + +

    The test passes if there is a green square and no red.

    +
    +
    +
    + XXXXXXXXXX XXXXX XXXX XXX XXX XXX XXX XXXX XXXXX XXXXXXXXXX +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-content-box-003.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-content-box-003.html new file mode 100644 index 00000000000..5ad0463bef7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-content-box-003.html @@ -0,0 +1,56 @@ + +CSS Test: right float, shape-outside:content-box and shape-margin + + + + + + + + + +

    The test passes if there is a green square and no red.

    +
    +
    +
    + XXXXXXXXXX XXXXX XXXX XXX XXX XXX XXX XXXX XXXXX XXXXXXXXXX +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-padding-box-003.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-padding-box-003.html new file mode 100644 index 00000000000..d816be13e42 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-padding-box-003.html @@ -0,0 +1,58 @@ + +CSS Test: right float, shape-outside:padding-box and shape-margin + + + + + + + + + +

    The test passes if there is a green square and no red.

    +
    +
    +
    + XXXXXXXXXX XXXXX XXXX XXX XXX XXX XXX XXXX XXXXX XXXXXXXXXX +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-001.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-001.html index 9b8b6f8d329..91550fefc72 100644 --- a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-001.html +++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-001.html @@ -9,6 +9,7 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-integer-overflow-crash.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-integer-overflow-crash.html new file mode 100644 index 00000000000..bd892c2cf44 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-integer-overflow-crash.html @@ -0,0 +1,13 @@ + + + + + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/floats-aspect-ratio-001-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/floats-aspect-ratio-001-ref.html new file mode 100644 index 00000000000..734522a1641 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/floats-aspect-ratio-001-ref.html @@ -0,0 +1,9 @@ + +CSS aspect-ratio reference: block formatting context with floats + +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/floats-aspect-ratio-001.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/floats-aspect-ratio-001.html new file mode 100644 index 00000000000..53627d2134a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/floats-aspect-ratio-001.html @@ -0,0 +1,13 @@ + +CSS aspect-ratio: block formatting context with floats + + + + +
    +
    +
    +
    + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/fractional-aspect-ratio.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/fractional-aspect-ratio.html new file mode 100644 index 00000000000..7186f35f8a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/fractional-aspect-ratio.html @@ -0,0 +1,9 @@ + + + + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-039.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-039.html new file mode 100644 index 00000000000..f31c45805e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-039.html @@ -0,0 +1,26 @@ + +CSS aspect-ratio: Test grid container's block size honoring automatic content-based minimum. + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-040.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-040.html new file mode 100644 index 00000000000..d72181f22ea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-040.html @@ -0,0 +1,30 @@ + + + + + + +

    Test passes if there is a filled green square and no red.

    + +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/large-aspect-ratio-crash.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/large-aspect-ratio-crash.html new file mode 100644 index 00000000000..a1e69cdd7c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/large-aspect-ratio-crash.html @@ -0,0 +1,4 @@ + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-003.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-003.html index 83187fcd459..306976ac992 100644 --- a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-003.html +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-003.html @@ -5,7 +5,7 @@ - +

    Test passes if there is a filled green square and no red.

    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-035-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-035-ref.html new file mode 100644 index 00000000000..cd8afe16934 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-035-ref.html @@ -0,0 +1,6 @@ + +CSS aspect-ratio reference: audio element + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-035.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-035.html new file mode 100644 index 00000000000..88ae2c22dc6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-035.html @@ -0,0 +1,10 @@ + +CSS aspect-ratio: audio element + + + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-036.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-036.html new file mode 100644 index 00000000000..0cd5eb1a590 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-036.html @@ -0,0 +1,40 @@ + +CSS aspect-ratio: img + + + + + +
    + +display:block img should be 200px high + +display:inline-block img should be 200px high + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-037-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-037-ref.html new file mode 100644 index 00000000000..b7fc9f8b7df --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-037-ref.html @@ -0,0 +1,10 @@ + +CSS aspect-ratio reference: svg in img + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-037.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-037.html new file mode 100644 index 00000000000..e78b5cc59ae --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-037.html @@ -0,0 +1,14 @@ + +CSS aspect-ratio: svg in img with box-sizing:border-box + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-001-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-001-ref.html new file mode 100644 index 00000000000..73947be7a70 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-001-ref.html @@ -0,0 +1,21 @@ + + + +border-box and max-content should include borders + +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-001.html b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-001.html new file mode 100644 index 00000000000..85c35e0656a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-001.html @@ -0,0 +1,29 @@ + + + +border-box and max-content should include borders + + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-002-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-002-ref.html new file mode 100644 index 00000000000..6627a55abcb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-002-ref.html @@ -0,0 +1,16 @@ + + + +border-box and max-content with aspect ratio should include borders + +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-002.html b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-002.html new file mode 100644 index 00000000000..e6e47cd68ea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-002.html @@ -0,0 +1,23 @@ + + + +border-box and max-content with aspect ratio should include borders + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-003-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-003-ref.html new file mode 100644 index 00000000000..c4ecda02504 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-003-ref.html @@ -0,0 +1,20 @@ + + + +border-box and fit-content should include borders + +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-003.html b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-003.html new file mode 100644 index 00000000000..3a6f179b095 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/border-box-and-max-content-003.html @@ -0,0 +1,24 @@ + + + +border-box and fit-content should include borders + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-block.html b/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-block.html new file mode 100644 index 00000000000..362d3646e05 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-block.html @@ -0,0 +1,9 @@ + + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-fieldset-content.html b/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-fieldset-content.html new file mode 100644 index 00000000000..6a74dd08638 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-fieldset-content.html @@ -0,0 +1,9 @@ + + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-fieldset-legend.html b/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-fieldset-legend.html new file mode 100644 index 00000000000..001bcb09190 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-fieldset-legend.html @@ -0,0 +1,9 @@ + + + + + +

    Test passes if there is a filled green square.

    +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-flex.html b/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-flex.html new file mode 100644 index 00000000000..d1dbbcfa351 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-flex.html @@ -0,0 +1,9 @@ + + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-table-caption.html b/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-table-caption.html new file mode 100644 index 00000000000..dd9ab6822a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/calc-margins-table-caption.html @@ -0,0 +1,9 @@ + + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-005.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-005.html index 4a920ac8060..2b7e03192dc 100644 --- a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-005.html +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-005.html @@ -1,6 +1,6 @@ -Tests that contain-intrinsic-size: auto only works with content-visibility: auto, not just hidden visibility +Tests that contain-intrinsic-size: auto also works with content-visibility: hidden @@ -17,8 +17,7 @@ function finalize() { el.style.contain = "size"; el.style.contentVisibility = "hidden"; log.innerText = el.offsetHeight; - // No content-visibility: auto, so this should remain 1. - assert_equals(el.offsetHeight, 1); + assert_equals(el.offsetHeight, 50); } var t = async_test("contain-intrinsic-size: auto"); diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-006.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-006.html new file mode 100644 index 00000000000..7276e2ed5d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-006.html @@ -0,0 +1,406 @@ + + +Last remembered size + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-007.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-007.html new file mode 100644 index 00000000000..02501264c8c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-007.html @@ -0,0 +1,115 @@ + + +Last remembered size + + + + + + + + +
    + +
    +
    +
    +
    +
    +
    +
    + + + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-008.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-008.html new file mode 100644 index 00000000000..652710192f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-008.html @@ -0,0 +1,89 @@ + + +Last remembered size + + + + + + + + + + + +
    + +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-009.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-009.html new file mode 100644 index 00000000000..ca5e4985066 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-009.html @@ -0,0 +1,114 @@ + + +Last remembered size + + + + + + + + + + + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-010.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-010.html new file mode 100644 index 00000000000..021612a3aeb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-010.html @@ -0,0 +1,90 @@ + + +Last remembered size + + + + + + + + + + +
    + +
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-009-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-009-ref.html deleted file mode 100644 index 7b3dc7027e6..00000000000 --- a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-009-ref.html +++ /dev/null @@ -1,23 +0,0 @@ - - -CSS contain-intrinsic-size: select multiple - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-009.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-009.html index bc9ab463064..0aa62eaaeff 100644 --- a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-009.html +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-009.html @@ -1,24 +1,68 @@ - + CSS contain-intrinsic-size: select multiple - - + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-028.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-028.html new file mode 100644 index 00000000000..15e8e0e8910 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-028.html @@ -0,0 +1,159 @@ + + +CSS contain-intrinsic-size: single axis size containment + + + + + + + + + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-029.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-029.html new file mode 100644 index 00000000000..6169a1a2879 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-029.html @@ -0,0 +1,60 @@ + + +CSS contain-intrinsic-size: button + + + + + + + + + +
    + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-030.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-030.html new file mode 100644 index 00000000000..8acfabbf618 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-030.html @@ -0,0 +1,135 @@ + + +CSS contain-intrinsic-size: scroll containers + + + + + + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-031.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-031.html new file mode 100644 index 00000000000..981ddc693bc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-031.html @@ -0,0 +1,72 @@ + + +CSS contain-intrinsic-size: multi-column containers + + + + + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-032.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-032.html new file mode 100644 index 00000000000..6dfb73aa4fe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-032.html @@ -0,0 +1,68 @@ + + +CSS contain-intrinsic-size: single-select list box + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-logical-003.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-logical-003.html new file mode 100644 index 00000000000..48fedb11483 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-logical-003.html @@ -0,0 +1,163 @@ + + +CSS contain-intrinsic-size: Logical versions + + + + + + + + + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-invalid.html b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-invalid.html index d50e582b2bb..b63b6f3826b 100644 --- a/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-invalid.html @@ -55,6 +55,7 @@ test_invalid_value("contain-intrinsic-block-size", "1px none"); test_invalid_value("contain-intrinsic-block-size", "auto 1px auto"); test_invalid_value("contain-intrinsic-block-size", "20%"); test_invalid_value("contain-intrinsic-block-size", "1px auto"); +test_invalid_value("contain-intrinsic-block-size", "auto none"); diff --git a/tests/wpt/web-platform-tests/css/css-sizing/fit-content-contribution-001.html b/tests/wpt/web-platform-tests/css/css-sizing/fit-content-contribution-001.html new file mode 100644 index 00000000000..efe3d49f4c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/fit-content-contribution-001.html @@ -0,0 +1,36 @@ + + + + + + +

    Test passes if there is a filled green square and no red. +

    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size-fallback-replaced.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size-fallback-replaced.html index aaac6482410..a3325b0aea0 100644 --- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size-fallback-replaced.html +++ b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size-fallback-replaced.html @@ -4,18 +4,19 @@ http://creativecommons.org/publicdomain/zero/1.0/ --> - - CSS Sizing Test: Testing intrinsic size fallback 300x150 for some replaced elements. - - - - + +CSS Sizing Test: Testing intrinsic size fallback 300x150 for some replaced elements. + + + + - - - + + + - + - - - - - - + + + + + + + + + + + + + - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-sizing/replaced-aspect-ratio-intrinsic-size-001.html b/tests/wpt/web-platform-tests/css/css-sizing/replaced-aspect-ratio-intrinsic-size-001.html new file mode 100644 index 00000000000..8c1f213dec9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/replaced-aspect-ratio-intrinsic-size-001.html @@ -0,0 +1,8 @@ + + + + +

    Test passes if there is a filled green square.

    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/replaced-aspect-ratio-intrinsic-size-002.html b/tests/wpt/web-platform-tests/css/css-sizing/replaced-aspect-ratio-intrinsic-size-002.html new file mode 100644 index 00000000000..daf6f36022d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/replaced-aspect-ratio-intrinsic-size-002.html @@ -0,0 +1,7 @@ + + + + +

    Test passes if there is a filled green square.

    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-001.html b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-001.html new file mode 100644 index 00000000000..c0ba59819b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-001.html @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + No intrinsic attributes: +
    + +
    + + viewBox and height: +
    + +
    + + viewBox and width: +
    + +
    + + viewBox, width, height: +
    + +
    + + Just viewBox: +
    + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-002.html b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-002.html new file mode 100644 index 00000000000..19ec3df87c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-002.html @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + No intrinsic attributes: +
    + +
    + + viewBox and height: +
    + +
    + + viewBox and width: +
    + +
    + + viewBox, width, height: +
    + +
    + + Just viewBox: +
    + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-003.html b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-003.html new file mode 100644 index 00000000000..cf9515308d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-003.html @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + No intrinsic attributes: +
    + +
    + + viewBox and height: +
    + +
    + + viewBox and width: +
    + +
    + + viewBox, width, height: +
    + +
    + + Just viewBox: +
    + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-004.html b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-004.html new file mode 100644 index 00000000000..7db94955155 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-004.html @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + No intrinsic attributes: +
    + +
    + + viewBox and height: +
    + +
    + + viewBox and width: +
    + +
    + + viewBox, width, height: +
    + +
    + + Just viewBox: +
    + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-005-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-005-ref.html new file mode 100644 index 00000000000..1d64836f885 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-005-ref.html @@ -0,0 +1,9 @@ + + +CSS Reference: CSS-specified vs. attribute-specified percentages in SVG intrinsic sizing + +
    + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-005.html b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-005.html new file mode 100644 index 00000000000..68be3f2e115 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/svg-intrinsic-size-005.html @@ -0,0 +1,16 @@ + + + +CSS Test: CSS-specified vs. attribute-specified percentages in SVG intrinsic sizing + + + + + + + +
    + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-sizing/textarea-large-padding-crash.html b/tests/wpt/web-platform-tests/css/css-sizing/textarea-large-padding-crash.html new file mode 100644 index 00000000000..b156c55b970 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/textarea-large-padding-crash.html @@ -0,0 +1,4 @@ + + + + diff --git a/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-digits-001-manual.html b/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-digits-001-manual.html new file mode 100644 index 00000000000..afbc0c94a14 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-digits-001-manual.html @@ -0,0 +1,36 @@ + + + + CSS Test: speak-as digits + + + + + + + +

    Test Case

    +

    + The following telephone number should be read one digit at a time: +

    +

    01 55 40 3005

    +

    Instructions for Manual Test

    +
      +
    1. Open the website in your browser.
    2. +
    3. + Activate your screen reader (NVDA, VoiceOver, TalkBack etc.) and, in browse mode, navigate to the paragraph following the first heading. +
    4. +
    5. + The screen reader should read the telephone number one digit at a time: zero one five five four zero three zero zero five +
    6. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-digits-002-manual.html b/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-digits-002-manual.html new file mode 100644 index 00000000000..84ac15687c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-digits-002-manual.html @@ -0,0 +1,36 @@ + + + + CSS Test: speak-as digits + + + + + + + +

    Test Case

    +

    + The following bank account number (IBAN) should be read one digit at a time: +

    +

    AT20 4200 2950 9100 8000

    +

    Instructions for Manual Test

    +
      +
    1. Open the website in your browser.
    2. +
    3. + Activate your screen reader (NVDA, VoiceOver, TalkBack etc.) and, in browse mode, navigate to the paragraph following the first heading. +
    4. +
    5. + The screen reader should read the bank account number one digit at a time: two zero four two zero zero two nine five zero nine one zero zero eight zero zero zero +
    6. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-literal-punctuation-001-manual.html b/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-literal-punctuation-001-manual.html new file mode 100644 index 00000000000..8d67b9ba305 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-literal-punctuation-001-manual.html @@ -0,0 +1,40 @@ + + + + CSS Test: speak-as literal-punctuation + + + + + + + +

    Test Case

    +

    + The punctuation in the following text should be announced by screen readers: +

    +

    class MyClass { myProperty = 1; }

    +

    Instructions for Manual Test

    +
      +
    1. Open the website in your browser.
    2. +
    3. + Activate your screen reader (NVDA, VoiceOver, TalkBack etc.). +
    4. +
    5. + Set verbosity preferences of the screen reader to default setting, which ignores most punctuation (e.g. comma, period, parentheses). +
    6. +
    7. In the screen reader's browse mode, navigate to the paragraph following the first heading.
    8. +
    9. + The screen reader should still announce all punctuation (parentheses, semicolon etc.) in the paragraph. +
    10. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-spell-out-001-manual.html b/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-spell-out-001-manual.html new file mode 100644 index 00000000000..5643350e419 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-speech/speak-as/speak-as-spell-out-001-manual.html @@ -0,0 +1,36 @@ + + + + CSS Test: speak-as spell-out + + + + + + + +

    Test Case

    +

    + The following abbreviation should be read one letter at a time: +

    +

    way

    +

    Instructions for Manual Test

    +
      +
    1. Open the website in your browser.
    2. +
    3. + Activate your screen reader (NVDA, VoiceOver, TalkBack etc.) and, in browse mode, navigate to the paragraph following the first heading. +
    4. +
    5. + The screen reader should spell the abbreviation "way" as W, A, Y. +
    6. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-syntax/at-rule-in-declaration-list.html b/tests/wpt/web-platform-tests/css/css-syntax/at-rule-in-declaration-list.html new file mode 100644 index 00000000000..f40975d27ea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-syntax/at-rule-in-declaration-list.html @@ -0,0 +1,76 @@ + +CSS Syntax Test: handle at-rules in declaration lists + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-016.html b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-016.html new file mode 100644 index 00000000000..f8eb1516ae4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-016.html @@ -0,0 +1,44 @@ + + +CSS Test: Abspos table centered in both axes with auto margins + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/baseline-vertical-ref.html b/tests/wpt/web-platform-tests/css/css-tables/baseline-vertical-ref.html new file mode 100644 index 00000000000..da592cba2ea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/baseline-vertical-ref.html @@ -0,0 +1,25 @@ + +Reference: Table Baseline Alignment in Vertical Writing Mode + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/baseline-vertical.html b/tests/wpt/web-platform-tests/css/css-tables/baseline-vertical.html new file mode 100644 index 00000000000..45672ab6f3d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/baseline-vertical.html @@ -0,0 +1,30 @@ + +Table Baseline Alignment in Vertical Writing Mode + + + + + + + + +
    + +n diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/770710-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/770710-1.html new file mode 100644 index 00000000000..2171966769b --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/770710-1.html @@ -0,0 +1,25 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/848725-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/848725-1.html new file mode 100644 index 00000000000..7ce9c434ccb --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/848725-1.html @@ -0,0 +1,17 @@ + + + + Bug 848725 + + + +
    + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/848725-2.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/848725-2.html new file mode 100644 index 00000000000..b6362f9bf2b --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/848725-2.html @@ -0,0 +1,17 @@ + + + + Bug 848725 + + + +
    + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/947557-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/947557-1.html new file mode 100644 index 00000000000..3ddfb7b9841 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/947557-1.html @@ -0,0 +1,21 @@ + + + + + A + + + A + + A + A + + + A + + A + A + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/973322-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/973322-1.xhtml new file mode 100644 index 00000000000..dfac127fb4a --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/973322-1.xhtml @@ -0,0 +1,8 @@ + + + + + +

    + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mtd-as-multicol.html b/tests/wpt/web-platform-tests/mathml/crashtests/mtd-as-multicol.html new file mode 100644 index 00000000000..f00fa488154 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mtd-as-multicol.html @@ -0,0 +1,9 @@ + + + +
    + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-baseline.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-baseline.html index 2b208aa8b02..cc007cf81ff 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-baseline.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-baseline.html @@ -20,7 +20,7 @@ window.addEventListener("load", runTests); function runTests() { - ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded", "Unknown"].forEach((tag) => { + ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded", "Unknown", "Mtd"].forEach((tag) => { var x = document.getElementById("above" + tag).getBoundingClientRect(); var y = document.getElementById("below" + tag).getBoundingClientRect(); test(function() { @@ -48,6 +48,8 @@ > +

    diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-stretchy.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-stretchy.html index 35c6d699ccb..a1e409a248e 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-stretchy.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-stretchy.html @@ -32,7 +32,7 @@ window.addEventListener("load", () => { loadAllFonts().then(runTests); }); function runTests() { - ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded", "Unknown"].forEach((tag) => { + ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded", "Unknown", "Mtd"].forEach((tag) => { var mo = document.getElementById("mo" + tag); test(function() { assert_true(MathMLFeatureDetection.has_mspace()); @@ -56,6 +56,7 @@ +

    diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mrow-like-elements-002-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mrow-like-elements-002-ref.html index 0c26780c10f..4fd4b225f35 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mrow-like-elements-002-ref.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mrow-like-elements-002-ref.html @@ -33,11 +33,9 @@

    - - - - - + + +

    diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/mrow-fallback.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/mrow-fallback.html new file mode 100644 index 00000000000..6fad205a9e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/mrow-fallback.html @@ -0,0 +1,74 @@ + + + + +Test mrow fallback for some MathML elements + + + + + + + + + + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/spacing.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/spacing.html index bad3370ca5b..c066f72cde2 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/spacing.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/spacing.html @@ -22,7 +22,7 @@ window.addEventListener("load", () => { loadAllFonts().then(runTests); }); function runTests() { - ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded", "Unknown"].forEach((tag) => { + ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded", "Unknown", "Mtd"].forEach((tag) => { test(function() { assert_true(MathMLFeatureDetection.has_operator_spacing()); var mrow = document.getElementById(tag); @@ -48,6 +48,7 @@ 1|21|21|2 + 1|2

    diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-2-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-2-ref.html new file mode 100644 index 00000000000..4ffe6cbc236 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-2-ref.html @@ -0,0 +1,363 @@ + + + + mo-lspace-rspace-2 (reference) + + + + +

    + + + * + + + + + * + * + + + + + * + + + + + * + * + + + + + * + + +

    + +

    +

    diff --git a/tests/wpt/web-platform-tests/css/css-tables/border-collapse-dynamic-oof.html b/tests/wpt/web-platform-tests/css/css-tables/border-collapse-dynamic-oof.html new file mode 100644 index 00000000000..6699fba3c16 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/border-collapse-dynamic-oof.html @@ -0,0 +1,15 @@ + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-tables/border-collapse-dynamic-section.html b/tests/wpt/web-platform-tests/css/css-tables/border-collapse-dynamic-section.html new file mode 100644 index 00000000000..5f48749fa48 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/border-collapse-dynamic-section.html @@ -0,0 +1,20 @@ + + + +

    Test passes if there is a filled green square and no red.

    + + + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-tables/collapsed-scroll-overflow.html b/tests/wpt/web-platform-tests/css/css-tables/collapsed-scroll-overflow.html index 42f8fd0a7d6..fa3b5e55e1b 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/collapsed-scroll-overflow.html +++ b/tests/wpt/web-platform-tests/css/css-tables/collapsed-scroll-overflow.html @@ -3,7 +3,7 @@ - + + + + + + + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/paint/col-paint-htb-rtl.html b/tests/wpt/web-platform-tests/css/css-tables/paint/col-paint-htb-rtl.html new file mode 100644 index 00000000000..15084218187 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/paint/col-paint-htb-rtl.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/paint/col-paint-vrl-rtl-ref.html b/tests/wpt/web-platform-tests/css/css-tables/paint/col-paint-vrl-rtl-ref.html new file mode 100644 index 00000000000..a651e03b1c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/paint/col-paint-vrl-rtl-ref.html @@ -0,0 +1,17 @@ + + + + + + + + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/paint/col-paint-vrl-rtl.html b/tests/wpt/web-platform-tests/css/css-tables/paint/col-paint-vrl-rtl.html new file mode 100644 index 00000000000..d76ea59dac6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/paint/col-paint-vrl-rtl.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/subpixel-collapsed-borders-003-ref.html b/tests/wpt/web-platform-tests/css/css-tables/reference/subpixel-collapsed-borders-003-ref.html similarity index 75% rename from tests/wpt/web-platform-tests/css/css-tables/subpixel-collapsed-borders-003-ref.html rename to tests/wpt/web-platform-tests/css/css-tables/reference/subpixel-collapsed-borders-003-ref.html index 78e0be38939..46049a0f1bf 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/subpixel-collapsed-borders-003-ref.html +++ b/tests/wpt/web-platform-tests/css/css-tables/reference/subpixel-collapsed-borders-003-ref.html @@ -12,7 +12,8 @@ td { } -

    There should be a square with a green border, not a red border. +

    + There should be a square with a green border, not a red border.

    diff --git a/tests/wpt/web-platform-tests/css/css-tables/subpixel-collapsed-borders-003.html b/tests/wpt/web-platform-tests/css/css-tables/subpixel-collapsed-borders-003.html index e22df9e51a6..601e1006c15 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/subpixel-collapsed-borders-003.html +++ b/tests/wpt/web-platform-tests/css/css-tables/subpixel-collapsed-borders-003.html @@ -3,23 +3,24 @@ - - + + -

    There should be a square with a green border, not a red border. +

    + There should be a square with a green border, not a red border.

    diff --git a/tests/wpt/web-platform-tests/css/css-tables/table-cell-writing-mode-computed.html b/tests/wpt/web-platform-tests/css/css-tables/table-cell-writing-mode-computed.html new file mode 100644 index 00000000000..28e9db2d762 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/table-cell-writing-mode-computed.html @@ -0,0 +1,24 @@ + +Computed value of orthogonal writing-mode on table cell + + + + + + +
    + + + +
    Test
    + + diff --git a/tests/wpt/web-platform-tests/css/css-tables/table-position-sticky-computed.html b/tests/wpt/web-platform-tests/css/css-tables/table-position-sticky-computed.html new file mode 100644 index 00000000000..b0116aefb09 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/table-position-sticky-computed.html @@ -0,0 +1,31 @@ + +Computed value of position:sticky for table elements + + + + + + + + + + + + + + + + +
    Test
    + + diff --git a/tests/wpt/web-platform-tests/css/css-tables/tentative/section-no-tbody-fixed-distribution.html b/tests/wpt/web-platform-tests/css/css-tables/tentative/section-no-tbody-fixed-distribution.html new file mode 100644 index 00000000000..dd403d248c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/tentative/section-no-tbody-fixed-distribution.html @@ -0,0 +1,9 @@ + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/tentative/section-no-tbody-percent-distribution.html b/tests/wpt/web-platform-tests/css/css-tables/tentative/section-no-tbody-percent-distribution.html new file mode 100644 index 00000000000..d1546b1e382 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/tentative/section-no-tbody-percent-distribution.html @@ -0,0 +1,9 @@ + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/tentative/table-width-redistribution-fixed-padding.html b/tests/wpt/web-platform-tests/css/css-tables/tentative/table-width-redistribution-fixed-padding.html index 57843d5eb6e..097ddacfc31 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/tentative/table-width-redistribution-fixed-padding.html +++ b/tests/wpt/web-platform-tests/css/css-tables/tentative/table-width-redistribution-fixed-padding.html @@ -224,7 +224,7 @@ Slight rounding differences between NG and FF. - +
    25%15%15% 10%
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/tfoot-crash-print.html b/tests/wpt/web-platform-tests/css/css-tables/tfoot-crash-print.html new file mode 100644 index 00000000000..00fa0070c50 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/tfoot-crash-print.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/th-text-align-ref.html b/tests/wpt/web-platform-tests/css/css-tables/th-text-align-ref.html new file mode 100644 index 00000000000..ef6e09ff1af --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/th-text-align-ref.html @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + +
    A
    A
    + + + + + + + +
    A
    A
    + + + + + + + +
    A
    A
    + + diff --git a/tests/wpt/web-platform-tests/css/css-tables/th-text-align.html b/tests/wpt/web-platform-tests/css/css-tables/th-text-align.html new file mode 100644 index 00000000000..4b1d312b404 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/th-text-align.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + +
    A
    A
    + + + + + + + +
    A
    A
    + + + + + + + +
    A
    A
    + + diff --git a/tests/wpt/web-platform-tests/css/css-tables/visibility-collapse-border-spacing.html b/tests/wpt/web-platform-tests/css/css-tables/visibility-collapse-border-spacing.html new file mode 100644 index 00000000000..738cea16d5d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/visibility-collapse-border-spacing.html @@ -0,0 +1,14 @@ + + + +

    Test passes if there is a filled green square and no red.

    + + + + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/width-distribution/computing-column-measure-1.html b/tests/wpt/web-platform-tests/css/css-tables/width-distribution/computing-column-measure-1.html index f032fcd1987..eeae1c7a46f 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/width-distribution/computing-column-measure-1.html +++ b/tests/wpt/web-platform-tests/css/css-tables/width-distribution/computing-column-measure-1.html @@ -75,7 +75,7 @@ [ "Checking intermediate min-content height for span 2 (2)", document.getElementById('two').offsetHeight, - 10 + 51 ], [ "Checking intermediate min-content height for span 2 (3)", diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/animations/text-underline-offset-interpolation.html b/tests/wpt/web-platform-tests/css/css-text-decor/animations/text-underline-offset-interpolation.html new file mode 100644 index 00000000000..5c0e37157c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/animations/text-underline-offset-interpolation.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/crashtests/text-decoration-on-empty-first-line-crash.html b/tests/wpt/web-platform-tests/css/css-text-decor/crashtests/text-decoration-on-empty-first-line-crash.html new file mode 100644 index 00000000000..058cf9f8371 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/crashtests/text-decoration-on-empty-first-line-crash.html @@ -0,0 +1,10 @@ + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-color-selection-001-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-color-selection-001-ref.html deleted file mode 100644 index d9811874eef..00000000000 --- a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-color-selection-001-ref.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - CSS Test: CSS3 text-decoration-color when |::selection| exists - - - - -

    Each line of this test should match its text decoration color description:

    - - -
    Transparent fill with black stroke text and pink underline
    - - -
    Brown text with pink underline
    -
    Purple text with skyblue overline
    - -
    -
    Orange text with magenta line-through
    - - -
    Red text with blue underline
    -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-decorating-box-001-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-decorating-box-001-ref.html new file mode 100644 index 00000000000..600f86690af --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-decorating-box-001-ref.html @@ -0,0 +1,7 @@ + +
    abc + + x + def + +
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-skip-spaces-001-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-skip-spaces-001-ref.html new file mode 100644 index 00000000000..bc3a101330c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-skip-spaces-001-ref.html @@ -0,0 +1,26 @@ + + + +Test reference + + + +

    + Test passes if there is an blue underline below orange letters A through F below, but no further.
    + (Note: a small orange line to the left of A and the right of “F†is OK.) + +

                    ABCDEF                
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-skip-spaces-002-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-skip-spaces-002-ref.html new file mode 100644 index 00000000000..3da02d95f47 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-skip-spaces-002-ref.html @@ -0,0 +1,25 @@ + + + +Test reference + + + +

    Test passes if there is an blue underline below orange letters A through F below, but no further. + +

    ABCDEF
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-subelements-004-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-subelements-004-ref.html new file mode 100644 index 00000000000..2f02494c40f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-subelements-004-ref.html @@ -0,0 +1,19 @@ + + +
    +

    + + From EXAMPLE 1 of the spec, + the underlining for the blockquote element is propagated to an anonymous inline box that surrounds the span element. + +

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-subelements-005-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-subelements-005-ref.html new file mode 100644 index 00000000000..77f385a3c7b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-subelements-005-ref.html @@ -0,0 +1,17 @@ + + +
    + From EXAMPLE 1 of the spec. +
    + + This text is also underlined, + as it is in an in-flow block to which the underline is propagated. + diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-thickness-fixed-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-thickness-fixed-ref.html index 27cc6dada1c..88f7b46843a 100644 --- a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-thickness-fixed-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-thickness-fixed-ref.html @@ -38,9 +38,9 @@ text-decoration-thickness: from-font;

    Test passes if underlines are thin, thick, thin, thick in this order and match the reference rendering.

    -
    aagaa
    -
    aagaa
    -
    aagaa
    -
    aagaa
    +
    aaGaa
    +
    aaGaa
    +
    aaGaa
    +
    aaGaa
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-thickness-length-rounding-min-val-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-thickness-length-rounding-min-val-ref.html new file mode 100644 index 00000000000..88bfbf920d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-thickness-length-rounding-min-val-ref.html @@ -0,0 +1,158 @@ + + + + + CSS Text Decoration Test: text-decoration-thickness length min rounding + + + + + + + + +

    + Test passes if text-decoration-thickness length is rounded up to 1px +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Line Type + + Line Style +
    + Solid + + Double + + Dotted + + Dashed + + Wavy +
    + Underline + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + Line-through + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + Overline + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-thickness-length-rounding-ref.tentative.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-thickness-length-rounding-ref.tentative.html new file mode 100644 index 00000000000..0a6dbd448f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-thickness-length-rounding-ref.tentative.html @@ -0,0 +1,158 @@ + + + + + CSS Text Decoration Test: text-decoration-thickness length rounding + + + + + + + + +

    + Test passes if text-decoration-thickness length is rounded to 2px +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Line Type + + Line Style +
    + Solid + + Double + + Dotted + + Dashed + + Wavy +
    + Underline + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + Line-through + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + Overline + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color-recalc-002-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color-recalc-002-ref.html new file mode 100644 index 00000000000..440d2f051ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color-recalc-002-ref.html @@ -0,0 +1,6 @@ + + + +

    Text passes if strikethrough color is green.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color-recalc-002.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color-recalc-002.html new file mode 100644 index 00000000000..ce5c36dd5b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color-recalc-002.html @@ -0,0 +1,15 @@ + + + + CSS Test: CSS3 text-decoration-color currentColor is updated + + + + +

    Text passes if strikethrough color is green.

    + + + diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color-selection-001.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color-selection-001.html deleted file mode 100644 index beababcf4cd..00000000000 --- a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color-selection-001.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - CSS Test: CSS3 text-decoration-color when |::selection| exists - - - - - - - -

    Each line of this test should match its text decoration color description:

    - -
    - -
    Transparent fill with black stroke text and pink underline
    - - -
    Brown text with pink underline
    -
    Purple text with skyblue overline
    -
    Orange text with magenta line-through
    - - -
    Red text with blue underline
    -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-decorating-box-001.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-decorating-box-001.html new file mode 100644 index 00000000000..71b0c89452b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-decorating-box-001.html @@ -0,0 +1,10 @@ + +Test decorating box when the first child has `vertical-align` + + +
    abc + + x + def + +
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-001.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-001.html new file mode 100644 index 00000000000..151887c8d50 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-001.html @@ -0,0 +1,30 @@ + + + +Decoration skipping spaces: spacers + + + + + + + +

    + Test passes if there is an blue underline below orange letters A through F below, but no further.
    + (Note: a small orange line to the left of A and the right of “F†is OK.) + +

                    ABCDEF                
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-002.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-002.html new file mode 100644 index 00000000000..ba12899798b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-002.html @@ -0,0 +1,29 @@ + + + +Decoration skipping spaces: preserved spaces with pre + + + + + + + +

    Test passes if there is an blue underline below orange letters A through F below, but no further. + +

    ABCDEF
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-003.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-003.html new file mode 100644 index 00000000000..bde91c76051 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-003.html @@ -0,0 +1,29 @@ + + + +Decoration skipping spaces: preserved spaces with pre-wrap + + + + + + + +

    Test passes if there is an blue underline below orange letters A through F below, but no further. + +

    ABCDEF
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-004.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-004.html new file mode 100644 index 00000000000..39f6d329a5a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-skip-spaces-004.html @@ -0,0 +1,29 @@ + + + +Decoration skipping spaces: preserved spaces with breaks-spaces + + + + + + + +

    Test passes if there is an blue underline below orange letters A through F below, but no further. + +

    ABCDEF
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-subelements-002.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-subelements-002.html index c3af8e62df5..aa69b074446 100644 --- a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-subelements-002.html +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-subelements-002.html @@ -8,6 +8,7 @@ + +
    +

    + + From EXAMPLE 1 of the spec, + the underlining for the blockquote element is propagated to an anonymous inline box that surrounds the span element. + +

    +
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-subelements-005.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-subelements-005.html new file mode 100644 index 00000000000..1ed03d2aadf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-subelements-005.html @@ -0,0 +1,21 @@ + +Test case for text-decoration with subelements + + + + + +
    + From EXAMPLE 1 of the spec. + + This text is also underlined, + as it is in an in-flow block to which the underline is propagated. + +
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-fixed.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-fixed.html index d5c388a5570..07dab0b9b65 100644 --- a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-fixed.html +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-fixed.html @@ -28,7 +28,7 @@ text-decoration-thickness: 0.2px; .thick_underline { font-family: underline-variable; text-decoration: underline; -text-decoration-thickness: 6.3px; +text-decoration-thickness: 6.4px; } .thin_underline_percent { @@ -40,15 +40,15 @@ text-decoration-thickness: 0.3152%; .thick_underline_percent { font-family: underline-variable; text-decoration: underline; -text-decoration-thickness: 9.84375%; +text-decoration-thickness: 10%; }

    Test passes if underlines are thin, thick, thin, thick in this order and match the reference rendering.

    -
    aagaa
    -
    aagaa
    -
    aagaa
    -
    aagaa
    +
    aaGaa
    +
    aaGaa
    +
    aaGaa
    +
    aaGaa
    diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-length-rounding-down.tentative.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-length-rounding-down.tentative.html new file mode 100644 index 00000000000..54f303b3983 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-length-rounding-down.tentative.html @@ -0,0 +1,162 @@ + + + + + CSS Text Decoration Test: text-decoration-thickness length rounding down + + + + + + + + + + + + +

    + Test passes if text-decoration-thickness length is rounded to 2px +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Line Type + + Line Style +
    + Solid + + Double + + Dotted + + Dashed + + Wavy +
    + Underline + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + Line-through + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + Overline + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-length-rounding-min-val.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-length-rounding-min-val.html new file mode 100644 index 00000000000..94e5164e89f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-length-rounding-min-val.html @@ -0,0 +1,162 @@ + + + + + CSS Text Decoration Test: text-decoration-thickness length min rounding + + + + + + + + + + + + +

    + Test passes if text-decoration-thickness length is rounded up to 1px +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Line Type + + Line Style +
    + Solid + + Double + + Dotted + + Dashed + + Wavy +
    + Underline + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + Line-through + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + Overline + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-length-rounding-up.tentative.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-length-rounding-up.tentative.html new file mode 100644 index 00000000000..2afc8232532 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-thickness-length-rounding-up.tentative.html @@ -0,0 +1,162 @@ + + + + + CSS Text Decoration Test: text-decoration-thickness length rounding up + + + + + + + + + + + + +

    + Test passes if text-decoration-thickness length is rounded to 2px +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Line Type + + Line Style +
    + Solid + + Double + + Dotted + + Dashed + + Wavy +
    + Underline + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + Line-through + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + Overline + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. + + Thickness test. +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-punctuation-block-bound-001.html b/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-punctuation-block-bound-001.html index a46076e3716..ff2b61dd81c 100644 --- a/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-punctuation-block-bound-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-punctuation-block-bound-001.html @@ -15,7 +15,6 @@ - + +
    ã¾ã ã‚ˆãã¦ã„ã¾ã™ã€‚ã—ã‹ã—特
    diff --git a/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-punctuation-inline-bound-001.html b/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-punctuation-inline-bound-001.html index c780bc4617e..c29d4758696 100644 --- a/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-punctuation-inline-bound-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-punctuation-inline-bound-001.html @@ -15,7 +15,6 @@ - + +
    ã¾ã ã‚ˆãã¦ã„ã¾ã™ã€‚ã—ã‹ã—特
    diff --git a/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-scrollable-001.html b/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-scrollable-001.html index 58810a211d4..7827a684b4a 100644 --- a/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-scrollable-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/hanging-scrollable-001.html @@ -3,7 +3,6 @@ CSS Text Test: hanging punctuation is scrollable overflow - + +
    ã¾ã ã‚ˆã
    ã¦ã„ã¾ã™ã€‚
    ã¾ã ã‚ˆã
    ã¦ã„ã¾ã™ã€‚
    ã—ã‹ã—特
    diff --git a/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/reference/hanging-punctuation-inline-bound-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/reference/hanging-punctuation-inline-bound-001-ref.html index 3abd239b3b5..c3d66aa366d 100644 --- a/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/reference/hanging-punctuation-inline-bound-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/hanging-punctuation/reference/hanging-punctuation-inline-bound-001-ref.html @@ -32,6 +32,8 @@ } + +
    ã¾ã ã‚ˆã
    ã¦ã„ã¾ã™ã€‚
    diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphenate-character-005.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphenate-character-005.html new file mode 100644 index 00000000000..5600d8a4cfe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphenate-character-005.html @@ -0,0 +1,23 @@ + + +CSS Text test: hyphenate-character + + + + + + +

    Test passes if the word below is hyphenated +using a right-to-left space+kashida sequence " ـ", +and shaping is not interrupted. + +

    +قىل­مىغانلىقى +
    diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphenate-limit-chars-001.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphenate-limit-chars-001.html new file mode 100644 index 00000000000..d9748121038 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphenate-limit-chars-001.html @@ -0,0 +1,29 @@ + +CSS Text: 'hyphens: auto' with a valid 'lang' attribute specification + + + + + +
    +
    example
    +
    example
    +
    example
    +
    example
    +
    example
    +
    example
    +
    example
    +
    example
    +
    example
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-auto-001.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-auto-001.html index 39814d3e18c..e7ba16f7a4f 100644 --- a/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-auto-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-auto-001.html @@ -3,7 +3,6 @@ CSS Text Test: no automatic hyphenation without language tagging - + +

    Test passes if the two boxes look the same:

    + +
    + hyphen­ation +
    + +
    + hyphen‐
    ation +
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-vertical-002.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-vertical-002.html new file mode 100644 index 00000000000..e449526344d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-vertical-002.html @@ -0,0 +1,31 @@ + + +CSS Text test: soft hyphens in vertical writing mode + + + + + + + +

    Test passes if the two boxes look the same:

    + +
    + hyphen­ation +
    + +
    + hyphen‐
    ation +
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-vertical-003.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-vertical-003.html new file mode 100644 index 00000000000..2b1c6271c2e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-vertical-003.html @@ -0,0 +1,32 @@ + + +CSS Text test: soft hyphens in vertical writing mode + + + + + + + + +

    Test passes if the two boxes look the same:

    + +
    + hyphen­ation +
    + +
    + hyphen+=
    ation +
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-vertical-004.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-vertical-004.html new file mode 100644 index 00000000000..cee7718b9d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-vertical-004.html @@ -0,0 +1,33 @@ + + +CSS Text test: soft hyphens in vertical writing mode + + + + + + + + +

    Test passes if the two boxes look the same:

    + +
    + hyphen­ation +
    + +
    + hyphen+=
    ation +
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphenate-character-005-ref.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphenate-character-005-ref.html new file mode 100644 index 00000000000..50a0ebd5854 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphenate-character-005-ref.html @@ -0,0 +1,19 @@ + + +CSS Text reference: hyphenate-character + + + +

    Test passes if the word below is hyphenated +using a right-to-left space+kashida sequence " ـ", +and shaping is not interrupted. + +

    +قىل‍ ـ
    ‍مىغانلىقى +
    diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphenate-limit-chars-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphenate-limit-chars-001-ref.html new file mode 100644 index 00000000000..c491fbca27b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphenate-limit-chars-001-ref.html @@ -0,0 +1,26 @@ + +CSS Text: 'hyphens: auto' with a valid 'lang' attribute specification + + + + +
    +
    ex-
    am-
    ple
    +
    example
    +
    ex-
    am-
    ple
    +
    exam-
    ple
    +
    exam-
    ple
    +
    example
    +
    ex-
    am-
    ple
    +
    ex-
    ample
    +
    example
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-001-ref.html new file mode 100644 index 00000000000..5be7a840d89 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-001-ref.html @@ -0,0 +1,27 @@ + + +CSS Text reference: soft hyphens in vertical writing mode + + + + +

    Test passes if the two boxes look the same:

    + +
    + hyphen‐
    ation +
    + +
    + hyphen‐
    ation +
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-002-ref.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-002-ref.html new file mode 100644 index 00000000000..cb240212bca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-002-ref.html @@ -0,0 +1,28 @@ + + +CSS Text reference: soft hyphens in vertical writing mode + + + + +

    Test passes if the two boxes look the same:

    + +
    + hyphen‐
    ation +
    + +
    + hyphen‐
    ation +
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-003-ref.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-003-ref.html new file mode 100644 index 00000000000..6d3ea158455 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-003-ref.html @@ -0,0 +1,28 @@ + + +CSS Text reference: soft hyphens in vertical writing mode + + + + +

    Test passes if the two boxes look the same:

    + +
    + hyphen+=
    ation +
    + +
    + hyphen+=
    ation +
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-004-ref.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-004-ref.html new file mode 100644 index 00000000000..63c751165f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-vertical-004-ref.html @@ -0,0 +1,29 @@ + + +CSS Text reference: soft hyphens in vertical writing mode + + + + +

    Test passes if the two boxes look the same:

    + +
    + hyphen+=
    ation +
    + +
    + hyphen+=
    ation +
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/shy-styling-001.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/shy-styling-001.html index 98348d92a69..f579e237783 100644 --- a/tests/wpt/web-platform-tests/css/css-text/hyphens/shy-styling-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/shy-styling-001.html @@ -3,7 +3,6 @@ CSS Text Test: soft hyphen styling - diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/reference/css3-text-line-break-opclns-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/i18n/reference/css3-text-line-break-opclns-001-ref.html index d3827a52989..46dd56f7c30 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/reference/css3-text-line-break-opclns-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/reference/css3-text-line-break-opclns-001-ref.html @@ -4,7 +4,6 @@ CSS3 Text, linebreaks: 0028 LEFT PARENTHESIS - + + +

    Test passes if the word "office" is rendered without repeated letters.

    +
    +
    Sanitary measures in the
    +
    office ought be adequately
    +
    maintained.
    +
    +
    +
    Sanitary measures in the
    +
    office ought be adequately
    +
    maintained.
    +
    + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-text/shaping/shaping-arabic-diacritics-001.html b/tests/wpt/web-platform-tests/css/css-text/shaping/shaping-arabic-diacritics-001.html index c7eee3481ab..28f9a1e03de 100644 --- a/tests/wpt/web-platform-tests/css/css-text/shaping/shaping-arabic-diacritics-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/shaping/shaping-arabic-diacritics-001.html @@ -8,6 +8,7 @@ + + + +

    Test passes if the word "office" is rendered without repeated letters.

    +
    Sanitary measures in the office ought be adequately maintained.
    +
    Sanitary measures in the
    office ought be adequately maintained.
    + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-computed-value-001.html b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-computed-value-001.html index 3eb94c54d3b..885a8c7a867 100644 --- a/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-computed-value-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-computed-value-001.html @@ -14,7 +14,6 @@ - diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-001.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-001.html index 0218b47f26c..f13a4948190 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-001.html @@ -1,25 +1,25 @@ - + text-align: justify, direction: rtl - +
    Test passes if the shading in both orange boxes is the same.
    -
    -
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-002.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-002.html index 02e1f234cb5..63206ff29ea 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-002.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-002.html @@ -1,27 +1,27 @@ - + text-align: justify, direction: ltr - +
    Test passes if the shading in both orange boxes is identical.
    -
    -
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-003.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-003.html index b869ef98103..9437b4fa2b0 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-003.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-003.html @@ -1,25 +1,25 @@ - + text-align: justify, dir=rtl - +
    Test passes if the shading in both orange boxes is the same.
    -
    -
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-004.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-004.html index 006bea1ce5a..fe2bbe8d465 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-004.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-004.html @@ -1,27 +1,27 @@ - + text-align: justify, dir=ltr - +
    Test passes if the shading in both orange boxes is identical.
    -
    -
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-005.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-005.html index 3de1f09d066..bb383de0d03 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-005.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-005.html @@ -1,25 +1,25 @@ - + text-align: justify, dir=auto, RTL first strong - +
    Test passes if the shading in both orange boxes is the same.
    -
    -
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-006.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-006.html index 05531186ba8..cead2a25516 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-006.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justify-ref-006.html @@ -1,27 +1,27 @@ - + text-align: justify, dir=auto, LTR first strong - +
    Test passes if the shading in both orange boxes is the same.
    -
    -
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justifyall-ref-001.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justifyall-ref-001.html index 80ddf567adc..e9d071ee993 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justifyall-ref-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justifyall-ref-001.html @@ -1,24 +1,18 @@ - + text-align: justify-all, direction: rtl - +
    Test passes if the shading in both orange boxes is identical.
    -
    -
    +
    REF REF REF REF
    REF REF REF REF
    REF REF REF
    +
    REF REF REF REF
    REF REF REF REF
    REF REF REF
    diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justifyall-ref-002.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justifyall-ref-002.html index 93e0cf3aab4..30160d43f78 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justifyall-ref-002.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-justifyall-ref-002.html @@ -1,26 +1,20 @@ - + text-align: justify-all, direction: ltr - +
    Test passes if the shading in both orange boxes is identical.
    -
    -
    +
    REF REF REF REF
    REF REF REF REF
    REF REF REF
    +
    REF REF REF REF
    REF REF REF REF
    REF REF REF
    diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-001.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-001.html index 72e11fae2dd..5d14b17626e 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-001.html @@ -1,21 +1,17 @@ - + text-align: start, direction: rtl - +
    Test passes if the shading in both orange boxes looks the same.
    -
    -
    +
    REFER
    +
    REFER
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-002.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-002.html index a30dc620be1..fc54ede6cc3 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-002.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-002.html @@ -1,23 +1,19 @@ - + text-align: start, direction: ltr - +
    Test passes if the shading in both orange boxes looks the same.
    -
    -
    +
    REFER
    +
    REFER
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-003.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-003.html index 8393996ff9c..fa5e76a2756 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-003.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-003.html @@ -1,21 +1,17 @@ - + text-align: start, dir=rtl - +
    Test passes if the shading in both orange boxes is identical.
    -
    -
    +
    REFER
    +
    REFER
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-004.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-004.html index 4ec0fdeebef..1deee0c701f 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-004.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-004.html @@ -1,23 +1,19 @@ - + text-align: start, dir=ltr - +
    Test passes if the shading in both orange boxes is identical.
    -
    -
    +
    REFER
    +
    REFER
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-005.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-005.html index 70a8d53da9a..701845e9933 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-005.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-005.html @@ -1,23 +1,17 @@ - + text-align: start, direction: rtl - +
    Test passes if the shading in both orange boxes looks the same.
    -
    -
    +
    REF REF REF REF REF REF REF REF
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-006.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-006.html index affc904e212..914df4654bf 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-006.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-006.html @@ -1,25 +1,19 @@ - + text-align: start, direction: ltr - +
    Test passes if the shading in both orange boxes is identical.
    -
    -
    +
    REF REF REF REF REF REF REF REF
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-007.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-007.html index de8d8790f43..62cca9b99ce 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-007.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-007.html @@ -1,23 +1,17 @@ - + text-align: start, dir=rtl - +
    Test passes if the shading in both orange boxes looks the same.
    -
    -
    +
    REF REF REF REF REF REF REF REF
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-008.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-008.html index 8c8160345e8..1b09404b2fe 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-008.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-008.html @@ -1,25 +1,19 @@ - + text-align: start, dir=ltr - +
    Test passes if shading in both orange boxes is identical.
    -
    -
    +
    REF REF REF REF REF REF REF REF
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-009.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-009.html index f3c0cc74150..0cfe79e6c16 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-009.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-009.html @@ -1,23 +1,17 @@ - + text-align: start, dir=auto, RTL first strong - +
    Test passes if shading in both orange boxes is identical.
    -
    -
    +
    REF REF REF REF REF REF REF REF
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-010.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-010.html index 3014c053d51..727fb656e41 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-010.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-010.html @@ -1,25 +1,19 @@ - + text-align: start, dir=auto, LTR first strong - +
    Test passes if shading in both orange boxes is identical.
    -
    -
    +
    REF REF REF REF REF REF REF REF
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-014.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-014.html index 703ffe38b1d..8113fe23f18 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-014.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-014.html @@ -1,23 +1,19 @@ - + text-align: start, pre, dir=rtl inherited - +
    Test passes if shading in both orange boxes is identical.
    -
    -
    +
    REF
    ERE
    +
    REF
    ERE
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-015.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-015.html index 814c76f0482..d61b2585e66 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-015.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-015.html @@ -1,23 +1,19 @@ - + text-align: start, pre, dir=ltr inherited - +
    Test passes if shading in both orange boxes is identical.
    -
    -
    +
    REF
    ERE
    +
    REF
    ERE
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-016.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-016.html index 8253f594305..3df6be4048a 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-016.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-016.html @@ -1,22 +1,21 @@ - + text-align: start, pre, dir=auto - +
    Test passes if shading in both orange boxes is identical.
    -
    -
    +
    REF
    +
    ERE
    +
    REF
    +
    ERE
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-017.html b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-017.html index e8ad0119bba..89b5c4028d3 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-017.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/reference/text-align-start-ref-017.html @@ -1,21 +1,17 @@ - + text-align: start, pre, dir=auto on surrounding block - +
    Test passes if shading in both orange boxes is identical.
    -
    -
    +
    REF
    ERE
    +
    REF
    ERE
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-006.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-006.html index f74f8f4da08..4e8c097f819 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-006.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-006.html @@ -5,7 +5,6 @@ - + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-default.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-default.html new file mode 100644 index 00000000000..0b3a7ad9eb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-default.html @@ -0,0 +1,19 @@ + + + + text-align-last + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-end.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-end.html new file mode 100644 index 00000000000..c23eb03812e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-end.html @@ -0,0 +1,22 @@ + + + + text-align-last + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-justify.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-justify.html new file mode 100644 index 00000000000..10a06696e6a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-justify.html @@ -0,0 +1,22 @@ + + + + text-align-last + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-start.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-start.html new file mode 100644 index 00000000000..10f68edec3d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-center-last-start.html @@ -0,0 +1,22 @@ + + + + text-align-last + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-default-last-default.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-default-last-default.html new file mode 100644 index 00000000000..ee626a6ac92 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-default-last-default.html @@ -0,0 +1,19 @@ + + + + text-align-last + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-center.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-center.html new file mode 100644 index 00000000000..993d98d5145 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-center.html @@ -0,0 +1,22 @@ + + + + text-align-last + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-default.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-default.html new file mode 100644 index 00000000000..b730ba6994d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-default.html @@ -0,0 +1,19 @@ + + + + text-align-last + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-end.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-end.html new file mode 100644 index 00000000000..97ff9263472 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-end.html @@ -0,0 +1,22 @@ + + + + text-align-last + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-justify.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-justify.html new file mode 100644 index 00000000000..3c4957ddb66 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-justify.html @@ -0,0 +1,22 @@ + + + + text-align-last + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-start.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-start.html new file mode 100644 index 00000000000..d98221f2a01 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-end-last-start.html @@ -0,0 +1,22 @@ + + + + text-align-last + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-inline-end-crash.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-inline-end-crash.html new file mode 100644 index 00000000000..4bfcbd30b82 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-inline-end-crash.html @@ -0,0 +1,12 @@ + +CSS Text: Don't crash with text-align-[last,all]:inline-end + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-001.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-001.html index f2ba8cc2302..9e1319e91ee 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-001.html @@ -1,5 +1,5 @@ - + text-align: justify, direction: rtl @@ -7,24 +7,20 @@ - +
    Test passes if the shading in both orange boxes is the same.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES TES TES TES
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-002.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-002.html index 3f91b6d4789..250f680393b 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-002.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-002.html @@ -1,5 +1,5 @@ - + text-align: justify, direction: ltr @@ -7,26 +7,22 @@ - +
    Test passes if the shading in both orange boxes is identical.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES TES TES TES
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-003.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-003.html index 73d0b2fe69d..b08cd88e7ad 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-003.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-003.html @@ -1,5 +1,5 @@ - + text-align: justify, dir=rtl @@ -7,24 +7,20 @@ - +
    Test passes if the shading in both orange boxes is the same.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES TES TES TES
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-004.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-004.html index f8621ee8a11..20ca4fe2421 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-004.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-004.html @@ -1,5 +1,5 @@ - + text-align: justify, dir=ltr @@ -7,26 +7,22 @@ - +
    Test passes if the shading in both orange boxes is identical.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES TES TES TES
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-005.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-005.html index 5723776938f..851e1a09507 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-005.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-005.html @@ -1,5 +1,5 @@ - + text-align: justify, dir=auto, RTL first strong @@ -7,24 +7,20 @@ - +
    Test passes if the shading in both orange boxes is the same.
    -
    ‏XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    ‏TES TES TES TES TES TES TES TES TES TES TES
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-006.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-006.html index 2a927921078..d02fa47aeaa 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-006.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-006.html @@ -1,5 +1,5 @@ - + text-align: justify, dir=auto, LTR first strong @@ -7,26 +7,22 @@ - +
    Test passes if the shading in both orange boxes is the same.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES TES TES TES
    +
    +
    REF REF REF REF
    +
    REF REF REF REF
    +
    REF REF REF
    +
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-center.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-center.html new file mode 100644 index 00000000000..8aba126e148 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-center.html @@ -0,0 +1,22 @@ + + + + text-align-last + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-default.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-default.html new file mode 100644 index 00000000000..b744958c473 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-default.html @@ -0,0 +1,19 @@ + + + + text-align-last + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-end.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-end.html new file mode 100644 index 00000000000..6e084f33e8f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-end.html @@ -0,0 +1,22 @@ + + + + text-align-last + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-justify.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-justify.html new file mode 100644 index 00000000000..c1bdfc38e5b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-justify.html @@ -0,0 +1,22 @@ + + + + text-align-last + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-start.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-start.html new file mode 100644 index 00000000000..ca4f0d92236 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justify-last-start.html @@ -0,0 +1,22 @@ + + + + text-align-last + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis odio est, cursus non adipiscing at, fringilla quis eros. Sed volutpat nibh sit amet ante molestie a vehicula nulla gravida. Mauris elementum cursus urna id vestibulum. Etiam volutpat odio tincidunt libero ullamcorper elementum. Suspendisse potenti. Ut ut arcu lorem. Integer mi sapien, porta a pharetra et, varius laoreet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut mi at elit consequat aliquam id eu lectus. Etiam tincidunt diam et ante ullamcorper a convallis erat lobortis. Sed blandit ultrices dui et bibendum. Sed condimentum velit eget nibh rutrum cursus. Quisque pretium iaculis gravida. Proin risus eros, iaculis quis fermentum a, adipiscing id mauris.

    +

    ×מר המחבר: החיבור ×”×–×” ×œ× ×—×‘×¨×ª×™×• ללמד לבני ×”××“× ×ת ×שר ×œ× ×™×“×¢×•, ××œ× ×œ×”×–×›×™×¨× ×ת הידוע ×œ×”× ×›×‘×¨ ×•×ž×¤×•×¨×¡× ××¦×œ× ×¤×™×¨×¡×•× ×’×“×•×œ. ×›×™ ×œ× ×ª×ž×¦× ×‘×¨×•×‘ דברי, ××œ× ×“×‘×¨×™× ×©×¨×•×‘ בני ×”××“× ×™×•×“×¢×™× ××•×ª× ×•×œ× ×ž×¡×ª×¤×§×™× ×‘×”× ×›×œ×œ, ××œ× ×©×›×¤×™ רוב ×¤×¨×¡×•×ž× ×•×›× ×’×“ מה ש××ž×ª×ª× ×’×œ×•×™×” לכל, כך ×”×”×¢×œ× ×ž×”× ×ž×¦×•×™ מ×ד והשכחה רבה. על כן ×ין התועלת הנלקט מזה הספר ×™×•×¦× ×ž×Ÿ הקרי××” בו ×¤×¢× ×חת, ×›×™ כבר ×פשר ×©×œ× ×™×ž×¦× ×”×§×•×¨× ×‘×©×›×œ×• ×—×“×•×©×™× ×חר קרי×תו ×©×œ× ×”×™×• בו לפני קרי×תו, ××œ× ×ž×¢×˜. ×בל התועלת ×™×•×¦× ×ž×Ÿ החזרה עליו וההתמדה. ×›×™ יזכרו לו ×”×“×‘×¨×™× ×”×לה ×”× ×©×›×—×™× ×ž×‘× ×™ ×”××“× ×‘×˜×‘×¢, ×•×™×©×™× ×ל לבו חובתו ×שר הונמתעלנממנה.

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-001.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-001.html index 721d749dd45..34b40871ed6 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-001.html @@ -1,5 +1,5 @@ - + text-align: justify-all, direction: rtl @@ -7,23 +7,18 @@ - +
    Test passes if the shading in both orange boxes is identical.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES TES TES TES
    +
    REF REF REF REF
    REF REF REF REF
    REF REF REF
    diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-002.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-002.html index ab9e2edf14e..d6c631b893f 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-002.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-002.html @@ -1,5 +1,5 @@ - + text-align: justify-all, direction: ltr @@ -7,25 +7,20 @@ - +
    Test passes if the shading in both orange boxes is identical.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES TES TES TES
    +
    REF REF REF REF
    REF REF REF REF
    REF REF REF
    diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-003.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-003.html index dea27de1f17..48264294955 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-003.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-003.html @@ -1,5 +1,5 @@ - + text-align: justify-all, dir=rtl @@ -7,23 +7,18 @@ - +
    Test passes if the shading in both orange boxes is identical.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES TES TES TES
    +
    REF REF REF REF
    REF REF REF REF
    REF REF REF
    diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-004.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-004.html index 0ab12652404..293acea2987 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-004.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-004.html @@ -1,5 +1,5 @@ - + text-align: justify-all, dir=ltr @@ -7,25 +7,20 @@ - +
    Test passes if the shading in both orange boxes is identical.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES TES TES TES
    +
    REF REF REF REF
    REF REF REF REF
    REF REF REF
    diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-005.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-005.html index 186092ca2ba..f18d8bbbb42 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-005.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-005.html @@ -1,5 +1,5 @@ - + text-align: justify-all, dir=auto, RTL first strong @@ -7,23 +7,18 @@ - +
    Test passes if the shading in both orange boxes is identical.
    -
    ‏XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    ‏TES TES TES TES TES TES TES TES TES TES TES
    +
    REF REF REF REF
    REF REF REF REF
    REF REF REF
    diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-006.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-006.html index bc1d0a69899..41a18ef2ffe 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-006.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-justifyall-006.html @@ -1,5 +1,5 @@ - + text-align: justify-all, dir=auto, LTR first strong @@ -7,25 +7,20 @@ - +
    Test passes if the shading in both orange boxes is identical.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES TES TES TES
    +
    REF REF REF REF
    REF REF REF REF
    REF REF REF
    diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-001.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-001.html index 6c94fad8f9e..4dce7472dbd 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-001.html @@ -4,7 +4,6 @@ - + + +

    Lorem ipsum

    +

    ×מר המחבר

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-center.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-center.html new file mode 100644 index 00000000000..639156062d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-center.html @@ -0,0 +1,18 @@ + + + + text-align-last: center + + + + + + +

    Lorem ipsum

    +

    ×מר המחבר

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-end-ref.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-end-ref.html new file mode 100644 index 00000000000..ded6defa8a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-end-ref.html @@ -0,0 +1,16 @@ + + + + text-align-last: end + + + + +

    Lorem ipsum

    +

    ×מר המחבר

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-end.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-end.html new file mode 100644 index 00000000000..4b6fe433920 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-end.html @@ -0,0 +1,18 @@ + + + + text-align-last: end + + + + + + +

    Lorem ipsum

    +

    ×מר המחבר

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-interpolation.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-interpolation.html new file mode 100644 index 00000000000..1af0f91e7ad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-interpolation.html @@ -0,0 +1,40 @@ + + + + + text-align-last interpolation + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify-ref.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify-ref.html new file mode 100644 index 00000000000..d07bed3f779 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify-ref.html @@ -0,0 +1,20 @@ + + + + text-align-last: justify + + + + +

    Loremipsum

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify-rtl-ref.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify-rtl-ref.html new file mode 100644 index 00000000000..d3b941e9000 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify-rtl-ref.html @@ -0,0 +1,18 @@ + + + + text-align-last: justify in RTL + + + + +

    ×מרהמחבר

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify-rtl.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify-rtl.html new file mode 100644 index 00000000000..835e4cdd5ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify-rtl.html @@ -0,0 +1,17 @@ + + + + text-align-last: justify in RTL + + + + + + +

    ×מר המחבר

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify.html new file mode 100644 index 00000000000..c48678b74a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-justify.html @@ -0,0 +1,17 @@ + + + + text-align-last: justify + + + + + + +

    Lorem ipsum

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-simple-ref.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-simple-ref.html new file mode 100644 index 00000000000..3c8ba2e580a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-simple-ref.html @@ -0,0 +1,42 @@ + + + + + + + +
    +This test checks that text-align-last property works properly.
    +
    +
    start end
    + +
    end start
    + +
    left right
    + +
    right left
    + +
    center left
    + +
    start auto
    + +
    end auto
    + +
    left auto
    + +
    right auto
    + +
    center auto
    + +
    justify auto
    + +
    auto  justify
    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-simple.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-simple.html new file mode 100644 index 00000000000..6dabb111faf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-simple.html @@ -0,0 +1,45 @@ + + + +text-align-last + + + + + + +
    +This test checks that text-align-last property works properly.
    +
    +
    start end
    + +
    end start
    + +
    left right
    + +
    right left
    + +
    center left
    + +
    start auto
    + +
    end auto
    + +
    left auto
    + +
    right auto
    + +
    center auto
    + +
    justify auto
    + +
    auto justify
    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-start-ref.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-start-ref.html new file mode 100644 index 00000000000..be564fda0b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-start-ref.html @@ -0,0 +1,16 @@ + + + + text-align-last: start + + + + +

    Lorem ipsum

    +

    ×מר המחבר

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-start.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-start.html new file mode 100644 index 00000000000..af5b49dd966 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-start.html @@ -0,0 +1,19 @@ + + + + text-align-last: start + + + + + + +

    Lorem ipsum

    +

    ×מר המחבר

    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-001.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-001.html index 43219cc248f..3af1130f2c3 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-001.html @@ -1,5 +1,5 @@ - + text-align: start, direction: rtl @@ -7,18 +7,17 @@ - +
    Test passes if the shading in both orange boxes looks the same.
    -
    XXXXX
    -
    +
    TESTI
    +
    REFER
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-002.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-002.html index 911a185ade6..27aad6fde67 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-002.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-002.html @@ -1,5 +1,5 @@ - + text-align: start, direction: ltr @@ -7,20 +7,19 @@ - +
    Test passes if the shading in both orange boxes looks the same.
    -
    XXXXX
    -
    +
    TESTI
    +
    REFER
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-003.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-003.html index 0ca38da0bec..9a007f09fb6 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-003.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-003.html @@ -1,5 +1,5 @@ - + text-align: start, dir=rtl @@ -7,18 +7,17 @@ - +
    Test passes if the shading in both orange boxes is identical.
    -
    XXXXX
    -
    +
    TESTI
    +
    REFER
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-004.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-004.html index 739bd8811ff..b1e01e3ed93 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-004.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-004.html @@ -1,5 +1,5 @@ - + text-align: start, dir=ltr @@ -7,20 +7,19 @@ - +
    Test passes if the shading in both orange boxes is identical.
    -
    XXXXX
    -
    +
    TESTI
    +
    REFER
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-005.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-005.html index 5dbe17de9b1..37c61154803 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-005.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-005.html @@ -1,5 +1,5 @@ - + text-align: start, direction: rtl @@ -7,20 +7,17 @@ - +
    Test passes if the shading in both orange boxes looks the same.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-006.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-006.html index 8557affeb77..b55c7cb7da6 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-006.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-006.html @@ -1,5 +1,5 @@ - + text-align: start, direction: ltr @@ -7,22 +7,19 @@ - +
    Test passes if the shading in both orange boxes is identical.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-007.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-007.html index 1a56287c355..f79c10947c7 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-007.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-007.html @@ -1,5 +1,5 @@ - + text-align: start, dir=rtl @@ -7,20 +7,17 @@ - +
    Test passes if the shading in both orange boxes looks the same.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-008.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-008.html index 3885c4dba45..81ff886f751 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-008.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-008.html @@ -1,5 +1,5 @@ - + text-align: start, dir=ltr @@ -7,22 +7,19 @@ - +
    Test passes if shading in both orange boxes is identical.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-009.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-009.html index 044c896a02c..bf231c56429 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-009.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-009.html @@ -1,5 +1,5 @@ - + text-align: start, dir=auto, RTL first strong @@ -7,23 +7,20 @@ - +
    Test passes if shading in both orange boxes is identical.
    -
    ‏XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    ‏TES TES TES TES TES TES TES TES
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-010.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-010.html index 358fc373aad..215e60b3895 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-010.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-010.html @@ -1,5 +1,5 @@ - + text-align: start, dir=auto, LTR first strong @@ -7,22 +7,19 @@ - +
    Test passes if shading in both orange boxes is identical.
    -
    XXX XXX XXX XXX XXX XXX XXX XXX
    -
    +
    TES TES TES TES TES TES TES TES
    +
    REF REF REF REF REF REF REF REF
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-014.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-014.html index 04a2bf562e5..add058c3808 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-014.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-014.html @@ -1,5 +1,5 @@ - + text-align: start, pre, dir=rtl inherited @@ -7,24 +7,23 @@ - +
    Test passes if shading in both orange boxes is identical.
    -
    XXX
    -‏XXX
    -
    +
    TES
    +‏TIN
    +
    REF
    ERE
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-015.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-015.html index ba41e6142c9..b8432da1c23 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-015.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-015.html @@ -1,5 +1,5 @@ - + text-align: start, pre, dir=ltr inherited @@ -7,24 +7,23 @@ - +
    Test passes if shading in both orange boxes is identical.
    -
    XXX
    -‏XXX
    -
    +
    TES
    +‏TIN
    +
    REF
    ERE
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-016.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-016.html index c45667b59f0..ab9bc30b595 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-016.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-016.html @@ -1,5 +1,5 @@ - + text-align: start, pre, dir=auto @@ -7,23 +7,25 @@ - +
    Test passes if shading in both orange boxes is identical.
    -
    XXX
    -‏XXX
    -
    +
    TES
    +‏TIN
    +
    REF
    +
    ERE
    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-017.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-017.html index 55273f897de..554adb8faf5 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-017.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-start-017.html @@ -1,5 +1,5 @@ - + text-align: start, pre, dir=auto on surrounding block @@ -7,21 +7,20 @@ - +
    Test passes if shading in both orange boxes is identical.
    -
    XXX
    -‏XXX
    -
    +
    TES
    +‏TIN
    +
    REF
    ERE
    +
    +xxxx xxxx
    xxxx +
    +
    + +
    +xxxx xxxx xxxx +
    +
    + +
    +xxxx
    xxxx
    xxxx +
    +
    + +
    +xxxx xxxx
    xxxx +
    +
    + +
    +xxxx xxxx
    xxxx +
    +
    + +
    +xxxx xxxx xxxx +
    +
    + +
    +xxxx
    xxxx
    xxxx +
    +
    + +
    +xxxx xxxx
    xxxx +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-indent/text-indent-percentage-002.html b/tests/wpt/web-platform-tests/css/css-text/text-indent/text-indent-percentage-002.html index 2d16b5ad778..b60f99e819c 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-indent/text-indent-percentage-002.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-indent/text-indent-percentage-002.html @@ -4,7 +4,6 @@ CSS Text Test: text-indent percentage resolution basis - + + +
    +
    +
    +
    foobar
    +
    f
    +
    foobar
    +
    +
    +
    +
    +
    foobar
    +
    +
    + +
    +
    +
    +
    foobar
    +
    f
    +
    foobar
    +
    +
    +
    +
    +
    foobar
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-justify/text-justify-interpolation.html b/tests/wpt/web-platform-tests/css/css-text/text-justify/text-justify-interpolation.html new file mode 100644 index 00000000000..cb6103f0c0e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/text-justify/text-justify-interpolation.html @@ -0,0 +1,46 @@ + + + + + text-justify interpolation + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-text/text-transform/reference/text-transform-capitalize-016-ref.html b/tests/wpt/web-platform-tests/css/css-text/text-transform/reference/text-transform-capitalize-016-ref.html index 7ce25709481..df0cb58c191 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-transform/reference/text-transform-capitalize-016-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-transform/reference/text-transform-capitalize-016-ref.html @@ -4,7 +4,6 @@ CSS3 Text, text transform: capitalize, Greek Extended - + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-toggle/toggle-activation.tentative.html b/tests/wpt/web-platform-tests/css/css-toggle/toggle-activation.tentative.html new file mode 100644 index 00000000000..20064605668 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-toggle/toggle-activation.tentative.html @@ -0,0 +1,489 @@ + + +CSS Toggles: activation of toggles + + + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-toggle/toggle-api.tentative.html b/tests/wpt/web-platform-tests/css/css-toggle/toggle-api.tentative.html new file mode 100644 index 00000000000..f47ec55ed01 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-toggle/toggle-api.tentative.html @@ -0,0 +1,338 @@ + + +CSS Toggles: CSSToggle and CSSToggleMap API + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-toggle/toggle-creation.tentative.html b/tests/wpt/web-platform-tests/css/css-toggle/toggle-creation.tentative.html new file mode 100644 index 00000000000..583e1631d3c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-toggle/toggle-creation.tentative.html @@ -0,0 +1,73 @@ + + +CSS Toggles: creation of toggles + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-toggle/toggle-events.tentative.html b/tests/wpt/web-platform-tests/css/css-toggle/toggle-events.tentative.html new file mode 100644 index 00000000000..bc4db7d5f66 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-toggle/toggle-events.tentative.html @@ -0,0 +1,52 @@ + + +CSS Toggles: CSSToggle and CSSToggleMap API + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-toggle/toggle-pseudo-class.tentative.html b/tests/wpt/web-platform-tests/css/css-toggle/toggle-pseudo-class.tentative.html new file mode 100644 index 00000000000..7fb5c26d91b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-toggle/toggle-pseudo-class.tentative.html @@ -0,0 +1,235 @@ + + +CSS Toggles: creation of toggles + + + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-toggle/toggle-shorthand-serialization.tentative.html b/tests/wpt/web-platform-tests/css/css-toggle/toggle-shorthand-serialization.tentative.html new file mode 100644 index 00000000000..682945c2e2b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-toggle/toggle-shorthand-serialization.tentative.html @@ -0,0 +1,77 @@ + + +CSS Toggles: serialization of toggle shorthand + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-toggle/toggle-trigger-focus.tentative.html b/tests/wpt/web-platform-tests/css/css-toggle/toggle-trigger-focus.tentative.html new file mode 100644 index 00000000000..bc93ba3631b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-toggle/toggle-trigger-focus.tentative.html @@ -0,0 +1,54 @@ + + +CSS Toggles: focusability of elements with toggle-trigger + + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-toggle/toggle-trigger-multiple.tentative.html b/tests/wpt/web-platform-tests/css/css-toggle/toggle-trigger-multiple.tentative.html new file mode 100644 index 00000000000..bc972bd729d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-toggle/toggle-trigger-multiple.tentative.html @@ -0,0 +1,92 @@ + + +CSS Toggles: triggering multiple toggles with a style change + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-toggle/toggle-visibility-z-ordering-001.tentative.html b/tests/wpt/web-platform-tests/css/css-toggle/toggle-visibility-z-ordering-001.tentative.html new file mode 100644 index 00000000000..50f5d35f192 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-toggle/toggle-visibility-z-ordering-001.tentative.html @@ -0,0 +1,40 @@ + + +CSS Toggles: toggle-visibility + + + + + + + + +

    Test passes if there is a filled green square and no red.

    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-toggle/toggle-visibility-z-ordering-002.tentative.html b/tests/wpt/web-platform-tests/css/css-toggle/toggle-visibility-z-ordering-002.tentative.html new file mode 100644 index 00000000000..cc1ecb2a9cf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-toggle/toggle-visibility-z-ordering-002.tentative.html @@ -0,0 +1,44 @@ + + +CSS Toggles: toggle-visibility + + + + + + + + +

    Test passes if there is a filled green square and no red.

    + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-toggle/toggle-visibility.tentative.html b/tests/wpt/web-platform-tests/css/css-toggle/toggle-visibility.tentative.html new file mode 100644 index 00000000000..0a720fd454b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-toggle/toggle-visibility.tentative.html @@ -0,0 +1,267 @@ + + +CSS Toggles: toggle-visibility + + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/2d-rotate-001.html b/tests/wpt/web-platform-tests/css/css-transforms/2d-rotate-001.html index 9e87de5fd28..ffba5b9c95d 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/2d-rotate-001.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/2d-rotate-001.html @@ -5,7 +5,7 @@ - + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/rotate-animation-with-will-change-transform-001.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/rotate-animation-with-will-change-transform-001.html new file mode 100644 index 00000000000..9d330e1573a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/rotate-animation-with-will-change-transform-001.html @@ -0,0 +1,38 @@ + +CSS Test (Transforms): Transform and perspective with w negative + + + + + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-rotate.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-rotate.html index d69023c9b7a..cba2d2086fc 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-rotate.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-rotate.html @@ -1,7 +1,7 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/translate-interpolation.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/translate-interpolation.html index 73bedf2f7b0..4ece9721b8b 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/animation/translate-interpolation.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/translate-interpolation.html @@ -150,7 +150,7 @@ to: '8px 80% 800px', }, [ {at: -1, expect: '-8px -80% -800px'}, - {at: 0, expect: '0px'}, + {at: 0, expect: '0px 0%'}, {at: 0.125, expect: '1px 10% 100px'}, {at: 0.875, expect: '7px 70% 700px'}, {at: 1, expect: '8px 80% 800px'}, diff --git a/tests/wpt/web-platform-tests/css/css-transforms/change-perspective-property.html b/tests/wpt/web-platform-tests/css/css-transforms/change-perspective-property.html new file mode 100644 index 00000000000..b66cccbdac2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/change-perspective-property.html @@ -0,0 +1,33 @@ + + +Change perspective property + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/change-transform-origin-property.html b/tests/wpt/web-platform-tests/css/css-transforms/change-transform-origin-property.html new file mode 100644 index 00000000000..2a623eb711d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/change-transform-origin-property.html @@ -0,0 +1,33 @@ + + +Change transform-origin property + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/crashtests/zero-perspective-001.html b/tests/wpt/web-platform-tests/css/css-transforms/crashtests/zero-perspective-001.html new file mode 100644 index 00000000000..923794ed60c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/crashtests/zero-perspective-001.html @@ -0,0 +1,14 @@ + + + +
    + +
      IjzXS
    diff --git a/tests/wpt/web-platform-tests/css/css-transforms/css-skew-002.html b/tests/wpt/web-platform-tests/css/css-transforms/css-skew-002.html index ff042380206..edafda6cbb3 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/css-skew-002.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/css-skew-002.html @@ -6,7 +6,7 @@ - + +
    + Should be fully white, without any red. +
    +
    +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-transforms/gradientTransform/svg-gradientTransform-001.html b/tests/wpt/web-platform-tests/css/css-transforms/gradientTransform/svg-gradientTransform-001.html index a660ac4bee6..6db774b3d2c 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/gradientTransform/svg-gradientTransform-001.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/gradientTransform/svg-gradientTransform-001.html @@ -10,6 +10,7 @@ + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/animation/individual-transform-combine.html b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/animation/individual-transform-combine.html new file mode 100644 index 00000000000..9551a3a726a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/animation/individual-transform-combine.html @@ -0,0 +1,100 @@ + + + + + Individual transform: combine individual transform properties + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/animation/individual-transform-ordering-ref.html b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/animation/individual-transform-ordering-ref.html new file mode 100644 index 00000000000..b7dce51e8ba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/animation/individual-transform-ordering-ref.html @@ -0,0 +1,44 @@ + + + + + Individual transform: combine individual transform properties + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/animation/individual-transform-ordering.html b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/animation/individual-transform-ordering.html new file mode 100644 index 00000000000..9d127f163bc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/animation/individual-transform-ordering.html @@ -0,0 +1,114 @@ + + + + + Individual transform: combine individual transform properties + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/change-rotate-property.html b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/change-rotate-property.html new file mode 100644 index 00000000000..e5a8046effc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/change-rotate-property.html @@ -0,0 +1,32 @@ + + +Change rotate property + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/change-scale-property.html b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/change-scale-property.html new file mode 100644 index 00000000000..62814a61144 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/change-scale-property.html @@ -0,0 +1,32 @@ + + +Change scale property + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/change-translate-property.html b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/change-translate-property.html new file mode 100644 index 00000000000..d2d57abb9ad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/individual-transform/change-translate-property.html @@ -0,0 +1,33 @@ + + +Change translate property + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/inline-with-filter-and-hidden-backface.html b/tests/wpt/web-platform-tests/css/css-transforms/inline-with-filter-and-hidden-backface.html new file mode 100644 index 00000000000..dda788537cf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/inline-with-filter-and-hidden-backface.html @@ -0,0 +1,11 @@ + + + +x + + + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html b/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html index 0fb8ee1b196..89a8b519b1b 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html @@ -18,6 +18,7 @@ test_valid_value("transform", "matrix(1, 2, 3, 4, 5, 6)"); test_valid_value("transform", "matrix(-0.1, -0.2, -0.3, -0.4, -0.5, -0.6)"); test_valid_value("transform", "translate(1px)"); +test_valid_value("transform", "translate(1px, 0%)"); test_valid_value("transform", "translate(2%, -3%)"); test_valid_value("transform", "translateX(-4px)"); diff --git a/tests/wpt/web-platform-tests/css/css-transforms/parsing/translate-parsing-valid.html b/tests/wpt/web-platform-tests/css/css-transforms/parsing/translate-parsing-valid.html index 132e041676d..523bc6d652c 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/parsing/translate-parsing-valid.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/parsing/translate-parsing-valid.html @@ -18,7 +18,7 @@ test_valid_value("translate", "100%"); test_valid_value("translate", "100px 0px", "100px"); test_valid_value("translate", "100px 0.1px", "100px 0.1px"); -test_valid_value("translate", "100px 0%", "100px"); +test_valid_value("translate", "100px 0%"); test_valid_value("translate", "100px calc(10px - 10%)", "100px calc(-10% + 10px)"); test_valid_value("translate", "100px 200%"); test_valid_value("translate", "100% 200px"); diff --git a/tests/wpt/web-platform-tests/css/css-transforms/perspective-transforms-equivalence.html b/tests/wpt/web-platform-tests/css/css-transforms/perspective-transforms-equivalence.html index 3a355d9813a..c286837969d 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/perspective-transforms-equivalence.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/perspective-transforms-equivalence.html @@ -9,7 +9,7 @@ Perspective with different transforms can have small anti-aliasing pixel differences, so the test should fuzzy patch to the ref. --> - + + + +
    +
    +

    + Gazing into the stars +

    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/skew-test1.html b/tests/wpt/web-platform-tests/css/css-transforms/skew-test1.html index 30e0028664b..cb178097654 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/skew-test1.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/skew-test1.html @@ -8,7 +8,7 @@ - + +
    diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-clip-001.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-clip-001.html new file mode 100644 index 00000000000..0bdfd631ba1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform-clip-001.html @@ -0,0 +1,16 @@ + + +CSS transforms and clipping + + + + + + +
    +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-hit-testing.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-hit-testing.html new file mode 100644 index 00000000000..6a890dc367b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform-hit-testing.html @@ -0,0 +1,153 @@ + +CSS Test (Transforms): Hit Testing + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-origin-013.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-origin-013.html index 64f52df125f..93c17e7fc26 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform-origin-013.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform-origin-013.html @@ -6,6 +6,7 @@ +
    diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-001.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-001.html index 72011e37bce..bd14ebc25ee 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-001.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-001.html @@ -6,10 +6,10 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-002.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-002.html index b1be5277400..d714af2d07b 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-002.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-002.html @@ -6,11 +6,11 @@ - +
    diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-perspective-002.html b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-perspective-002.html index 4405e7aa761..fd54bc6712a 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-perspective-002.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-perspective-002.html @@ -6,6 +6,7 @@ + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-006.html b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-006.html index 025475805fd..b7c178f2fc9 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-006.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-006.html @@ -9,6 +9,7 @@ shift it, depending on 'transform-origin'). Without 'transform-style: preserve-3d', the rotations on parent and child shouldn't cancel, so its height should be halved with no other effect."> + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-007.html b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-007.html index b0b3c66abf9..6e426e2681a 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-007.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-007.html @@ -7,6 +7,7 @@ + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-008.html b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-008.html index 8f6e1f89c8a..ee2ceaa5fd0 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-008.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-008.html @@ -10,6 +10,7 @@ 'transform-style: preserve-3d' would normally make the result different, but 'overflow: hidden' overrides its effect and causes it to work the same as 'transform-style: flat'."> + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-009.html b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-009.html index 5a0c3ade35f..e709462b5ff 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-009.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-009.html @@ -7,6 +7,7 @@ + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-013.html b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-013.html index 3aac76dcf78..224a9e7c81e 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-013.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-preserve3d-013.html @@ -9,7 +9,7 @@ 'hidden'. (Note that the ref is nontrivial, because the scrollbar has to be scaled appropriately.)"> - +
    + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-002.html b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-002.html index a677aaedd22..85ed574042c 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-002.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-002.html @@ -10,6 +10,7 @@ + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-003.html b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-003.html index e613ba520ea..c655bfebe5c 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-003.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-003.html @@ -9,6 +9,7 @@ + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-005.html b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-005.html index 524323c1c61..9b7acba8c2f 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-005.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-005.html @@ -10,6 +10,7 @@ + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-006.html b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-006.html index b3dd5378f4b..061a277b6b9 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-006.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform3d-scale-006.html @@ -10,6 +10,7 @@ + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transforms-rotate-degree-45.html b/tests/wpt/web-platform-tests/css/css-transforms/transforms-rotate-degree-45.html index 312d1209737..c5da4e864e2 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/transforms-rotate-degree-45.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/transforms-rotate-degree-45.html @@ -6,7 +6,7 @@ - + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-transitions/before-load-001.html b/tests/wpt/web-platform-tests/css/css-transitions/before-load-001.html index 009260eea43..fe9fb976812 100644 --- a/tests/wpt/web-platform-tests/css/css-transitions/before-load-001.html +++ b/tests/wpt/web-platform-tests/css/css-transitions/before-load-001.html @@ -41,6 +41,6 @@ async_test(t => { }); - + diff --git a/tests/wpt/web-platform-tests/css/css-transitions/crashtests/transition-during-style-attr-mutation.html b/tests/wpt/web-platform-tests/css/css-transitions/crashtests/transition-during-style-attr-mutation.html new file mode 100644 index 00000000000..255794bfa86 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transitions/crashtests/transition-during-style-attr-mutation.html @@ -0,0 +1,12 @@ + +Don't crash when mutating style attribute with non-initial transition + + +
    PASS if no crash
    + diff --git a/tests/wpt/web-platform-tests/css/css-transitions/inherit-background-color-transition-ref.html b/tests/wpt/web-platform-tests/css/css-transitions/inherit-background-color-transition-ref.html new file mode 100644 index 00000000000..b7a5824836e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transitions/inherit-background-color-transition-ref.html @@ -0,0 +1,6 @@ + + + +
    PASS if black on white
    + + diff --git a/tests/wpt/web-platform-tests/css/css-transitions/inherit-background-color-transition.html b/tests/wpt/web-platform-tests/css/css-transitions/inherit-background-color-transition.html new file mode 100644 index 00000000000..2c0e4aed933 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transitions/inherit-background-color-transition.html @@ -0,0 +1,41 @@ + + + Verifies that 'background-color' from a transition inherits explicitly down if requested + + + + + + +
    +
    PASS if black on white
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-computed.html b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-computed.html index 3f253c3a0d1..a82551372f1 100644 --- a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-computed.html +++ b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-computed.html @@ -14,6 +14,11 @@ diff --git a/tests/wpt/web-platform-tests/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet-ref.html b/tests/wpt/web-platform-tests/css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet-ref.html similarity index 100% rename from tests/wpt/web-platform-tests/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet-ref.html rename to tests/wpt/web-platform-tests/css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html b/tests/wpt/web-platform-tests/css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet.html similarity index 83% rename from tests/wpt/web-platform-tests/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html rename to tests/wpt/web-platform-tests/css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet.html index 4967eabda86..d59118c66f9 100644 --- a/tests/wpt/web-platform-tests/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html +++ b/tests/wpt/web-platform-tests/css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet.html @@ -2,5 +2,5 @@ CSS Transitions Test: No color transition from initial to blocking stylesheet value - +
    This text should be green on load.
    diff --git a/tests/wpt/web-platform-tests/css/css-transitions/support/properties.js b/tests/wpt/web-platform-tests/css/css-transitions/support/properties.js index 3255261f6c6..93c47cd2f03 100644 --- a/tests/wpt/web-platform-tests/css/css-transitions/support/properties.js +++ b/tests/wpt/web-platform-tests/css/css-transitions/support/properties.js @@ -152,6 +152,13 @@ var values = { 'static to absolute': ['none', 'block', {discrete: true}], 'block to inline-block': ['block', 'inline-block', {discrete: true}] }; + }, + 'object-view-box': function() { + return { + inset: ['inset(10% 10% 20% 20%)', 'inset(20% 20% 30% 30%)'], + rect: ['rect(10px 20px 30px 40px)', 'rect(20px 30px 40px 50px)'], + xywh: ['xywh(10px 20px 30px 40px)', 'xywh(20px 30px 40px 50px)'], + }; } }; @@ -267,7 +274,8 @@ var unspecified_properties = { 'outline-radius-bottomright': ['length', 'percentage'], 'outline-radius-bottomleft': ['length', 'percentage'], 'display': ['display'], - 'position': ['position'] + 'position': ['position'], + 'object-view-box': ['object-view-box'] }; /* diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-base-response-002.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-base-response-002.html index 89c6ff25bc5..2a7c41afb84 100644 --- a/tests/wpt/web-platform-tests/css/css-transitions/transition-base-response-002.html +++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-base-response-002.html @@ -5,11 +5,11 @@ +

    Test passes if there is a filled green square.

    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-ui/appearance-transition-ref.html b/tests/wpt/web-platform-tests/css/css-ui/appearance-transition-ref.html deleted file mode 100644 index b5ea559b9e7..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/appearance-transition-ref.html +++ /dev/null @@ -1,6 +0,0 @@ - - - -

    PASS if the input field has a dark green background

    diff --git a/tests/wpt/web-platform-tests/css/css-ui/appearance-transition.tentative.html b/tests/wpt/web-platform-tests/css/css-ui/appearance-transition.tentative.html deleted file mode 100644 index 199de7c05e1..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/appearance-transition.tentative.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -

    PASS if the input field has a dark green background

    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-button-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-button-ref.html new file mode 100644 index 00000000000..9007ecb7fb9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-button-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback - button + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-checkbox-input-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-checkbox-input-ref.html new file mode 100644 index 00000000000..d969a759a09 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-checkbox-input-ref.html @@ -0,0 +1,9 @@ + + +Reference: Compute kind of widget - fallback - checkbox-input + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-color-input-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-color-input-ref.html new file mode 100644 index 00000000000..cd6380bc1fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-color-input-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback - color-input + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-button-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-button-ref.html new file mode 100644 index 00000000000..02380ae7edf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-button-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback - input-button + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-reset-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-reset-ref.html new file mode 100644 index 00000000000..6899e7102cf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-reset-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback - input-reset + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-search-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-search-ref.html new file mode 100644 index 00000000000..5d49037288b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-search-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback - input-search + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-search-text-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-search-text-ref.html new file mode 100644 index 00000000000..5918616f5de --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-search-text-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback - input-search-text + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-submit-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-submit-ref.html new file mode 100644 index 00000000000..3ceb54959eb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-submit-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback - input-submit + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-text-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-text-ref.html new file mode 100644 index 00000000000..ad8dcc2289e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-input-text-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback - input-text + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-link-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-link-ref.html new file mode 100644 index 00000000000..6d36dfdce4d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-link-ref.html @@ -0,0 +1,9 @@ + + +Reference: Compute kind of widget - fallback - link + +
    + a +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-meter-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-meter-ref.html new file mode 100644 index 00000000000..43b5825547e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-meter-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback - meter + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-progress-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-progress-ref.html new file mode 100644 index 00000000000..20bf38150d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-progress-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-radio-input-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-radio-input-ref.html new file mode 100644 index 00000000000..3654e6b72f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-radio-input-ref.html @@ -0,0 +1,9 @@ + + +Reference: Compute kind of widget - fallback - radio-input + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-range-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-range-ref.html new file mode 100644 index 00000000000..ea8f2a02793 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-range-ref.html @@ -0,0 +1,9 @@ + + +Reference: Compute kind of widget - fallback - range + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-ref.html deleted file mode 100644 index cc6d1029b51..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-ref.html +++ /dev/null @@ -1,44 +0,0 @@ - - -Reference: Compute kind of widget - fallback - -
    - a - - - - - - - - - - - - - - - - - - - - -
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-select-dropdown-box-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-select-dropdown-box-ref.html new file mode 100644 index 00000000000..bb038c8c3da --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-select-dropdown-box-ref.html @@ -0,0 +1,10 @@ + + +Reference: Compute kind of widget - fallback - select-dropdown-box + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-select-listbox-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-select-listbox-ref.html new file mode 100644 index 00000000000..46feae487f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-select-listbox-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback - select-listbox + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-select-menulist-button-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-select-menulist-button-ref.html new file mode 100644 index 00000000000..6f3ca4f5a1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-select-menulist-button-ref.html @@ -0,0 +1,10 @@ + + +Reference: Compute kind of widget - fallback - select-menulist-button + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-textarea-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-textarea-ref.html new file mode 100644 index 00000000000..863e58a6690 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-fallback-textarea-ref.html @@ -0,0 +1,12 @@ + + +Reference: Compute kind of widget - fallback - textarea + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-attachment-001.html deleted file mode 100644 index dfdb30764a0..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-attachment-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-clip-001.html deleted file mode 100644 index cf6862fa69a..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-clip-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html deleted file mode 100644 index f080bae232a..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-image-001.html deleted file mode 100644 index b5b5231eb16..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-image-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-origin-001.html deleted file mode 100644 index d826c0b1669..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-origin-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html deleted file mode 100644 index 290d12356f8..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-size-001.html deleted file mode 100644 index 105a439aa9f..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-size-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-color-001.html deleted file mode 100644 index 480a2926cba..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-color-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-style-001.html deleted file mode 100644 index a6fac1a0982..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-style-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-width-001.html deleted file mode 100644 index a73d5b52d39..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-width-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html deleted file mode 100644 index c7be4f45cb0..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-style-001.html deleted file mode 100644 index 6670cb671be..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-style-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-width-001.html deleted file mode 100644 index 13b932a8485..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-width-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-color-001.html deleted file mode 100644 index 8cb1ed7a985..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-color-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html deleted file mode 100644 index 6f9af43c471..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-right-radius-001.html deleted file mode 100644 index 356457f3b06..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-right-radius-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-style-001.html deleted file mode 100644 index 0173f020910..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-style-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html deleted file mode 100644 index f8d2f84ff61..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-end-radius-001.html deleted file mode 100644 index 9fa13b481eb..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-end-radius-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html deleted file mode 100644 index 7f3667e2852..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-outset-001.html deleted file mode 100644 index dc3c8722400..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-outset-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-repeat-001.html deleted file mode 100644 index 388ad9acd3f..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-repeat-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html deleted file mode 100644 index 971239c7d75..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html deleted file mode 100644 index 96795ed435b..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-width-001.html deleted file mode 100644 index ca57002d6ee..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-width-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-color-001.html deleted file mode 100644 index 9ecfdfbeb3b..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-color-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-style-001.html deleted file mode 100644 index 2a5496ecd5a..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-style-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html deleted file mode 100644 index 62694106e48..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-color-001.html deleted file mode 100644 index eee53b109c9..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-color-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html deleted file mode 100644 index b8e980eb18b..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-width-001.html deleted file mode 100644 index 999028eecd4..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-width-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-color-001.html deleted file mode 100644 index 9d35d5a67d5..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-color-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html deleted file mode 100644 index 0c3834ae80a..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-width-001.html deleted file mode 100644 index b9db35da822..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-width-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-color-001.html deleted file mode 100644 index 4be6ac5969c..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-color-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-style-001.html deleted file mode 100644 index 0bb296c65cf..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-style-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-width-001.html deleted file mode 100644 index 8a0436d2638..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-width-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-end-radius-001.html deleted file mode 100644 index 27c8a5e33ba..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-end-radius-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html deleted file mode 100644 index 8f1369d505c..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-color-001.html deleted file mode 100644 index b967850562c..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-color-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-left-radius-001.html deleted file mode 100644 index 937cb0226ad..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-left-radius-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html deleted file mode 100644 index f2abad91c9d..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html deleted file mode 100644 index 921933c283e..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html deleted file mode 100644 index ff0fecf6983..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for widgets - - - - - -
    - a - - - - - - - - - - - - - - - - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-attachment-001.html new file mode 100644 index 00000000000..065fc6dca60 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-clip-001.html new file mode 100644 index 00000000000..7059583860f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-color-001.html new file mode 100644 index 00000000000..bcef8dcd985 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-image-001.html new file mode 100644 index 00000000000..c2ff3ad6df2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-origin-001.html new file mode 100644 index 00000000000..3e6a287e3fa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-position-001.html new file mode 100644 index 00000000000..8c35eb79fb3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-size-001.html new file mode 100644 index 00000000000..a177d5c50b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-color-001.html new file mode 100644 index 00000000000..bc1220b5662 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-style-001.html new file mode 100644 index 00000000000..326ccec4469 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-width-001.html new file mode 100644 index 00000000000..6d88e2a8e42 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-start-color-001.html new file mode 100644 index 00000000000..30f3867c5ee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-start-style-001.html new file mode 100644 index 00000000000..69f21ffab2f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-start-width-001.html new file mode 100644 index 00000000000..05b17053bee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-color-001.html new file mode 100644 index 00000000000..d18b6a11738 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..1da373a781a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..cd2ccf665f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-style-001.html new file mode 100644 index 00000000000..b7aad05558e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-width-001.html new file mode 100644 index 00000000000..ecdf09ac0d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-end-end-radius-001.html new file mode 100644 index 00000000000..b7a4342845b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-end-start-radius-001.html new file mode 100644 index 00000000000..3756b2a2019 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-outset-001.html new file mode 100644 index 00000000000..8ad71780de8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-repeat-001.html new file mode 100644 index 00000000000..a212ee7ef39 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-slice-001.html new file mode 100644 index 00000000000..d3f87ebe5ab --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-source-001.html new file mode 100644 index 00000000000..86ec41a3ff3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-width-001.html new file mode 100644 index 00000000000..53df9ea1526 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-end-color-001.html new file mode 100644 index 00000000000..85079f5c41f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-end-style-001.html new file mode 100644 index 00000000000..ce94d07364d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-end-width-001.html new file mode 100644 index 00000000000..ea361edbabd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-start-color-001.html new file mode 100644 index 00000000000..7bbbbf97a0c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-start-style-001.html new file mode 100644 index 00000000000..0ab244c5344 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-start-width-001.html new file mode 100644 index 00000000000..a2fe2f5a70a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-left-color-001.html new file mode 100644 index 00000000000..ca8e684b4ef --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-left-style-001.html new file mode 100644 index 00000000000..e44cf3a2b62 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-left-width-001.html new file mode 100644 index 00000000000..561c51de03e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-color-001.html new file mode 100644 index 00000000000..1edc31d98db --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-style-001.html new file mode 100644 index 00000000000..79a59df4cb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-width-001.html new file mode 100644 index 00000000000..5125890ff0a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-start-end-radius-001.html new file mode 100644 index 00000000000..39972ab69e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-start-start-radius-001.html new file mode 100644 index 00000000000..47e454e4caa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-color-001.html new file mode 100644 index 00000000000..6a331379ae4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-left-radius-001.html new file mode 100644 index 00000000000..83d5437b2cd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-right-radius-001.html new file mode 100644 index 00000000000..ad7801693c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-style-001.html new file mode 100644 index 00000000000..41b55bdc108 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-width-001.html new file mode 100644 index 00000000000..ec223105312 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-attachment-001.html new file mode 100644 index 00000000000..854146dbeda --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-clip-001.html new file mode 100644 index 00000000000..c58d84534de --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-color-001.html new file mode 100644 index 00000000000..e1d5e7379a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-image-001.html new file mode 100644 index 00000000000..c37517e78f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-origin-001.html new file mode 100644 index 00000000000..8a7f9502b0f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-position-001.html new file mode 100644 index 00000000000..3edc2785edf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-size-001.html new file mode 100644 index 00000000000..94816e45ae5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-end-color-001.html new file mode 100644 index 00000000000..fe6e5c970e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-end-style-001.html new file mode 100644 index 00000000000..489c662119b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-end-width-001.html new file mode 100644 index 00000000000..f257590b5fd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-start-color-001.html new file mode 100644 index 00000000000..d1b1c63bb20 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-start-style-001.html new file mode 100644 index 00000000000..6da6d53162b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-start-width-001.html new file mode 100644 index 00000000000..c18824f1021 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-color-001.html new file mode 100644 index 00000000000..d8dde9fa774 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..ea8b93a771e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..4778156079e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-style-001.html new file mode 100644 index 00000000000..f4ccb3ee9cf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-width-001.html new file mode 100644 index 00000000000..dcc9e39f330 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-end-end-radius-001.html new file mode 100644 index 00000000000..9f220014103 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-end-start-radius-001.html new file mode 100644 index 00000000000..453d687a8fd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-outset-001.html new file mode 100644 index 00000000000..1102fce1527 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-repeat-001.html new file mode 100644 index 00000000000..7b821272c79 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-slice-001.html new file mode 100644 index 00000000000..d7694d67780 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-source-001.html new file mode 100644 index 00000000000..0e274628f31 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-width-001.html new file mode 100644 index 00000000000..c485feab751 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-end-color-001.html new file mode 100644 index 00000000000..0220ac227cb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-end-style-001.html new file mode 100644 index 00000000000..83f0ee6dc70 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-end-width-001.html new file mode 100644 index 00000000000..aca82890edc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-start-color-001.html new file mode 100644 index 00000000000..7c3ea0e32cf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-start-style-001.html new file mode 100644 index 00000000000..329b717ca08 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-start-width-001.html new file mode 100644 index 00000000000..9d5ca5f95a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-left-color-001.html new file mode 100644 index 00000000000..00397b9cd30 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-left-style-001.html new file mode 100644 index 00000000000..415c45d8ae0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-left-width-001.html new file mode 100644 index 00000000000..0653e960926 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-right-color-001.html new file mode 100644 index 00000000000..f17035b651b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-right-style-001.html new file mode 100644 index 00000000000..fd96b80bfae --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-right-width-001.html new file mode 100644 index 00000000000..9eb0bfd4835 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-start-end-radius-001.html new file mode 100644 index 00000000000..c6f7b9c70fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-start-start-radius-001.html new file mode 100644 index 00000000000..c3473dff435 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-color-001.html new file mode 100644 index 00000000000..40671ee01ed --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-left-radius-001.html new file mode 100644 index 00000000000..bf8cb7150a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-right-radius-001.html new file mode 100644 index 00000000000..bbaed9a3912 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-style-001.html new file mode 100644 index 00000000000..bb9b393d5d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-width-001.html new file mode 100644 index 00000000000..3260a9b13d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for checkbox-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-attachment-001.html new file mode 100644 index 00000000000..a62ebcba168 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-clip-001.html new file mode 100644 index 00000000000..0da878e3c83 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-color-001.html new file mode 100644 index 00000000000..3adca19760a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-image-001.html new file mode 100644 index 00000000000..79d16f7a5fe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-origin-001.html new file mode 100644 index 00000000000..30be831c55c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-position-001.html new file mode 100644 index 00000000000..a72860779ad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-size-001.html new file mode 100644 index 00000000000..68f34df7686 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-end-color-001.html new file mode 100644 index 00000000000..7ab8c50eda6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-end-style-001.html new file mode 100644 index 00000000000..5fef1705dde --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-end-width-001.html new file mode 100644 index 00000000000..de753d9cf57 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-start-color-001.html new file mode 100644 index 00000000000..639e53697bb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-start-style-001.html new file mode 100644 index 00000000000..66138c59546 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-start-width-001.html new file mode 100644 index 00000000000..7e338d3d27e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-color-001.html new file mode 100644 index 00000000000..33e55cc3b7c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..70eec00b9ac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..196edd37f01 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-style-001.html new file mode 100644 index 00000000000..483a2008f2b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-width-001.html new file mode 100644 index 00000000000..0f6a26e5476 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-end-end-radius-001.html new file mode 100644 index 00000000000..877568e595f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-end-start-radius-001.html new file mode 100644 index 00000000000..3b553d16644 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-outset-001.html new file mode 100644 index 00000000000..9aca0eb08ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-repeat-001.html new file mode 100644 index 00000000000..2195aa4d09f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-slice-001.html new file mode 100644 index 00000000000..b2d5a707106 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-source-001.html new file mode 100644 index 00000000000..5a4f6f54eda --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-width-001.html new file mode 100644 index 00000000000..394163c402e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-end-color-001.html new file mode 100644 index 00000000000..c8beca67c4f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-end-style-001.html new file mode 100644 index 00000000000..2cca2308d3e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-end-width-001.html new file mode 100644 index 00000000000..1e78d303b33 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-start-color-001.html new file mode 100644 index 00000000000..dc78893a4e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-start-style-001.html new file mode 100644 index 00000000000..69fc22e3b63 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-start-width-001.html new file mode 100644 index 00000000000..e726ac45a10 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-left-color-001.html new file mode 100644 index 00000000000..06123f7d3fe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-left-style-001.html new file mode 100644 index 00000000000..8a467f2f02f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-left-width-001.html new file mode 100644 index 00000000000..1631967fb4d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-right-color-001.html new file mode 100644 index 00000000000..3f80a29957c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-right-style-001.html new file mode 100644 index 00000000000..47b974b4a9c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-right-width-001.html new file mode 100644 index 00000000000..7a640d231d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-start-end-radius-001.html new file mode 100644 index 00000000000..836685bc1ab --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-start-start-radius-001.html new file mode 100644 index 00000000000..1b8d113fbe2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-color-001.html new file mode 100644 index 00000000000..3ca939ab720 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-left-radius-001.html new file mode 100644 index 00000000000..6e789f088f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-right-radius-001.html new file mode 100644 index 00000000000..7f4b9195f84 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-style-001.html new file mode 100644 index 00000000000..840f69afcc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-width-001.html new file mode 100644 index 00000000000..886996b710b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-color-input-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for color-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-attachment-001.html new file mode 100644 index 00000000000..7b112f084ad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-clip-001.html new file mode 100644 index 00000000000..53f79ab38cd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-color-001.html new file mode 100644 index 00000000000..2209bae6c01 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-image-001.html new file mode 100644 index 00000000000..e385afe4aff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-origin-001.html new file mode 100644 index 00000000000..9d3386711fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-position-001.html new file mode 100644 index 00000000000..6d70a3f546a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-size-001.html new file mode 100644 index 00000000000..fabd5b383cc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-end-color-001.html new file mode 100644 index 00000000000..16b07513a56 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-end-style-001.html new file mode 100644 index 00000000000..c5941567e18 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-end-width-001.html new file mode 100644 index 00000000000..c189260b1b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-start-color-001.html new file mode 100644 index 00000000000..f04c3729b76 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-start-style-001.html new file mode 100644 index 00000000000..41ba3b7c27f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-start-width-001.html new file mode 100644 index 00000000000..9738cd85285 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-color-001.html new file mode 100644 index 00000000000..f8d784aeb1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..cac8afec0a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..3f64f28497a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-style-001.html new file mode 100644 index 00000000000..1d45f056611 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-width-001.html new file mode 100644 index 00000000000..04065781f73 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-end-end-radius-001.html new file mode 100644 index 00000000000..8ce8dc3962f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-end-start-radius-001.html new file mode 100644 index 00000000000..8f1acf3c9f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-outset-001.html new file mode 100644 index 00000000000..7bef8707940 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-repeat-001.html new file mode 100644 index 00000000000..fc3ebd45dd9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-slice-001.html new file mode 100644 index 00000000000..b6c908f422a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-source-001.html new file mode 100644 index 00000000000..44a4fbaa8c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-width-001.html new file mode 100644 index 00000000000..39d018507ce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-end-color-001.html new file mode 100644 index 00000000000..313eab3d7b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-end-style-001.html new file mode 100644 index 00000000000..ce6cb72d030 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-end-width-001.html new file mode 100644 index 00000000000..31e49065313 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-start-color-001.html new file mode 100644 index 00000000000..60f8eeb08d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-start-style-001.html new file mode 100644 index 00000000000..927f0695ff9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-start-width-001.html new file mode 100644 index 00000000000..ebb88b67c55 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-left-color-001.html new file mode 100644 index 00000000000..eaeeddc8bb6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-left-style-001.html new file mode 100644 index 00000000000..171638f6095 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-left-width-001.html new file mode 100644 index 00000000000..07b4ba5cf3e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-right-color-001.html new file mode 100644 index 00000000000..ee08a596047 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-right-style-001.html new file mode 100644 index 00000000000..622da69d72c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-right-width-001.html new file mode 100644 index 00000000000..cb0368dd053 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-start-end-radius-001.html new file mode 100644 index 00000000000..ae98634e8cd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-start-start-radius-001.html new file mode 100644 index 00000000000..45f7debe9db --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-color-001.html new file mode 100644 index 00000000000..985b3d528e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-left-radius-001.html new file mode 100644 index 00000000000..5b5636609cc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-right-radius-001.html new file mode 100644 index 00000000000..f0b7989c736 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-style-001.html new file mode 100644 index 00000000000..b58218e3dae --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-width-001.html new file mode 100644 index 00000000000..e20e258e8ad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for input-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-attachment-001.html new file mode 100644 index 00000000000..a7845bc7dcf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-clip-001.html new file mode 100644 index 00000000000..5bb8e7d5d2a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-color-001.html new file mode 100644 index 00000000000..1780d56a417 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-image-001.html new file mode 100644 index 00000000000..07527ae7db3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-origin-001.html new file mode 100644 index 00000000000..4e5b6c68ceb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-position-001.html new file mode 100644 index 00000000000..199e6465eb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-size-001.html new file mode 100644 index 00000000000..82d54e0c105 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-end-color-001.html new file mode 100644 index 00000000000..41038d25124 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-end-style-001.html new file mode 100644 index 00000000000..9c326f1e4a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-end-width-001.html new file mode 100644 index 00000000000..3f2611f0e8e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-start-color-001.html new file mode 100644 index 00000000000..a3252e39e6a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-start-style-001.html new file mode 100644 index 00000000000..6f737814138 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-start-width-001.html new file mode 100644 index 00000000000..1a671be3218 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-color-001.html new file mode 100644 index 00000000000..5ac0db7d1ed --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..df3608a14ad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..3cc95934b42 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-style-001.html new file mode 100644 index 00000000000..b146476a505 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-width-001.html new file mode 100644 index 00000000000..00dfbddbe69 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-end-end-radius-001.html new file mode 100644 index 00000000000..34eaf07fd72 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-end-start-radius-001.html new file mode 100644 index 00000000000..42aa29cada2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-outset-001.html new file mode 100644 index 00000000000..368bb3a7c7f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-repeat-001.html new file mode 100644 index 00000000000..5f0ba37f9dc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-slice-001.html new file mode 100644 index 00000000000..c611ad59b73 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-source-001.html new file mode 100644 index 00000000000..f84fcfc0fcd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-width-001.html new file mode 100644 index 00000000000..1936517741f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-end-color-001.html new file mode 100644 index 00000000000..db6e2d64c2a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-end-style-001.html new file mode 100644 index 00000000000..13502447a90 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-end-width-001.html new file mode 100644 index 00000000000..25121c822a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-start-color-001.html new file mode 100644 index 00000000000..f01b339b37c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-start-style-001.html new file mode 100644 index 00000000000..3ac0e472600 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-start-width-001.html new file mode 100644 index 00000000000..7e0c23adc7e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-left-color-001.html new file mode 100644 index 00000000000..6309f000f33 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-left-style-001.html new file mode 100644 index 00000000000..c502e833a6a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-left-width-001.html new file mode 100644 index 00000000000..7c8e95dbeae --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-right-color-001.html new file mode 100644 index 00000000000..2bbbcf3584a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-right-style-001.html new file mode 100644 index 00000000000..4b1ea450882 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-right-width-001.html new file mode 100644 index 00000000000..02b93b0b7bc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-start-end-radius-001.html new file mode 100644 index 00000000000..4beeb88981c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-start-start-radius-001.html new file mode 100644 index 00000000000..019b6a52e5a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-color-001.html new file mode 100644 index 00000000000..6facf31f992 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-left-radius-001.html new file mode 100644 index 00000000000..2ba3e038dd4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-right-radius-001.html new file mode 100644 index 00000000000..d15f23413b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-style-001.html new file mode 100644 index 00000000000..d5bebef7a34 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-width-001.html new file mode 100644 index 00000000000..e705cd422d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-reset-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for input-reset + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-attachment-001.html new file mode 100644 index 00000000000..cd69159ee9a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-clip-001.html new file mode 100644 index 00000000000..1343ebcf0c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-color-001.html new file mode 100644 index 00000000000..882ca799985 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-image-001.html new file mode 100644 index 00000000000..769cf45b9f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-origin-001.html new file mode 100644 index 00000000000..035cfdf25c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-position-001.html new file mode 100644 index 00000000000..5267fd2c78c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-size-001.html new file mode 100644 index 00000000000..73aca9954a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-end-color-001.html new file mode 100644 index 00000000000..9d954d5714a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-end-style-001.html new file mode 100644 index 00000000000..81761e4671e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-end-width-001.html new file mode 100644 index 00000000000..e6b37c9b78d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-color-001.html new file mode 100644 index 00000000000..7bed3fc399e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-style-001.html new file mode 100644 index 00000000000..854d6fb98e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-width-001.html new file mode 100644 index 00000000000..9ad91b7ba44 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-color-001.html new file mode 100644 index 00000000000..093c18c7035 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..a33640e2a85 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..21ec7d1f872 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-style-001.html new file mode 100644 index 00000000000..26b31f93312 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-width-001.html new file mode 100644 index 00000000000..677a04ef161 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-end-end-radius-001.html new file mode 100644 index 00000000000..426b75464e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-end-start-radius-001.html new file mode 100644 index 00000000000..58f7487c99d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-outset-001.html new file mode 100644 index 00000000000..fe1d1f0cc2d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-repeat-001.html new file mode 100644 index 00000000000..611aaadce86 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-slice-001.html new file mode 100644 index 00000000000..fbd35beef90 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-source-001.html new file mode 100644 index 00000000000..73b90e28b02 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-width-001.html new file mode 100644 index 00000000000..53be3f24e18 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-end-color-001.html new file mode 100644 index 00000000000..5cef20ff8b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-end-style-001.html new file mode 100644 index 00000000000..01c62b51208 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-end-width-001.html new file mode 100644 index 00000000000..279ea4bd9d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-start-color-001.html new file mode 100644 index 00000000000..b4e93e5fb00 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-start-style-001.html new file mode 100644 index 00000000000..279a809043f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-start-width-001.html new file mode 100644 index 00000000000..99694bc67b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-left-color-001.html new file mode 100644 index 00000000000..608d5d2664e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-left-style-001.html new file mode 100644 index 00000000000..af85417326c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-left-width-001.html new file mode 100644 index 00000000000..c1dcc4fb9ed --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-right-color-001.html new file mode 100644 index 00000000000..b2c2200537d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-right-style-001.html new file mode 100644 index 00000000000..890770c8721 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-right-width-001.html new file mode 100644 index 00000000000..8128bb539fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-start-end-radius-001.html new file mode 100644 index 00000000000..c9dc8fc0344 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-start-start-radius-001.html new file mode 100644 index 00000000000..fe0f50c862c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-color-001.html new file mode 100644 index 00000000000..8e191355485 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-left-radius-001.html new file mode 100644 index 00000000000..00706e8e186 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-right-radius-001.html new file mode 100644 index 00000000000..d9eff0a7ede --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-style-001.html new file mode 100644 index 00000000000..687a1563742 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-width-001.html new file mode 100644 index 00000000000..8d21da1745b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for input-search + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-attachment-001.html new file mode 100644 index 00000000000..d686b71ecbe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-clip-001.html new file mode 100644 index 00000000000..5e5bb98b734 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-color-001.html new file mode 100644 index 00000000000..a9a4f9ce475 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-image-001.html new file mode 100644 index 00000000000..67ce5d447a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-origin-001.html new file mode 100644 index 00000000000..d64ea1c55c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-position-001.html new file mode 100644 index 00000000000..47328fa5506 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-size-001.html new file mode 100644 index 00000000000..801451bc4ae --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-end-color-001.html new file mode 100644 index 00000000000..35c2b259aa3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-end-style-001.html new file mode 100644 index 00000000000..02418ca51ad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-end-width-001.html new file mode 100644 index 00000000000..76ba5d545b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-start-color-001.html new file mode 100644 index 00000000000..5aa72d0032b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-start-style-001.html new file mode 100644 index 00000000000..5d6f0deb640 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-start-width-001.html new file mode 100644 index 00000000000..e1a0fe22c26 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-color-001.html new file mode 100644 index 00000000000..0429d4cf7b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..1ff1f9cf1c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..1a7b7521fd4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-style-001.html new file mode 100644 index 00000000000..f33d4b54243 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-width-001.html new file mode 100644 index 00000000000..f60665b61a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-end-end-radius-001.html new file mode 100644 index 00000000000..54109922601 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-end-start-radius-001.html new file mode 100644 index 00000000000..207216e61c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-outset-001.html new file mode 100644 index 00000000000..e54d46aeb20 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-repeat-001.html new file mode 100644 index 00000000000..c58d2436fdf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-slice-001.html new file mode 100644 index 00000000000..3d69aace321 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-source-001.html new file mode 100644 index 00000000000..0300383427f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-width-001.html new file mode 100644 index 00000000000..51b084ec8b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-end-color-001.html new file mode 100644 index 00000000000..b002409c935 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-end-style-001.html new file mode 100644 index 00000000000..6ecfaaeeafd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-end-width-001.html new file mode 100644 index 00000000000..33d53e4cb52 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-start-color-001.html new file mode 100644 index 00000000000..8a936bb270c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-start-style-001.html new file mode 100644 index 00000000000..5d43ac916bd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-start-width-001.html new file mode 100644 index 00000000000..a086c597625 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-left-color-001.html new file mode 100644 index 00000000000..647d0c1daaf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-left-style-001.html new file mode 100644 index 00000000000..8cd58bc9428 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-left-width-001.html new file mode 100644 index 00000000000..a70ed497c89 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-right-color-001.html new file mode 100644 index 00000000000..9b286548ef8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-right-style-001.html new file mode 100644 index 00000000000..69bc1fae3b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-right-width-001.html new file mode 100644 index 00000000000..6a918db51d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-start-end-radius-001.html new file mode 100644 index 00000000000..84cc06a594e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-start-start-radius-001.html new file mode 100644 index 00000000000..1481a5fcc30 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-color-001.html new file mode 100644 index 00000000000..d5f2c678177 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-left-radius-001.html new file mode 100644 index 00000000000..6de4bb323f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-right-radius-001.html new file mode 100644 index 00000000000..6a3055cc095 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-style-001.html new file mode 100644 index 00000000000..80099b9cef5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-width-001.html new file mode 100644 index 00000000000..152a473d57a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for input-search-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-attachment-001.html new file mode 100644 index 00000000000..b36f8cf5efa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-clip-001.html new file mode 100644 index 00000000000..88f96485a4b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-color-001.html new file mode 100644 index 00000000000..c5ebc0feae6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-image-001.html new file mode 100644 index 00000000000..2bee1793249 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-origin-001.html new file mode 100644 index 00000000000..f000839d1b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-position-001.html new file mode 100644 index 00000000000..1aea7465d56 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-size-001.html new file mode 100644 index 00000000000..0a92b03012c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-end-color-001.html new file mode 100644 index 00000000000..10c583ff72d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-end-style-001.html new file mode 100644 index 00000000000..009e62337e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-end-width-001.html new file mode 100644 index 00000000000..5d4c3e04c23 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-start-color-001.html new file mode 100644 index 00000000000..7b85ed264fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-start-style-001.html new file mode 100644 index 00000000000..db23cc0010c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-start-width-001.html new file mode 100644 index 00000000000..ea8943575a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-color-001.html new file mode 100644 index 00000000000..a0c6aeabd1d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..27368813f99 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..d876112e060 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-style-001.html new file mode 100644 index 00000000000..c08eacfb62e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-width-001.html new file mode 100644 index 00000000000..0f98fb5e43c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-end-end-radius-001.html new file mode 100644 index 00000000000..b7212ef44c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-end-start-radius-001.html new file mode 100644 index 00000000000..ca29a812604 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-outset-001.html new file mode 100644 index 00000000000..8505655ea41 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-repeat-001.html new file mode 100644 index 00000000000..42084e7d8b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-slice-001.html new file mode 100644 index 00000000000..03721a19fd6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-source-001.html new file mode 100644 index 00000000000..b768500ae85 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-width-001.html new file mode 100644 index 00000000000..cd28c59c28f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-end-color-001.html new file mode 100644 index 00000000000..7b1109ed257 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-end-style-001.html new file mode 100644 index 00000000000..47c7d1f49f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-end-width-001.html new file mode 100644 index 00000000000..2fde013d5bc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-start-color-001.html new file mode 100644 index 00000000000..debb7792402 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-start-style-001.html new file mode 100644 index 00000000000..4e260effb7f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-start-width-001.html new file mode 100644 index 00000000000..9caca2822fe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-left-color-001.html new file mode 100644 index 00000000000..7c5118375b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-left-style-001.html new file mode 100644 index 00000000000..8981d27e610 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-left-width-001.html new file mode 100644 index 00000000000..5b93b5bc3d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-right-color-001.html new file mode 100644 index 00000000000..243341d2121 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-right-style-001.html new file mode 100644 index 00000000000..be67b5327d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-right-width-001.html new file mode 100644 index 00000000000..bffb7dc6ac3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-start-end-radius-001.html new file mode 100644 index 00000000000..ab96454e0b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-start-start-radius-001.html new file mode 100644 index 00000000000..0af363c8945 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-color-001.html new file mode 100644 index 00000000000..9b62a7c5fca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-left-radius-001.html new file mode 100644 index 00000000000..b6a1cd34760 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-right-radius-001.html new file mode 100644 index 00000000000..48c4a8cbc7e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-style-001.html new file mode 100644 index 00000000000..de7b61f4a0d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-width-001.html new file mode 100644 index 00000000000..df2deefd7f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-submit-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for input-submit + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-attachment-001.html new file mode 100644 index 00000000000..9aa99504877 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-clip-001.html new file mode 100644 index 00000000000..e90ad46d577 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-color-001.html new file mode 100644 index 00000000000..10e5bfcc11d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-image-001.html new file mode 100644 index 00000000000..ab612a37137 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-origin-001.html new file mode 100644 index 00000000000..8b447fc78be --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-position-001.html new file mode 100644 index 00000000000..e75ae6369c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-size-001.html new file mode 100644 index 00000000000..6e182151efc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-end-color-001.html new file mode 100644 index 00000000000..00536269b17 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-end-style-001.html new file mode 100644 index 00000000000..460aab47c63 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-end-width-001.html new file mode 100644 index 00000000000..bfe0590c9eb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-start-color-001.html new file mode 100644 index 00000000000..a99decb6937 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-start-style-001.html new file mode 100644 index 00000000000..fc3ac1a2fc0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-start-width-001.html new file mode 100644 index 00000000000..9fa513af7aa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-color-001.html new file mode 100644 index 00000000000..2eb97b2d9c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..34ffa2d2b37 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..e889656af8f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-style-001.html new file mode 100644 index 00000000000..1afdb4b4862 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-width-001.html new file mode 100644 index 00000000000..6540d05fa61 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-end-end-radius-001.html new file mode 100644 index 00000000000..98735e9c01f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-end-start-radius-001.html new file mode 100644 index 00000000000..6dd419e22d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-outset-001.html new file mode 100644 index 00000000000..fc46ace6cde --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-repeat-001.html new file mode 100644 index 00000000000..709485ffc30 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-slice-001.html new file mode 100644 index 00000000000..1b391cceec4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-source-001.html new file mode 100644 index 00000000000..2523a8261c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-width-001.html new file mode 100644 index 00000000000..3f22013eee6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-end-color-001.html new file mode 100644 index 00000000000..294cc707d02 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-end-style-001.html new file mode 100644 index 00000000000..97a9a5dcfc4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-end-width-001.html new file mode 100644 index 00000000000..e0035f2d79a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-start-color-001.html new file mode 100644 index 00000000000..f4b3974ab47 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-start-style-001.html new file mode 100644 index 00000000000..e2b1ca7c7a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-start-width-001.html new file mode 100644 index 00000000000..dc07a0ed82e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-left-color-001.html new file mode 100644 index 00000000000..65fd37f7e0f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-left-style-001.html new file mode 100644 index 00000000000..0c5fd539b61 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-left-width-001.html new file mode 100644 index 00000000000..5e8e54ef9e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-right-color-001.html new file mode 100644 index 00000000000..91385eb589c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-right-style-001.html new file mode 100644 index 00000000000..8fe090fc33a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-right-width-001.html new file mode 100644 index 00000000000..cb3470e0007 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-start-end-radius-001.html new file mode 100644 index 00000000000..d8ca285dfc1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-start-start-radius-001.html new file mode 100644 index 00000000000..b3c94b3388b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-color-001.html new file mode 100644 index 00000000000..e57dba8c03f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-left-radius-001.html new file mode 100644 index 00000000000..d408d75db39 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-right-radius-001.html new file mode 100644 index 00000000000..a39e8fff1fa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-style-001.html new file mode 100644 index 00000000000..cd4fcc4b103 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-width-001.html new file mode 100644 index 00000000000..21185f98908 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for input-text + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-attachment-001.html new file mode 100644 index 00000000000..b68f8ee1cce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-clip-001.html new file mode 100644 index 00000000000..417f7154144 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-color-001.html new file mode 100644 index 00000000000..52e07c3f036 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-image-001.html new file mode 100644 index 00000000000..27c6a2668fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-origin-001.html new file mode 100644 index 00000000000..06963ba20d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-position-001.html new file mode 100644 index 00000000000..e6e1c180bef --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-size-001.html new file mode 100644 index 00000000000..0fec1738a7a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-end-color-001.html new file mode 100644 index 00000000000..a35424ba40a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-end-style-001.html new file mode 100644 index 00000000000..471287ca745 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-end-width-001.html new file mode 100644 index 00000000000..7010081f1b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-start-color-001.html new file mode 100644 index 00000000000..c8861b4a765 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-start-style-001.html new file mode 100644 index 00000000000..510214f2eeb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-start-width-001.html new file mode 100644 index 00000000000..c9ebdbebccd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-color-001.html new file mode 100644 index 00000000000..8db0902fff0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..8bee975ead6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..00ac753675b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-style-001.html new file mode 100644 index 00000000000..ac19679451f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-width-001.html new file mode 100644 index 00000000000..c18b4dcf0aa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-end-end-radius-001.html new file mode 100644 index 00000000000..bb8fa354bb0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-end-start-radius-001.html new file mode 100644 index 00000000000..12638230685 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-outset-001.html new file mode 100644 index 00000000000..ab9b973ffa2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-repeat-001.html new file mode 100644 index 00000000000..32eb2a38ffc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-slice-001.html new file mode 100644 index 00000000000..1a6486e9d14 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-source-001.html new file mode 100644 index 00000000000..2ae8d4d4751 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-width-001.html new file mode 100644 index 00000000000..f22d5bfa5f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-end-color-001.html new file mode 100644 index 00000000000..86c142554b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-end-style-001.html new file mode 100644 index 00000000000..dd0df7f55b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-end-width-001.html new file mode 100644 index 00000000000..31ef531d5a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-start-color-001.html new file mode 100644 index 00000000000..b721fb52119 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-start-style-001.html new file mode 100644 index 00000000000..a521fa1a91b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-start-width-001.html new file mode 100644 index 00000000000..d8ad23661ee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-left-color-001.html new file mode 100644 index 00000000000..c2ec8d32693 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-left-style-001.html new file mode 100644 index 00000000000..33c793aed53 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-left-width-001.html new file mode 100644 index 00000000000..f8d2311a08d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-right-color-001.html new file mode 100644 index 00000000000..6affa83d960 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-right-style-001.html new file mode 100644 index 00000000000..4d508dbb30a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-right-width-001.html new file mode 100644 index 00000000000..c32ba83dbf3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-start-end-radius-001.html new file mode 100644 index 00000000000..62be943c758 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-start-start-radius-001.html new file mode 100644 index 00000000000..84362f3e8d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-color-001.html new file mode 100644 index 00000000000..f41ae3c6234 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-left-radius-001.html new file mode 100644 index 00000000000..ec8ed2996cb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-right-radius-001.html new file mode 100644 index 00000000000..9c29f074f80 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-style-001.html new file mode 100644 index 00000000000..34c6b54a1d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-width-001.html new file mode 100644 index 00000000000..73b8261ae65 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-link-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for link + + + + + +
    + a +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-attachment-001.html new file mode 100644 index 00000000000..f9760122e9f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-clip-001.html new file mode 100644 index 00000000000..dd353eb00ac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-color-001.html new file mode 100644 index 00000000000..2d6f903a06b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-image-001.html new file mode 100644 index 00000000000..2217eba4095 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-origin-001.html new file mode 100644 index 00000000000..8c2321227de --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-position-001.html new file mode 100644 index 00000000000..b82a4981195 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-size-001.html new file mode 100644 index 00000000000..2e3fa56313c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-end-color-001.html new file mode 100644 index 00000000000..2b0742dec12 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-end-style-001.html new file mode 100644 index 00000000000..cf733efffa1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-end-width-001.html new file mode 100644 index 00000000000..44bcd7d5901 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-start-color-001.html new file mode 100644 index 00000000000..c03b5eb0124 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-start-style-001.html new file mode 100644 index 00000000000..5ed90d36842 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-start-width-001.html new file mode 100644 index 00000000000..0dae7defc19 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-color-001.html new file mode 100644 index 00000000000..bc3d1bb8e7e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..aad197d1923 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..2ea501c5ce3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-style-001.html new file mode 100644 index 00000000000..887fe56ec67 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-width-001.html new file mode 100644 index 00000000000..5af8fffb417 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-end-end-radius-001.html new file mode 100644 index 00000000000..bacfb1d979b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-end-start-radius-001.html new file mode 100644 index 00000000000..0a4d9bcd327 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-outset-001.html new file mode 100644 index 00000000000..f89f6c8c105 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-repeat-001.html new file mode 100644 index 00000000000..c87a7194a78 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-slice-001.html new file mode 100644 index 00000000000..ebb7d246798 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-source-001.html new file mode 100644 index 00000000000..a823e2281c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-width-001.html new file mode 100644 index 00000000000..c0d4f43d6a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-end-color-001.html new file mode 100644 index 00000000000..624c594d416 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-end-style-001.html new file mode 100644 index 00000000000..233c4f2811f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-end-width-001.html new file mode 100644 index 00000000000..4d25da679a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-start-color-001.html new file mode 100644 index 00000000000..49d0c1d9f7b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-start-style-001.html new file mode 100644 index 00000000000..0a48844deeb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-start-width-001.html new file mode 100644 index 00000000000..ae7382c574a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-left-color-001.html new file mode 100644 index 00000000000..f5cde670ff1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-left-style-001.html new file mode 100644 index 00000000000..48c17401468 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-left-width-001.html new file mode 100644 index 00000000000..0aca1fbaa7c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-right-color-001.html new file mode 100644 index 00000000000..b7b2360792b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-right-style-001.html new file mode 100644 index 00000000000..24d4b2eecaa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-right-width-001.html new file mode 100644 index 00000000000..a3659d56629 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-start-end-radius-001.html new file mode 100644 index 00000000000..ac4ec661e0c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-start-start-radius-001.html new file mode 100644 index 00000000000..62d5d57d2b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-color-001.html new file mode 100644 index 00000000000..28210d6f675 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-left-radius-001.html new file mode 100644 index 00000000000..cf25cc48944 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-right-radius-001.html new file mode 100644 index 00000000000..24f15a54b81 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-style-001.html new file mode 100644 index 00000000000..37ba183f770 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-width-001.html new file mode 100644 index 00000000000..c10fce34f46 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-meter-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for meter + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-attachment-001.html new file mode 100644 index 00000000000..b85186c680e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-clip-001.html new file mode 100644 index 00000000000..e3df1f06a2b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-color-001.html new file mode 100644 index 00000000000..8e935212c75 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-image-001.html new file mode 100644 index 00000000000..87e895e0439 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-origin-001.html new file mode 100644 index 00000000000..a4958abd240 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-position-001.html new file mode 100644 index 00000000000..ed117a9d977 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-size-001.html new file mode 100644 index 00000000000..3047ef8414f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-end-color-001.html new file mode 100644 index 00000000000..3f0846230fd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-end-style-001.html new file mode 100644 index 00000000000..1cddf916cc4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-end-width-001.html new file mode 100644 index 00000000000..fe21ae809fa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-start-color-001.html new file mode 100644 index 00000000000..67b5b8330e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-start-style-001.html new file mode 100644 index 00000000000..5359a78b25d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-start-width-001.html new file mode 100644 index 00000000000..1019a98b3e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-color-001.html new file mode 100644 index 00000000000..366236c7044 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..6dce72a618d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..86eb1e7e762 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-style-001.html new file mode 100644 index 00000000000..900c7961bac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-width-001.html new file mode 100644 index 00000000000..67e97920d24 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-end-end-radius-001.html new file mode 100644 index 00000000000..0f78fb7c169 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-end-start-radius-001.html new file mode 100644 index 00000000000..9f74da94cb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-outset-001.html new file mode 100644 index 00000000000..306c1611a0a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-repeat-001.html new file mode 100644 index 00000000000..2ba0e04b0df --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-slice-001.html new file mode 100644 index 00000000000..42d6560f9c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-source-001.html new file mode 100644 index 00000000000..80e6fdcc2b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-width-001.html new file mode 100644 index 00000000000..5086cbae921 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-end-color-001.html new file mode 100644 index 00000000000..88427b7892a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-end-style-001.html new file mode 100644 index 00000000000..e16bb5a9488 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-end-width-001.html new file mode 100644 index 00000000000..88f5615387b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-start-color-001.html new file mode 100644 index 00000000000..a94c23d7170 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-start-style-001.html new file mode 100644 index 00000000000..479a0faa2d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-start-width-001.html new file mode 100644 index 00000000000..480fbc72079 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-left-color-001.html new file mode 100644 index 00000000000..0f6a3c6fcba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-left-style-001.html new file mode 100644 index 00000000000..aab0719b9b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-left-width-001.html new file mode 100644 index 00000000000..6c24d4e7337 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-right-color-001.html new file mode 100644 index 00000000000..2f0aa1351cd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-right-style-001.html new file mode 100644 index 00000000000..02dfe722a0e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-right-width-001.html new file mode 100644 index 00000000000..4f438b53209 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-start-end-radius-001.html new file mode 100644 index 00000000000..bdab3fd0ec3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-start-start-radius-001.html new file mode 100644 index 00000000000..5c5f06890fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-color-001.html new file mode 100644 index 00000000000..62c0d5f2b9f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-left-radius-001.html new file mode 100644 index 00000000000..7c6b62f8269 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-right-radius-001.html new file mode 100644 index 00000000000..f412a90350b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-style-001.html new file mode 100644 index 00000000000..c8601df503c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-width-001.html new file mode 100644 index 00000000000..ea5c5c49faa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-progress-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for progress + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-attachment-001.html new file mode 100644 index 00000000000..8c7e8ea16ea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-clip-001.html new file mode 100644 index 00000000000..cbb6a7ec101 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-color-001.html new file mode 100644 index 00000000000..ce5b79bbe27 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-image-001.html new file mode 100644 index 00000000000..e15e9e4c158 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-origin-001.html new file mode 100644 index 00000000000..0e81e6fe384 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-position-001.html new file mode 100644 index 00000000000..4fa8e7af26e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-size-001.html new file mode 100644 index 00000000000..1a989ed6dff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-end-color-001.html new file mode 100644 index 00000000000..d7708ce4cc2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-end-style-001.html new file mode 100644 index 00000000000..4707f09aa94 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-end-width-001.html new file mode 100644 index 00000000000..a0098cc0ecc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-start-color-001.html new file mode 100644 index 00000000000..0375cd802f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-start-style-001.html new file mode 100644 index 00000000000..ec17b48c6bd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-start-width-001.html new file mode 100644 index 00000000000..2e3d9443cd2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-color-001.html new file mode 100644 index 00000000000..1cbebba1d72 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..f9c253da89d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..5f1458598c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-style-001.html new file mode 100644 index 00000000000..96c89322010 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-width-001.html new file mode 100644 index 00000000000..be80a5af60b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-end-end-radius-001.html new file mode 100644 index 00000000000..f03b3ffdc2f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-end-start-radius-001.html new file mode 100644 index 00000000000..954a4ff433e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-outset-001.html new file mode 100644 index 00000000000..89653068567 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-repeat-001.html new file mode 100644 index 00000000000..662f9ca648b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-slice-001.html new file mode 100644 index 00000000000..f15ebe31a75 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-source-001.html new file mode 100644 index 00000000000..539ebb7b5d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-width-001.html new file mode 100644 index 00000000000..a17d8475dd6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-end-color-001.html new file mode 100644 index 00000000000..87720700681 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-end-style-001.html new file mode 100644 index 00000000000..271f4e37fd7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-end-width-001.html new file mode 100644 index 00000000000..7f61c6fb593 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-start-color-001.html new file mode 100644 index 00000000000..6c25f25d174 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-start-style-001.html new file mode 100644 index 00000000000..5ced60d4bab --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-start-width-001.html new file mode 100644 index 00000000000..f39286a771f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-left-color-001.html new file mode 100644 index 00000000000..b19deb2c662 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-left-style-001.html new file mode 100644 index 00000000000..56e7d9ef187 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-left-width-001.html new file mode 100644 index 00000000000..2ee2531b681 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-right-color-001.html new file mode 100644 index 00000000000..8fbb9f4115f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-right-style-001.html new file mode 100644 index 00000000000..df88bff3fc9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-right-width-001.html new file mode 100644 index 00000000000..22ce6e076fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-start-end-radius-001.html new file mode 100644 index 00000000000..360b827151a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-start-start-radius-001.html new file mode 100644 index 00000000000..6a6904d0137 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-color-001.html new file mode 100644 index 00000000000..08086865d66 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-left-radius-001.html new file mode 100644 index 00000000000..426cae160ec --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-right-radius-001.html new file mode 100644 index 00000000000..b95427553ea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-style-001.html new file mode 100644 index 00000000000..ead7b86ce6f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-width-001.html new file mode 100644 index 00000000000..c2a867421b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-radio-input-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for radio-input + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-attachment-001.html new file mode 100644 index 00000000000..72c767a514b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-clip-001.html new file mode 100644 index 00000000000..790641dd9da --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-color-001.html new file mode 100644 index 00000000000..b3e18adffa8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-image-001.html new file mode 100644 index 00000000000..4043b25fe9a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-origin-001.html new file mode 100644 index 00000000000..a80b97b2a12 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-position-001.html new file mode 100644 index 00000000000..895faa00848 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-size-001.html new file mode 100644 index 00000000000..a3513799ae1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-end-color-001.html new file mode 100644 index 00000000000..557070fe80d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-end-style-001.html new file mode 100644 index 00000000000..b0748f3f5bc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-end-width-001.html new file mode 100644 index 00000000000..f5b075ac170 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-start-color-001.html new file mode 100644 index 00000000000..28a37eae6a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-start-style-001.html new file mode 100644 index 00000000000..3ff761c7211 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-start-width-001.html new file mode 100644 index 00000000000..78458b66081 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-color-001.html new file mode 100644 index 00000000000..fabdf0a492c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..4f4b4c6d919 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..5a0bdd2902a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-style-001.html new file mode 100644 index 00000000000..2478e65d1fd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-width-001.html new file mode 100644 index 00000000000..924356441be --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-end-end-radius-001.html new file mode 100644 index 00000000000..96b8ee95c23 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-end-start-radius-001.html new file mode 100644 index 00000000000..2c2e4ed67a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-outset-001.html new file mode 100644 index 00000000000..9890eae400c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-repeat-001.html new file mode 100644 index 00000000000..a3602ef1733 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-slice-001.html new file mode 100644 index 00000000000..0c8ffa168b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-source-001.html new file mode 100644 index 00000000000..60fcd035a1d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-width-001.html new file mode 100644 index 00000000000..59098eec896 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-end-color-001.html new file mode 100644 index 00000000000..16e2c1bd473 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-end-style-001.html new file mode 100644 index 00000000000..7e664810f31 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-end-width-001.html new file mode 100644 index 00000000000..eaff4997e6e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-start-color-001.html new file mode 100644 index 00000000000..163694169af --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-start-style-001.html new file mode 100644 index 00000000000..a5b216d1fa4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-start-width-001.html new file mode 100644 index 00000000000..0eb1f6ec6ff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-left-color-001.html new file mode 100644 index 00000000000..02135eae2d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-left-style-001.html new file mode 100644 index 00000000000..edef1998be4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-left-width-001.html new file mode 100644 index 00000000000..e9d2804bcd5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-right-color-001.html new file mode 100644 index 00000000000..fb20afa6e6c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-right-style-001.html new file mode 100644 index 00000000000..6f4bfe40689 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-right-width-001.html new file mode 100644 index 00000000000..03422cd5f3f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-start-end-radius-001.html new file mode 100644 index 00000000000..c5d4621893b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-start-start-radius-001.html new file mode 100644 index 00000000000..5c4a81f0643 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-color-001.html new file mode 100644 index 00000000000..a8b12f51b0b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-left-radius-001.html new file mode 100644 index 00000000000..0eefc064b21 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-right-radius-001.html new file mode 100644 index 00000000000..d43e98ee52f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-style-001.html new file mode 100644 index 00000000000..1e8dec3e85c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-width-001.html new file mode 100644 index 00000000000..a45f6b14278 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-range-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for range + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-attachment-001.html new file mode 100644 index 00000000000..9ba89442744 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-clip-001.html new file mode 100644 index 00000000000..719bec28ed4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-color-001.html new file mode 100644 index 00000000000..9092c41bd91 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-image-001.html new file mode 100644 index 00000000000..972c343dc84 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-origin-001.html new file mode 100644 index 00000000000..abc9acfc41f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-position-001.html new file mode 100644 index 00000000000..999fff42112 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-size-001.html new file mode 100644 index 00000000000..977bc0e8354 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-end-color-001.html new file mode 100644 index 00000000000..46bdb5b0e4c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-end-style-001.html new file mode 100644 index 00000000000..aa3788595a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-end-width-001.html new file mode 100644 index 00000000000..cebe998f899 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-start-color-001.html new file mode 100644 index 00000000000..9c238d57609 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-start-style-001.html new file mode 100644 index 00000000000..7061a367ba0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-start-width-001.html new file mode 100644 index 00000000000..34578a4782c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-color-001.html new file mode 100644 index 00000000000..d1a7a01295b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..1c70cd361c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..5185032c233 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-style-001.html new file mode 100644 index 00000000000..ceda4319545 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-width-001.html new file mode 100644 index 00000000000..3c43f47e594 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-end-end-radius-001.html new file mode 100644 index 00000000000..182c527cc53 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-end-start-radius-001.html new file mode 100644 index 00000000000..efbd14d7de4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-outset-001.html new file mode 100644 index 00000000000..5a0eb9beab1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-repeat-001.html new file mode 100644 index 00000000000..5ad2b2c0f83 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-slice-001.html new file mode 100644 index 00000000000..3993331322e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-source-001.html new file mode 100644 index 00000000000..9c9da2935a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-width-001.html new file mode 100644 index 00000000000..d03492c583f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-end-color-001.html new file mode 100644 index 00000000000..b8498148b64 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-end-style-001.html new file mode 100644 index 00000000000..13a75cc5cd6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-end-width-001.html new file mode 100644 index 00000000000..40d13678cca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-start-color-001.html new file mode 100644 index 00000000000..de4241fdf99 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-start-style-001.html new file mode 100644 index 00000000000..9ea8f4dfe54 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-start-width-001.html new file mode 100644 index 00000000000..dedfa6d40e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-left-color-001.html new file mode 100644 index 00000000000..5f88004404f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-left-style-001.html new file mode 100644 index 00000000000..d574ac68505 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-left-width-001.html new file mode 100644 index 00000000000..0c466b38ea4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-right-color-001.html new file mode 100644 index 00000000000..ac2c9b29cf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-right-style-001.html new file mode 100644 index 00000000000..671dd6fcccd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-right-width-001.html new file mode 100644 index 00000000000..2c7baec7528 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-start-end-radius-001.html new file mode 100644 index 00000000000..43c1b27a7e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-start-start-radius-001.html new file mode 100644 index 00000000000..f902a431794 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-color-001.html new file mode 100644 index 00000000000..b030e5cd219 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-left-radius-001.html new file mode 100644 index 00000000000..35d83e296ee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-right-radius-001.html new file mode 100644 index 00000000000..922a101bec9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-style-001.html new file mode 100644 index 00000000000..dfddc274ebb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-width-001.html new file mode 100644 index 00000000000..30019434dbb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-dropdown-box-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for select-dropdown-box + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-attachment-001.html new file mode 100644 index 00000000000..b6f4087456d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-clip-001.html new file mode 100644 index 00000000000..43f87212d18 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-color-001.html new file mode 100644 index 00000000000..b349902c1be --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-image-001.html new file mode 100644 index 00000000000..bf8b706bf15 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-origin-001.html new file mode 100644 index 00000000000..dfd1a934a87 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-position-001.html new file mode 100644 index 00000000000..41b6a7b81b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-size-001.html new file mode 100644 index 00000000000..64fe9a0c892 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-end-color-001.html new file mode 100644 index 00000000000..17a010be361 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-end-style-001.html new file mode 100644 index 00000000000..f079e82abce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-end-width-001.html new file mode 100644 index 00000000000..8f741e2136a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-start-color-001.html new file mode 100644 index 00000000000..28ff9ee6ae2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-start-style-001.html new file mode 100644 index 00000000000..dc7bcd09520 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-start-width-001.html new file mode 100644 index 00000000000..0509dde5fb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-color-001.html new file mode 100644 index 00000000000..af7704d0dd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..b38b443531a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..f797e078f85 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-style-001.html new file mode 100644 index 00000000000..6d895bce48c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-width-001.html new file mode 100644 index 00000000000..14ea0153c5e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-end-end-radius-001.html new file mode 100644 index 00000000000..d1050477478 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-end-start-radius-001.html new file mode 100644 index 00000000000..0ca58e5d041 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-outset-001.html new file mode 100644 index 00000000000..367d1f64e19 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-repeat-001.html new file mode 100644 index 00000000000..558ab52000e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-slice-001.html new file mode 100644 index 00000000000..736ffd422d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-source-001.html new file mode 100644 index 00000000000..987ed466262 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-width-001.html new file mode 100644 index 00000000000..e6d824e21bc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-end-color-001.html new file mode 100644 index 00000000000..269805c299c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-end-style-001.html new file mode 100644 index 00000000000..74f67947104 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-end-width-001.html new file mode 100644 index 00000000000..bfb561c4b15 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-start-color-001.html new file mode 100644 index 00000000000..7403def5f48 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-start-style-001.html new file mode 100644 index 00000000000..235436bb4ac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-start-width-001.html new file mode 100644 index 00000000000..24f6eb28a96 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-left-color-001.html new file mode 100644 index 00000000000..107eeec6a20 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-left-style-001.html new file mode 100644 index 00000000000..a97d90c5cb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-left-width-001.html new file mode 100644 index 00000000000..894276bb89f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-right-color-001.html new file mode 100644 index 00000000000..6ebb3df1977 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-right-style-001.html new file mode 100644 index 00000000000..4cc83727db0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-right-width-001.html new file mode 100644 index 00000000000..029c6088277 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-start-end-radius-001.html new file mode 100644 index 00000000000..464d7dfd1bb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-start-start-radius-001.html new file mode 100644 index 00000000000..81c7892743b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-color-001.html new file mode 100644 index 00000000000..d7c68ac98d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-left-radius-001.html new file mode 100644 index 00000000000..3b306bb7eb1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-right-radius-001.html new file mode 100644 index 00000000000..ae8091382ba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-style-001.html new file mode 100644 index 00000000000..8fbbb91e2ed --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-width-001.html new file mode 100644 index 00000000000..b80972a50ea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-listbox-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for select-listbox + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-attachment-001.html new file mode 100644 index 00000000000..4378b659c2c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-clip-001.html new file mode 100644 index 00000000000..d62a086486f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-color-001.html new file mode 100644 index 00000000000..bbf309938c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-image-001.html new file mode 100644 index 00000000000..12c9fd5c4ac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-origin-001.html new file mode 100644 index 00000000000..336fc8623c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-position-001.html new file mode 100644 index 00000000000..7f4013654ff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-size-001.html new file mode 100644 index 00000000000..bb420ccf735 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-end-color-001.html new file mode 100644 index 00000000000..1a476acc465 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-end-style-001.html new file mode 100644 index 00000000000..db784585734 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-end-width-001.html new file mode 100644 index 00000000000..f21984e12c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-start-color-001.html new file mode 100644 index 00000000000..95308ab790f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-start-style-001.html new file mode 100644 index 00000000000..1fa80c7ecac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-start-width-001.html new file mode 100644 index 00000000000..57553cd3065 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-color-001.html new file mode 100644 index 00000000000..4666747e225 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..c58d57f7096 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..e302b17d546 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-style-001.html new file mode 100644 index 00000000000..c0154d1e831 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-width-001.html new file mode 100644 index 00000000000..1dc70272c26 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-end-end-radius-001.html new file mode 100644 index 00000000000..ebedeacd9cd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-end-start-radius-001.html new file mode 100644 index 00000000000..4a023992368 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-outset-001.html new file mode 100644 index 00000000000..015737dca3c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-repeat-001.html new file mode 100644 index 00000000000..cb03b812f03 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-slice-001.html new file mode 100644 index 00000000000..799010070b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-source-001.html new file mode 100644 index 00000000000..1b3838ebb47 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-width-001.html new file mode 100644 index 00000000000..d78b9d9f384 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-end-color-001.html new file mode 100644 index 00000000000..20c896d9109 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-end-style-001.html new file mode 100644 index 00000000000..15048d4353f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-end-width-001.html new file mode 100644 index 00000000000..ad7b00ede88 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-start-color-001.html new file mode 100644 index 00000000000..4641bb3e772 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-start-style-001.html new file mode 100644 index 00000000000..ab06492b231 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-start-width-001.html new file mode 100644 index 00000000000..0e3fcac797a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-left-color-001.html new file mode 100644 index 00000000000..9fa4d380cf3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-left-style-001.html new file mode 100644 index 00000000000..d1351ee725d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-left-width-001.html new file mode 100644 index 00000000000..bfcb9e17847 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-right-color-001.html new file mode 100644 index 00000000000..71d6758b80e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-right-style-001.html new file mode 100644 index 00000000000..0927300e74b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-right-width-001.html new file mode 100644 index 00000000000..01928ca8b80 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-start-end-radius-001.html new file mode 100644 index 00000000000..7fb7bcf7f94 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-start-start-radius-001.html new file mode 100644 index 00000000000..35fef879cc3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-color-001.html new file mode 100644 index 00000000000..cf1d4f82601 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-left-radius-001.html new file mode 100644 index 00000000000..8b0eda3d788 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-right-radius-001.html new file mode 100644 index 00000000000..d2ec819ac66 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-style-001.html new file mode 100644 index 00000000000..5625d4f1321 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-width-001.html new file mode 100644 index 00000000000..536a7ac8f21 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-select-menulist-button-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for select-menulist-button + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-attachment-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-attachment-001.html new file mode 100644 index 00000000000..ab67317a208 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-attachment-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-clip-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-clip-001.html new file mode 100644 index 00000000000..821cdda2774 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-clip-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-color-001.html new file mode 100644 index 00000000000..999bf80ab42 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-image-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-image-001.html new file mode 100644 index 00000000000..30171213b4b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-image-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-origin-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-origin-001.html new file mode 100644 index 00000000000..9eaaeabc505 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-origin-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-position-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-position-001.html new file mode 100644 index 00000000000..42c4f0ad61d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-position-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-size-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-size-001.html new file mode 100644 index 00000000000..00d57199ada --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-background-size-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-end-color-001.html new file mode 100644 index 00000000000..c44d7d585eb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-end-style-001.html new file mode 100644 index 00000000000..61f2f20b7ba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-end-width-001.html new file mode 100644 index 00000000000..c18998c5d5f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-start-color-001.html new file mode 100644 index 00000000000..4952f5a7ecc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-start-style-001.html new file mode 100644 index 00000000000..757ace5132d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-start-width-001.html new file mode 100644 index 00000000000..c32109de554 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-block-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-color-001.html new file mode 100644 index 00000000000..6bbcadcc80d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-left-radius-001.html new file mode 100644 index 00000000000..8d1e7c4ba86 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-right-radius-001.html new file mode 100644 index 00000000000..d7efd39f0f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-style-001.html new file mode 100644 index 00000000000..82c24b5f460 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-width-001.html new file mode 100644 index 00000000000..f26aa76e6ab --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-bottom-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-end-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-end-end-radius-001.html new file mode 100644 index 00000000000..6f75cec2d2e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-end-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-end-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-end-start-radius-001.html new file mode 100644 index 00000000000..6820c01f108 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-end-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-outset-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-outset-001.html new file mode 100644 index 00000000000..eceb94c0b6a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-outset-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-repeat-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-repeat-001.html new file mode 100644 index 00000000000..c5861b08bd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-repeat-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-slice-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-slice-001.html new file mode 100644 index 00000000000..ffe49fda107 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-slice-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-source-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-source-001.html new file mode 100644 index 00000000000..e8c66dd3b0f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-source-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-width-001.html new file mode 100644 index 00000000000..62848f6c7d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-end-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-end-color-001.html new file mode 100644 index 00000000000..96dfb2cb6e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-end-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-end-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-end-style-001.html new file mode 100644 index 00000000000..854bb92df6c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-end-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-end-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-end-width-001.html new file mode 100644 index 00000000000..146a6725d9a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-end-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-start-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-start-color-001.html new file mode 100644 index 00000000000..21250ce8bf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-start-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-start-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-start-style-001.html new file mode 100644 index 00000000000..95fae5cfcd7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-start-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-start-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-start-width-001.html new file mode 100644 index 00000000000..fa70544fdbd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-inline-start-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-left-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-left-color-001.html new file mode 100644 index 00000000000..add41f7ecf6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-left-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-left-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-left-style-001.html new file mode 100644 index 00000000000..1a5cb56922e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-left-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-left-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-left-width-001.html new file mode 100644 index 00000000000..9b76bcef474 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-left-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-color-001.html new file mode 100644 index 00000000000..e5436513b27 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-style-001.html new file mode 100644 index 00000000000..d01355a9093 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-width-001.html new file mode 100644 index 00000000000..de1fefbaf3d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-start-end-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-start-end-radius-001.html new file mode 100644 index 00000000000..2d5d8dcd752 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-start-end-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-start-start-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-start-start-radius-001.html new file mode 100644 index 00000000000..3c79c908e11 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-start-start-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-color-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-color-001.html new file mode 100644 index 00000000000..5f79c624f65 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-color-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-left-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-left-radius-001.html new file mode 100644 index 00000000000..a0651111933 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-left-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-right-radius-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-right-radius-001.html new file mode 100644 index 00000000000..786f486e740 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-right-radius-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-style-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-style-001.html new file mode 100644 index 00000000000..92e3f96b65a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-style-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-width-001.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-width-001.html new file mode 100644 index 00000000000..13632609968 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-top-width-001.html @@ -0,0 +1,27 @@ + + + +CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for textarea + + + + + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-no-fallback-ref.html b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-no-fallback-ref.html index 241ecf93751..c0e56dc0510 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-no-fallback-ref.html +++ b/tests/wpt/web-platform-tests/css/css-ui/compute-kind-widget-no-fallback-ref.html @@ -3,6 +3,8 @@ Reference: Compute kind of widget - no fallback
    a diff --git a/tests/wpt/web-platform-tests/css/css-ui/crashtests/outline-scrollIntoView-crash.html b/tests/wpt/web-platform-tests/css/css-ui/crashtests/outline-scrollIntoView-crash.html new file mode 100644 index 00000000000..58bbd4c6b4f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/crashtests/outline-scrollIntoView-crash.html @@ -0,0 +1,23 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/cursor-image-015.html b/tests/wpt/web-platform-tests/css/css-ui/cursor-image-015.html index 43229c597cc..108bb2a137b 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/cursor-image-015.html +++ b/tests/wpt/web-platform-tests/css/css-ui/cursor-image-015.html @@ -1,10 +1,10 @@  CSS Basic User Interface Test: Cursor property, image-set() value - - + + - + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-ui/historical/moz-user-modify-02.html b/tests/wpt/web-platform-tests/css/css-ui/historical/moz-user-modify-02.html new file mode 100644 index 00000000000..e284d0c4751 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/historical/moz-user-modify-02.html @@ -0,0 +1,19 @@ + + +-moz-user-modify should be unsupported in contenteditable + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-ui/historical/moz-user-modify-03.html b/tests/wpt/web-platform-tests/css/css-ui/historical/moz-user-modify-03.html new file mode 100644 index 00000000000..e827b404e94 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/historical/moz-user-modify-03.html @@ -0,0 +1,29 @@ + + +-moz-user-modify should be unsupported in CSS.supports + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-ui/historical/user-modify-01.html b/tests/wpt/web-platform-tests/css/css-ui/historical/user-modify-01.html new file mode 100644 index 00000000000..dee93a618f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/historical/user-modify-01.html @@ -0,0 +1,22 @@ + + +user-modify should be unsupported in author origin + + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-ui/historical/user-modify-02.html b/tests/wpt/web-platform-tests/css/css-ui/historical/user-modify-02.html new file mode 100644 index 00000000000..2a96871d90b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/historical/user-modify-02.html @@ -0,0 +1,19 @@ + + +user-modify should be unsupported in contenteditable + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-ui/historical/user-modify-03.html b/tests/wpt/web-platform-tests/css/css-ui/historical/user-modify-03.html new file mode 100644 index 00000000000..8d47e5259f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/historical/user-modify-03.html @@ -0,0 +1,29 @@ + + +user-modify should be unsupported in CSS.supports + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-ui/historical/webkit-user-modify-01.html b/tests/wpt/web-platform-tests/css/css-ui/historical/webkit-user-modify-01.html new file mode 100644 index 00000000000..f756274d472 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/historical/webkit-user-modify-01.html @@ -0,0 +1,22 @@ + + +-webkit-user-modify should be unsupported in author origin + + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-ui/historical/webkit-user-modify-02.html b/tests/wpt/web-platform-tests/css/css-ui/historical/webkit-user-modify-02.html new file mode 100644 index 00000000000..9db2567467f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/historical/webkit-user-modify-02.html @@ -0,0 +1,19 @@ + + +-webkit-user-modify should be unsupported in contenteditable + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-ui/historical/webkit-user-modify-03.html b/tests/wpt/web-platform-tests/css/css-ui/historical/webkit-user-modify-03.html new file mode 100644 index 00000000000..e82ceffc370 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/historical/webkit-user-modify-03.html @@ -0,0 +1,30 @@ + + +-webkit-user-modify should be unsupported in CSS.supports + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-ui/neg-outline-offset-border-radius-crash.html b/tests/wpt/web-platform-tests/css/css-ui/neg-outline-offset-border-radius-crash.html new file mode 100644 index 00000000000..eed5702e622 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/neg-outline-offset-border-radius-crash.html @@ -0,0 +1,12 @@ + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/outline-auto-dynamic-change-ref.html b/tests/wpt/web-platform-tests/css/css-ui/outline-auto-dynamic-change-ref.html new file mode 100644 index 00000000000..9128eae260f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/outline-auto-dynamic-change-ref.html @@ -0,0 +1,16 @@ + +CSS Test Reference + +
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/outline-auto-dynamic-change.html b/tests/wpt/web-platform-tests/css/css-ui/outline-auto-dynamic-change.html new file mode 100644 index 00000000000..f58a14abe7d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/outline-auto-dynamic-change.html @@ -0,0 +1,29 @@ + + + + + + + + +Dynamic change to outline-style: auto works even if effective outline-width is zero + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-valid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-valid.html index 285c16a4ee5..8b3c478391b 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-valid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-valid.html @@ -2,10 +2,10 @@ -CSS UI Level 3: parsing cursor with valid values +CSS UI Level 4: parsing cursor with valid values - - + + @@ -53,6 +53,9 @@ test_valid_value("cursor", 'url("https://example.com/"), alias', ['url("https:// test_valid_value("cursor", 'url("https://example.com/") 1 calc(2 + 0), copy', ['url("https://example.com/") 1 calc(2), copy', 'url("https://example.com/") 1 2, copy', 'url(https://example.com/) 1 2, copy']); test_valid_value("cursor", 'url("https://example.com/"), url("https://example.com/") 3 -4, move', ['url("https://example.com/"), url("https://example.com/") 3 -4, move', 'url(https://example.com/), url(https://example.com/) 3 -4, move']); test_valid_value("cursor", 'url("https://example.com/") 5 6, grab', ['url("https://example.com/") 5 6, grab', 'url(https://example.com/) 5 6, grab']); + +test_valid_value("cursor", 'image-set("https://example.com/" 1x) 5 6, grab', ['image-set("https://example.com/" 1x) 5 6, grab', 'image-set("https://example.com/" 1x) 5 6, grab']); +test_valid_value("cursor", 'image-set("https://example.com/" 1x, "https://example.com/highres" 2x) 5 6, grab', ['image-set("https://example.com/" 1x, "https://example.com/highres" 2x) 5 6, grab', 'image-set("https://example.com/" 1x, "https://example.com/highres" 2x) 5 6, grab']); diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-mandatory.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-mandatory.html index c5217185eb1..3c79f52712c 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-mandatory.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-mandatory.html @@ -16,7 +16,7 @@ test_valid_value("outline", "rgba(10, 20, 30, 0.4)"); test_valid_value("outline", "auto"); -test_valid_value("outline", "none"); // Edge serializes as "invert" +test_valid_value("outline", "none", ["none", "medium"]); // Edge serializes as "invert" test_valid_value("outline", "dotted"); test_valid_value("outline", "dashed"); test_valid_value("outline", "solid"); @@ -30,7 +30,7 @@ test_valid_value("outline", "0", "0px"); test_valid_value("outline", "1px"); test_valid_value("outline", "calc(2em + 3ex)"); test_valid_value("outline", "thin"); -test_valid_value("outline", "medium"); // Edge serializes as "invert" +test_valid_value("outline", "medium", ["none", "medium"]); // Edge serializes as "invert" test_valid_value("outline", "thick"); test_valid_value("outline", "dashed thin"); diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-computed.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-computed.html index abd5826bbb3..ecb719bd758 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-computed.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-computed.html @@ -24,7 +24,7 @@
    diff --git a/tests/wpt/web-platform-tests/css/css-values/acos-asin-atan-atan2-invalid.html b/tests/wpt/web-platform-tests/css/css-values/acos-asin-atan-atan2-invalid.html index af997c12aaa..a6d5d0a5251 100644 --- a/tests/wpt/web-platform-tests/css/css-values/acos-asin-atan-atan2-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-values/acos-asin-atan-atan2-invalid.html @@ -67,9 +67,15 @@ test_invalid_angle('atan2(1deg / )'); test_invalid_angle('atan2(1deg 2deg)'); test_invalid_angle('atan2(1deg, , 2deg)'); test_invalid_angle('atan2(90px)'); + +// atan2() has to resolve to the same dimension. +test_invalid_angle('atan2(90px, 90vw)'); +test_invalid_angle('atan2(90px, 90em)'); +test_invalid_angle('atan2(90px, 100%)'); + test_invalid_angle('atan2(30deg + 1.0471967rad, 0)'); test_invalid_angle('atan2( 0 ,)'); test_invalid_angle('atan2( () 30deg - 0.523599rad )'); test_invalid_angle('atan2(45deg )'); test_invalid_angle('atan2(30deg, + 0.261799rad)'); - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize.html b/tests/wpt/web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize.html index 963450cd5b2..27c0a4fb856 100644 --- a/tests/wpt/web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize.html +++ b/tests/wpt/web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize.html @@ -3,49 +3,53 @@ +
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-values/angle-units-001.html b/tests/wpt/web-platform-tests/css/css-values/angle-units-001.html index 61ca931905a..38918d0439e 100644 --- a/tests/wpt/web-platform-tests/css/css-values/angle-units-001.html +++ b/tests/wpt/web-platform-tests/css/css-values/angle-units-001.html @@ -9,6 +9,7 @@ + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-values/calc-angle-values.html b/tests/wpt/web-platform-tests/css/css-values/calc-angle-values.html index 0bbb43dcf16..699af7a5cdc 100644 --- a/tests/wpt/web-platform-tests/css/css-values/calc-angle-values.html +++ b/tests/wpt/web-platform-tests/css/css-values/calc-angle-values.html @@ -20,7 +20,7 @@ - + @@ -34,103 +34,94 @@ + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-computed.html b/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-computed.html index cfcaa816f4e..f4d66a40f03 100644 --- a/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-computed.html +++ b/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-computed.html @@ -12,57 +12,63 @@
    diff --git a/tests/wpt/web-platform-tests/css/css-values/clamp-length-serialize.html b/tests/wpt/web-platform-tests/css/css-values/clamp-length-serialize.html index 4719e4c0254..d9b4e6f988d 100644 --- a/tests/wpt/web-platform-tests/css/css-values/clamp-length-serialize.html +++ b/tests/wpt/web-platform-tests/css/css-values/clamp-length-serialize.html @@ -9,7 +9,7 @@ function test_valid_length(value, expected) { test_valid_value('letter-spacing', value, expected); } -test_valid_length('clamp(1px, 2px, 3px)', 'clamp(1px, 2px, 3px)'); -test_valid_length('clamp(1px, 2px, clamp(2px, 3px, 4px))', 'clamp(1px, 2px, clamp(2px, 3px, 4px))'); +test_valid_length('clamp(1px, 2px, 3px)', 'calc(2px)'); +test_valid_length('clamp(1px, 2px, clamp(2px, 3px, 4px))', 'calc(2px)'); diff --git a/tests/wpt/web-platform-tests/css/css-values/exp-log-compute.html b/tests/wpt/web-platform-tests/css/css-values/exp-log-compute.html index 05ceadc5d19..8812253bf10 100644 --- a/tests/wpt/web-platform-tests/css/css-values/exp-log-compute.html +++ b/tests/wpt/web-platform-tests/css/css-values/exp-log-compute.html @@ -19,7 +19,7 @@ test_math_used('calc(e - exp(1))', '0', {type:'number', approx:0.1}); //General calculations test_math_used('calc(log( 1 + 1 + 2 /2 - 2) )', '0', {type:'number', approx:0.1}); -test_math_used('calc(log(1) + exp(0))', '2'), {type:'number', approx:0.1}; +test_math_used('calc(log(1) + exp(0))', '1'), {type:'number', approx:0.1}; test_math_used('calc(exp(log(1) + exp(0)*2))', '7.4'), {type:'number', approx:0.1}; test_math_used('calc(log(log(1) + exp(0)*10))', '2.3'), {type:'number', approx:0.1}; test_math_used('calc(log(log(1) + exp(0)*20, 10))', '1.3'), {type:'number', approx:0.1}; @@ -32,4 +32,4 @@ test_math_used('calc(exp(0) + 1)', '2', {type:'number', approx:0.1}); // Test nesting test_math_used('calc(log(exp(1)))', '1', {type:'number', approx:0.1}); test_math_used('calc(log(exp(log(e))))', '1', {type:'number', approx:0.1}); - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-values/ic-unit-012.html b/tests/wpt/web-platform-tests/css/css-values/ic-unit-012.html index e8603570d2d..e5d8027d17b 100644 --- a/tests/wpt/web-platform-tests/css/css-values/ic-unit-012.html +++ b/tests/wpt/web-platform-tests/css/css-values/ic-unit-012.html @@ -6,7 +6,7 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-values/lh-unit-003.html b/tests/wpt/web-platform-tests/css/css-values/lh-unit-003.html new file mode 100644 index 00000000000..e22a4b95b10 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/lh-unit-003.html @@ -0,0 +1,42 @@ + + +CSS Values and Units Test: lh depending on @font-face + + + + +
    + X
    + X
    + X
    + X
    + X
    + X
    + X
    + X
    + X
    + X +
    + diff --git a/tests/wpt/web-platform-tests/css/css-values/lh-unit-004.html b/tests/wpt/web-platform-tests/css/css-values/lh-unit-004.html new file mode 100644 index 00000000000..eab4df97b4d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/lh-unit-004.html @@ -0,0 +1,18 @@ + + +CSS Values and Units Test: lh not affected by <select> fixup + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-values/minmax-length-computed.html b/tests/wpt/web-platform-tests/css/css-values/minmax-length-computed.html index f2444306230..096a272a311 100644 --- a/tests/wpt/web-platform-tests/css/css-values/minmax-length-computed.html +++ b/tests/wpt/web-platform-tests/css/css-values/minmax-length-computed.html @@ -110,5 +110,5 @@ test_length_equals('calc(max(1em, 19px) - 10px)', '10px'); test_length_equals('calc(max(1em, 19px) * 2', '40px'); test_length_equals('calc(max(1em, 19px) / 2', '10px'); test_length_equals('calc(min(1em, 21px) + max(0.9em, 20px))', '40px'); -test_length_equals('calc(min(1em, 21px) - max(0.9em, 20px))', '0px'); +test_length_equals('calc(min(1em + 1px, 22px) - max(0.9em, 20px))', '1px'); diff --git a/tests/wpt/web-platform-tests/css/css-values/minmax-length-percent-serialize.html b/tests/wpt/web-platform-tests/css/css-values/minmax-length-percent-serialize.html index 9e215fd6874..43d2806658b 100644 --- a/tests/wpt/web-platform-tests/css/css-values/minmax-length-percent-serialize.html +++ b/tests/wpt/web-platform-tests/css/css-values/minmax-length-percent-serialize.html @@ -32,20 +32,27 @@ test_serialization( // If not, keep as the function. test_serialization( 'min(1% + 1px)', - 'min(1% + 1px)', - 'min(1% + 1px)', + 'calc(1% + 1px)', + 'calc(1% + 1px)', '2px'); test_serialization( 'min(1px + 1%)', - 'min(1% + 1px)', - 'min(1% + 1px)', + 'calc(1% + 1px)', + 'calc(1% + 1px)', '2px'); test_serialization( 'max(1px + 1%)', - 'max(1% + 1px)', - 'max(1% + 1px)', + 'calc(1% + 1px)', + 'calc(1% + 1px)', '2px'); +// Arguments are simplified eagerly as per spec: +test_serialization( + 'min(1px, 2px)', + 'calc(1px)', + '1px', + '1px'); + // Arguments are simplified, but not reordered. test_serialization( 'min(20px, 10%)', @@ -104,8 +111,8 @@ test_serialization( // and retain their relative order test_serialization( 'calc(min(10% + 1px) + max(1em + 10%) + min(10% + 20px))', - 'calc(min(10% + 1px) + max(10% + 1em) + min(10% + 20px))', - 'calc(min(10% + 1px) + max(10% + 16px) + min(10% + 20px))', + 'calc(30% + 1em + 21px)', + 'calc(30% + 37px)', '67px'); // min()/max() can be combined with plain units as well. @@ -113,7 +120,7 @@ test_serialization( // ordinary units will re-sort around them. test_serialization( 'calc(1em + max(10% + 20px) + 5% + min(1em + 10%) + 10px)', - 'calc(5% + 1em + 10px + max(10% + 20px) + min(10% + 1em))', - 'calc(5% + 26px + max(10% + 20px) + min(10% + 16px))', + 'calc(25% + 2em + 30px)', + 'calc(25% + 62px)', '87px'); diff --git a/tests/wpt/web-platform-tests/css/css-values/minmax-percentage-computed.html b/tests/wpt/web-platform-tests/css/css-values/minmax-percentage-computed.html index 8775a280f1a..fbdad71fcd0 100644 --- a/tests/wpt/web-platform-tests/css/css-values/minmax-percentage-computed.html +++ b/tests/wpt/web-platform-tests/css/css-values/minmax-percentage-computed.html @@ -29,5 +29,5 @@ test_math_used('calc(max(10%, 20%) - 5%)', '15%'); test_math_used('calc(max(10%, 20%) * 2)', '40%'); test_math_used('calc(max(10%, 20%) / 2)', '10%'); test_math_used('calc(min(10%, 20%) + max(10%, 5%))', '20%'); -test_math_used('calc(min(10%, 20%) - max(10%, 5%))', '0%'); +test_math_used('calc(min(11%, 20%) - max(10%, 5%))', '1%'); diff --git a/tests/wpt/web-platform-tests/css/css-values/minmax-time-computed.html b/tests/wpt/web-platform-tests/css/css-values/minmax-time-computed.html index 47f70ed0181..c6a708f0282 100644 --- a/tests/wpt/web-platform-tests/css/css-values/minmax-time-computed.html +++ b/tests/wpt/web-platform-tests/css/css-values/minmax-time-computed.html @@ -34,15 +34,15 @@ test_time_equals('max(1000ms, min(2000ms, 1.5s))', '1.5s'); // General calculations test_time_equals('calc(min(0.5s, 600ms) + 500ms)', '1s'); -test_time_equals('calc(min(0.5s, 600ms) - 500ms)', '0s'); +test_time_equals('calc(min(0.6s, 700ms) - 500ms)', '0.1s'); test_time_equals('calc(min(0.5s, 600ms) * 2)', '1s'); test_time_equals('calc(min(0.5s, 600ms) / 2)', '0.25s'); test_time_equals('calc(max(0.5s, 400ms) + 500ms)', '1s'); -test_time_equals('calc(max(0.5s, 400ms) - 500ms)', '0s'); +test_time_equals('calc(max(0.5s, 400ms) - 400ms)', '0.1s'); test_time_equals('calc(max(0.5s, 400ms) * 2)', '1s'); test_time_equals('calc(max(0.5s, 400ms) / 2)', '0.25s'); test_time_equals('calc(min(0.5s, 600ms) + max(500ms, 0.4s))', '1s'); -test_time_equals('calc(min(0.5s, 600ms) - max(500ms, 0.4s))', '0s'); +test_time_equals('calc(min(0.6s, 700ms) - max(500ms, 0.4s))', '0.1s'); test_time_equals('min(1s + 100ms, 500ms * 3)', '1.1s'); test_time_equals('calc(min(1s, 2s) + max(3s, 4s) + 10s)', '15s'); diff --git a/tests/wpt/web-platform-tests/css/css-values/negative-calc-to-non-negative-integer-ref.html b/tests/wpt/web-platform-tests/css/css-values/negative-calc-to-non-negative-integer-ref.html new file mode 100644 index 00000000000..44680916073 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/negative-calc-to-non-negative-integer-ref.html @@ -0,0 +1,15 @@ + +CSS Test reference + + +
      +
    1. +
    2. +
    3. +
    diff --git a/tests/wpt/web-platform-tests/css/css-values/negative-calc-to-non-negative-integer.html b/tests/wpt/web-platform-tests/css/css-values/negative-calc-to-non-negative-integer.html new file mode 100644 index 00000000000..b76859b352d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/negative-calc-to-non-negative-integer.html @@ -0,0 +1,18 @@ + + + + + + + +
      +
    1. +
    2. +
    3. +
    diff --git a/tests/wpt/web-platform-tests/css/css-values/reference/ic-unit-012-ref.html b/tests/wpt/web-platform-tests/css/css-values/reference/ic-unit-012-ref.html new file mode 100644 index 00000000000..43069859c7b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/reference/ic-unit-012-ref.html @@ -0,0 +1,51 @@ + + + + + CSS Values and Units Test Reference File + + + + + +

    Test passes if there is a blue rectangle with the same height as an orange rectangle. + +

    水水水水水
    + +
    水水水水水
    + + diff --git a/tests/wpt/web-platform-tests/css/css-values/round-function.html b/tests/wpt/web-platform-tests/css/css-values/round-function.html index b1e950efe72..bc8734b011a 100644 --- a/tests/wpt/web-platform-tests/css/css-values/round-function.html +++ b/tests/wpt/web-platform-tests/css/css-values/round-function.html @@ -87,8 +87,8 @@ test_minus_zero("round(to-zero, -5, -infinity)"); // 'up': pos goes to +inf, 0+ goes to 0+, else 0- test_plus_infinity("round(up, 1, infinity)"); test_plus_zero("round(up, 0, infinity)"); -test_minus_zero("round(up, -1 * 0, infinity"); -test_minus_zero("round(up, -1, infinity"); +test_minus_zero("round(up, -1 * 0, infinity)"); +test_minus_zero("round(up, -1, infinity)"); // 'down': neg goes to -inf, -0 goes to -0, else 0+ test_minus_infinity("round(down, -1, infinity)"); test_minus_zero("round(down, -1 * 0, infinity)"); diff --git a/tests/wpt/web-platform-tests/css/css-values/round-mod-rem-computed.html b/tests/wpt/web-platform-tests/css/css-values/round-mod-rem-computed.html index a98e4a43322..581b838744f 100644 --- a/tests/wpt/web-platform-tests/css/css-values/round-mod-rem-computed.html +++ b/tests/wpt/web-platform-tests/css/css-values/round-mod-rem-computed.html @@ -6,7 +6,9 @@ -
    +
    +
    +
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-computed.html b/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-computed.html index 7f85727bdba..bad60175209 100644 --- a/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-computed.html +++ b/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-computed.html @@ -3,6 +3,7 @@ + @@ -22,7 +23,7 @@ test_math_used('calc(cos(e - 2.7182818284590452354) )', '1', {type:'number', app //Test units test_math_used('calc(sin(30deg + 1.0471967rad ) )', '1', {type:'number', approx:0.1}); -test_math_used('calc(cos(30deg - 0.523599rad ) )', '1'), {type:'number', approx:0.1}; +test_math_used('calc(cos(30deg - 0.523599rad ) )', '1', {type:'number', approx:0.1}); test_math_used('calc(sin(3.14159 / 2 + 1 - 1) )', '1', {type:'number', approx:0.1}); test_math_used('calc(sin(100grad) )', '1', {type:'number', approx:0.1}); test_math_used('calc(cos(0 / 2 + 1 - 1) )', '1', {type:'number', approx:0.1}); diff --git a/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-invalid.html b/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-invalid.html index b504e6d6020..54887bf46cb 100644 --- a/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-invalid.html @@ -3,6 +3,7 @@ + diff --git a/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-serialize.html b/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-serialize.html index ce673cb9d8b..72287d6f3c5 100644 --- a/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-serialize.html +++ b/tests/wpt/web-platform-tests/css/css-values/sin-cos-tan-serialize.html @@ -3,59 +3,56 @@ +
    diff --git a/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-01.html b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-01.html new file mode 100644 index 00000000000..6401cd9b4bd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-01.html @@ -0,0 +1,23 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-02.html b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-02.html new file mode 100644 index 00000000000..67088c64c59 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-02.html @@ -0,0 +1,23 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-03.html b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-03.html new file mode 100644 index 00000000000..3d614d395ac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-03.html @@ -0,0 +1,23 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-04.html b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-04.html new file mode 100644 index 00000000000..b23c0e6a7fa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-04.html @@ -0,0 +1,23 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-05.html b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-05.html new file mode 100644 index 00000000000..e6196d3e31f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-05.html @@ -0,0 +1,23 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-06.html b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-06.html new file mode 100644 index 00000000000..a4a614f8d2e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/support/mixed-units-06.html @@ -0,0 +1,23 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-values/viewport-units-compute.html b/tests/wpt/web-platform-tests/css/css-values/viewport-units-compute.html new file mode 100644 index 00000000000..2f080d2aabd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/viewport-units-compute.html @@ -0,0 +1,76 @@ + +Resolving viewport units + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-values/viewport-units-invalidation.html b/tests/wpt/web-platform-tests/css/css-values/viewport-units-invalidation.html new file mode 100644 index 00000000000..c7c980e04d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/viewport-units-invalidation.html @@ -0,0 +1,69 @@ + +Invalidation of viewport units + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-values/viewport-units-keyframes.html b/tests/wpt/web-platform-tests/css/css-values/viewport-units-keyframes.html new file mode 100644 index 00000000000..be43f22537f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/viewport-units-keyframes.html @@ -0,0 +1,69 @@ + +Viewport units in @keyframes + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-values/viewport-units-media-queries.html b/tests/wpt/web-platform-tests/css/css-values/viewport-units-media-queries.html new file mode 100644 index 00000000000..33561793319 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/viewport-units-media-queries.html @@ -0,0 +1,77 @@ + +Viewport units in @media + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-values/viewport-units-modify.html b/tests/wpt/web-platform-tests/css/css-values/viewport-units-modify.html new file mode 100644 index 00000000000..8ce5d987128 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/viewport-units-modify.html @@ -0,0 +1,19 @@ + +Crash when going from non-viewport to viewport units + + + + +
    Test passes if there is no crash.
    + + diff --git a/tests/wpt/web-platform-tests/css/css-values/viewport-units-writing-mode-font-size-ref.html b/tests/wpt/web-platform-tests/css/css-values/viewport-units-writing-mode-font-size-ref.html new file mode 100644 index 00000000000..1e09173353f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/viewport-units-writing-mode-font-size-ref.html @@ -0,0 +1,27 @@ + +CSS test reference + + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-values/viewport-units-writing-mode-font-size.html b/tests/wpt/web-platform-tests/css/css-values/viewport-units-writing-mode-font-size.html new file mode 100644 index 00000000000..fd1a4aaca5d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/viewport-units-writing-mode-font-size.html @@ -0,0 +1,35 @@ + +font-size depends on writing-mode + + + + + + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-values/viewport-units-writing-mode.html b/tests/wpt/web-platform-tests/css/css-values/viewport-units-writing-mode.html new file mode 100644 index 00000000000..ee851fd17c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/viewport-units-writing-mode.html @@ -0,0 +1,60 @@ + +Viewport units are responsive to writing-mode changes + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-variables/revert-in-fallback.html b/tests/wpt/web-platform-tests/css/css-variables/revert-in-fallback.html new file mode 100644 index 00000000000..ae99e5192fd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-variables/revert-in-fallback.html @@ -0,0 +1,42 @@ + +CSS Custom Properties: Using revert in fallbacks + + + + + + +
    
    +    
    +  
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-variables/revert-layer-in-fallback.html b/tests/wpt/web-platform-tests/css/css-variables/revert-layer-in-fallback.html
    new file mode 100644
    index 00000000000..ed20821fb93
    --- /dev/null
    +++ b/tests/wpt/web-platform-tests/css/css-variables/revert-layer-in-fallback.html
    @@ -0,0 +1,49 @@
    +
    +CSS Custom Properties: Using revert-layer in fallbacks
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-variables/variable-presentation-attribute.html b/tests/wpt/web-platform-tests/css/css-variables/variable-presentation-attribute.html index 6c8a4430bc7..1674f3ffdbc 100644 --- a/tests/wpt/web-platform-tests/css/css-variables/variable-presentation-attribute.html +++ b/tests/wpt/web-platform-tests/css/css-variables/variable-presentation-attribute.html @@ -69,7 +69,7 @@ { property: "font-family", valuesToTest:["Arial", "Times New Roman"], default: "Times New Roman" }, { property: "font-size", valuesToTest:["31px"], default: "16px" }, { property: "font-size-adjust", valuesToTest:["22", "none"], default: "none" }, - { property: "font-stretch", valuesToTest:["normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded"], default: "normal" }, + { property: "font-stretch", valuesToTest:["100%", "50%", "62.5%", "75%", "87.5%", "112.5%", "125%", "150%", "200%"], default: "100%" }, { property: "font-style", valuesToTest:["normal", "italic"], default: "normal" }, { property: "font-weight", valuesToTest:["100", "200", "300", "400", "500", "600", "700", "800", "900"], default: "400" }, { property: "glyph-orientation-horizontal", valuesToTest:["13deg"], default: "0deg" }, diff --git a/tests/wpt/web-platform-tests/css/css-variables/vars-background-shorthand-001.html b/tests/wpt/web-platform-tests/css/css-variables/vars-background-shorthand-001.html index 741e2cc021d..df02a8f5efc 100644 --- a/tests/wpt/web-platform-tests/css/css-variables/vars-background-shorthand-001.html +++ b/tests/wpt/web-platform-tests/css/css-variables/vars-background-shorthand-001.html @@ -3,6 +3,7 @@ + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-border-offset-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-border-offset-001.html new file mode 100644 index 00000000000..f7b7375bdf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-border-offset-001.html @@ -0,0 +1,248 @@ + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-border-offset-002-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-border-offset-002-ref.html new file mode 100644 index 00000000000..98ec0d0c708 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-border-offset-002-ref.html @@ -0,0 +1,397 @@ + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-border-offset-002.html b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-border-offset-002.html new file mode 100644 index 00000000000..a954a567331 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-border-offset-002.html @@ -0,0 +1,401 @@ + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-non-replaced-icb-vlr-003.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-non-replaced-icb-vlr-003.xht index ad310d1019e..dea0f933558 100644 --- a/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-non-replaced-icb-vlr-003.xht +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-non-replaced-icb-vlr-003.xht @@ -10,7 +10,6 @@ - + +
    + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-replaced-vrl-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-replaced-vrl-001.html new file mode 100644 index 00000000000..54838a0e0e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-replaced-vrl-001.html @@ -0,0 +1,35 @@ + + + + + + + + + +
    +
    + + + + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-border-001-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-border-001-ref.html new file mode 100644 index 00000000000..e4098f1dd45 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-border-001-ref.html @@ -0,0 +1,54 @@ + + + + + + +
    +
    +
    Hello
    +
    +
    +
    +
    +
    Hello
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-border-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-border-001.html new file mode 100644 index 00000000000..795bd972d45 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-border-001.html @@ -0,0 +1,59 @@ + + + + + + + + + +
    +
    +
    Hello
    +
    +
    +
    +
    +
    Hello
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-padding-001-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-padding-001-ref.html new file mode 100644 index 00000000000..6a941ff6407 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-padding-001-ref.html @@ -0,0 +1,53 @@ + + + + + + +
    +
    +
    Hello
    +
    +
    +
    +
    +
    Hello
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-padding-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-padding-001.html new file mode 100644 index 00000000000..209cce14d2e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/abs-pos-vlr-padding-001.html @@ -0,0 +1,58 @@ + + + + + + + + + +
    +
    +
    Hello
    +
    +
    +
    +
    +
    Hello
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/available-size-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/available-size-001.html index 956c831a29f..8227aee739b 100644 --- a/tests/wpt/web-platform-tests/css/css-writing-modes/available-size-001.html +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/available-size-001.html @@ -5,7 +5,6 @@ - + + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/crashtests/unicode-bidi-select-crash.html b/tests/wpt/web-platform-tests/css/css-writing-modes/crashtests/unicode-bidi-select-crash.html new file mode 100644 index 00000000000..b36a37616b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/crashtests/unicode-bidi-select-crash.html @@ -0,0 +1,19 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/different-block-flow-dir-001.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/different-block-flow-dir-001.xht index d885e1acc56..151b736d832 100644 --- a/tests/wpt/web-platform-tests/css/css-writing-modes/different-block-flow-dir-001.xht +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/different-block-flow-dir-001.xht @@ -10,7 +10,6 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/margin-collapse-vlr-023.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/margin-collapse-vlr-023.xht index d72e475af53..e655202e103 100644 --- a/tests/wpt/web-platform-tests/css/css-writing-modes/margin-collapse-vlr-023.xht +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/margin-collapse-vlr-023.xht @@ -24,23 +24,11 @@ The margin collapsing rules apply exactly with the block-start margin substituted for the top margin and the block-end margin substituted for the bottom margin. " --> + + -

    Test passes if the top square has a layout
    identical to one of the squares below it.

    -
    @@ -107,9 +71,5 @@
    -
    Image download support must be enabledImage download support must be enabledImage download support must be enabledImage download support must be enabled
    - -
    Image download support must be enabledImage download support must be enabledImage download support must be enabledImage download support must be enabled
    - - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/margin-collapse-vrl-022.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/margin-collapse-vrl-022.xht index 05cce8bd953..a83835e306d 100644 --- a/tests/wpt/web-platform-tests/css/css-writing-modes/margin-collapse-vrl-022.xht +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/margin-collapse-vrl-022.xht @@ -24,14 +24,11 @@ The margin collapsing rules apply exactly with the block-start margin substituted for the top margin and the block-end margin substituted for the bottom margin. " --> + + -

    Test passes if the top square has a layout identical to one of the squares below it.

    -
    @@ -94,10 +71,5 @@
    - -
    Image download support must be enabledImage download support must be enabledImage download support must be enabledImage download support must be enabled
    - -
    Image download support must be enabledImage download support must be enabledImage download support must be enabledImage download support must be enabled
    - - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/nested-orthogonal-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/nested-orthogonal-001.html index bcd2e2aff24..09223424dd3 100644 --- a/tests/wpt/web-platform-tests/css/css-writing-modes/nested-orthogonal-001.html +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/nested-orthogonal-001.html @@ -5,7 +5,6 @@ - + + + + +
    Image download support must be enabledImage download support must be enabledImage download support must be enabledImage download support must be enabled
    + + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/reference/margin-collapse-022-023-2.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/reference/margin-collapse-022-023-2.xht new file mode 100644 index 00000000000..dab33c39373 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/reference/margin-collapse-022-023-2.xht @@ -0,0 +1,21 @@ + + + + + + + + + +
    Image download support must be enabledImage download support must be enabledImage download support must be enabledImage download support must be enabled
    + + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/reference/text-shadow-orientation-upright-001-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/reference/text-shadow-orientation-upright-001-ref.html index cbd8adbdcbb..54c1f74259e 100644 --- a/tests/wpt/web-platform-tests/css/css-writing-modes/reference/text-shadow-orientation-upright-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/reference/text-shadow-orientation-upright-001-ref.html @@ -4,43 +4,56 @@ CSS Reference Test + -
    +
    U
    -
    Image download support must be enabledImage download support must be enabled
    +
    B
    -
    +
    F
    + + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthog-htb-in-vlr-001-ref.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthog-htb-in-vlr-001-ref.xht index da3bce8d4ce..d9635b15fac 100644 --- a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthog-htb-in-vlr-001-ref.xht +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthog-htb-in-vlr-001-ref.xht @@ -11,7 +11,6 @@ - + + +

    PASS if the text-shadow (red) is placed at the lower right of the text (black).

    +
    XXX
    + + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-combine-upright-shadow.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-combine-upright-shadow.html new file mode 100644 index 00000000000..6b72ea34aa6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/text-combine-upright-shadow.html @@ -0,0 +1,23 @@ + + + + + text-combine-upright: all with text-shadow + + + + + + + + +

    PASS if the text-shadow (red) is placed at the lower right of the text (black).

    +
    XXX
    + + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-combine-upright-value-all-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-combine-upright-value-all-001.html index a0e85ecd81b..4c7788d36c0 100644 --- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-combine-upright-value-all-001.html +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/text-combine-upright-value-all-001.html @@ -7,7 +7,6 @@ - + +
    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/Screen-pixelDepth-Screen-colorDepth001.html b/tests/wpt/web-platform-tests/css/cssom-view/Screen-pixelDepth-Screen-colorDepth001.html index 2a8d5b5b492..f394560ff13 100644 --- a/tests/wpt/web-platform-tests/css/cssom-view/Screen-pixelDepth-Screen-colorDepth001.html +++ b/tests/wpt/web-platform-tests/css/cssom-view/Screen-pixelDepth-Screen-colorDepth001.html @@ -11,14 +11,16 @@

    This case tests the Screen pixelDepth and colorDepth

    -

    The test passes if the value is 24

    +

    The test passes if the value is either 24 or 30

    + +
    +
    +
    + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/pt-to-px-width.html b/tests/wpt/web-platform-tests/css/cssom-view/pt-to-px-width.html new file mode 100644 index 00000000000..485149ac74a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/pt-to-px-width.html @@ -0,0 +1,21 @@ + + +10pt converted to offset/client/scroll width + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/range-bounding-client-rect-with-display-contents.html b/tests/wpt/web-platform-tests/css/cssom-view/range-bounding-client-rect-with-display-contents.html new file mode 100644 index 00000000000..501a94e07fa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/range-bounding-client-rect-with-display-contents.html @@ -0,0 +1,39 @@ + + +Include display:contents elements recursively when calculating bounding rect for a ranges + + + +
    +
    spacer before
    +
    +
    + HEIGHT: 30px +
    +
    +
    +
    + HEIGHT: 30px +
    +
    +
    +
    +
    spacer after
    +
    + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-back-to-initial-position.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-back-to-initial-position.html new file mode 100644 index 00000000000..8ccb499dd37 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-back-to-initial-position.html @@ -0,0 +1,44 @@ + +Scroll back to initial position + + + + + + + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-smooth-navigation.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-smooth-navigation.html new file mode 100644 index 00000000000..299fd76976c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-smooth-navigation.html @@ -0,0 +1,108 @@ + +cssom-view - scroll-behavior: smooth + + + + + +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-smooth.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-smooth.html index 3e151990438..cb2dd9e48a4 100644 --- a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-smooth.html +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-smooth.html @@ -57,85 +57,5 @@ window.scrollTo(0, 0); }, "BODY element scroll-behavior should not propagate to viewport"); - var instantHistoryNavigationTest = - async_test("Instant scrolling while doing history navigation."); - var smoothHistoryNavigationTest = - async_test("Smooth scrolling while doing history navigation."); - - function instant() { - document.documentElement.className = ""; - document.body.className = ""; - window.scrollTo(0, 0); - var p = document.createElement("pre"); - p.textContent = new Array(1000).join("newline\n"); - var a = document.createElement("a"); - a.href = "#"; - a.name = "foo"; - a.textContent = "foo"; - p.appendChild(a); - document.body.appendChild(p); - window.onhashchange = function() { - window.onhashchange = function() { - instantHistoryNavigationTest.step(function() { - assert_equals(location.hash, "", "Shouldn't be scrolled to a fragment."); - assert_equals(window.scrollY, 0, "Shouldn't be scrolled back to top yet."); - }); - p.remove(); - instantHistoryNavigationTest.done(); - smooth(); - } - - instantHistoryNavigationTest.step(function() { - assert_equals(location.hash, "#foo", "Should be scrolled to a fragment."); - assert_not_equals(window.scrollY, 0, "Shouldn't be scrolled to top anymore."); - }); - history.back(); - } - - instantHistoryNavigationTest.step(function() { - assert_equals(window.scrollY, 0, "Should be scrolled to top."); - assert_equals(location.hash, "", "Shouldn't be scrolled to a fragment."); - }); - location.hash = "foo"; - }; - instant(); - - function smooth() { - document.documentElement.className = ""; - document.body.className = ""; - window.scrollTo(0, 0); - var p = document.createElement("pre"); - p.textContent = new Array(1000).join("newline\n"); - var a = document.createElement("a"); - a.href = "#"; - a.name = "bar"; - a.textContent = "bar"; - p.appendChild(a); - document.body.appendChild(p); - window.onhashchange = function() { - window.onhashchange = function() { - smoothHistoryNavigationTest.step(function() { - assert_equals(location.hash, "", "Shouldn't be scrolled to a fragment."); - assert_not_equals(window.scrollY, 0, "Shouldn't be scrolled back to top yet."); - }); - p.remove(); - smoothHistoryNavigationTest.done(); - } - - smoothHistoryNavigationTest.step(function() { - assert_equals(location.hash, "#bar", "Should be scrolled to a fragment."); - assert_not_equals(window.scrollY, 0, "Shouldn't be scrolled to top anymore."); - }); - history.back(); - } - - smoothHistoryNavigationTest.step(function() { - assert_equals(window.scrollY, 0, "Should be scrolled to top."); - assert_equals(location.hash, "", "Shouldn't be scrolled to a fragment."); - }); - location.hash = "bar"; - document.documentElement.className = "smooth"; - }; - testContainer.style.display = "none"; diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-fixed.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-fixed.html new file mode 100644 index 00000000000..bab58dad68b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-fixed.html @@ -0,0 +1,258 @@ + + + + CSSOM View - scrollIntoView from position:fixed + + + + + + + + + + +
    +

    + The orange boxes are position: fixed. Clicking ScrollIntoView in each box + will attempt to scroll into view the blue target element inside that fixed + container to block/inline: start (i.e. aligned with top left corner in RTL). +

    +

    + scrollIntoView from a position:fixed element must not scroll its + containing frame; however, it must scroll further ancestor scrollers as + the element isn't fixed in relation to them. +

    +
    + +
    + Box A + +
    +
    +
    + Box C + +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-stuck.tentative.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-stuck.tentative.html new file mode 100644 index 00000000000..115b8ff9fb6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-stuck.tentative.html @@ -0,0 +1,52 @@ + + + +CSSOM View - scrollIntoView doesn't consider scroll-padding when target is stuck + + + + + + + + +
    +
    + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollWidthHeight.xht b/tests/wpt/web-platform-tests/css/cssom-view/scrollWidthHeight.xht index 77b01dbf50b..18930517670 100644 --- a/tests/wpt/web-platform-tests/css/cssom-view/scrollWidthHeight.xht +++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollWidthHeight.xht @@ -78,54 +78,33 @@ assert_equals(elemOverflow.clientHeight, 90); }, "elemOverflow.clientHeight is the height of the padding edge"); - /* This test differs from the spec. Opera and Webkit meet the spec, IE9 and Firefox - give the result here. It seems that in this case Opera and Webkit place - the padding-bottom below elemOverflow's child (i.e. below elemOverflow's bottom border); - you can scroll to it. IE9 and Firefox do not. I believe this is a Webkit/Opera bug - (If you remove overflow:hidden then the padding-bottom moves back to be above the bottom - border, as expected.) - The underlying issue seems to be whether bottom padding on a scrollable element is - always placed at the element's bottom border and not scrolled, or else deemed to - belong to the scrolled content and placed below the scrolled element's children. - Commenting out for now, because this is not really a CSSOM issue, but an issue - over the layout of elements with 'overflow'. - test(function(){ - assert_equals(elemOverflow.scrollHeight, 150); - }, "elemOverflow.scrollHeight is the height of its scrolled contents (ignoring padding, since we overflowed)"); - */ + assert_equals(elemOverflow.scrollHeight, 200); + }, "elemOverflow.scrollHeight is the height of its scrolled contents (including padding)"); test(function(){ assert_equals(elemOverflow.clientWidth, 240); }, "elemOverflow.clientWidth is the width of the padding edge"); - /* This test differs from the spec. All major browsers give the result here, ignoring - the right padding. - */ test(function(){ - assert_equals(elemOverflow.scrollWidth, 250); - }, "elemOverflow.scrollHeight is the width of its scrolled contents (ignoring padding, since we overflowed)"); + assert_equals(elemOverflow.scrollWidth, 290); + }, "elemOverflow.scrollHeight is the width of its scrolled contents (including padding)"); test(function(){ assert_equals(elemNestedOverflow.clientHeight, 90); }, "elemNestedOverflow.clientHeight is the height of the padding edge"); - /* This test differs from the spec. All major browsers give the result here. - */ test(function(){ assert_equals(elemNestedOverflow.scrollHeight, 150); - }, "elemNestedOverflow.scrollHeight is the height of its scrolled contents (ignoring padding, since we overflowed)"); + }, "elemNestedOverflow.scrollHeight is the height of its scrolled contents (ignoring padding)"); test(function(){ assert_equals(elemNestedOverflow.clientWidth, 240); }, "elemNestedOverflow.clientWidth is the height of the padding edge"); - /* This test differs from the spec. All major browsers give the result here, ignoring - the right padding. - */ test(function(){ assert_equals(elemNestedOverflow.scrollWidth, 250); - }, "elemNestedOverflow.scrollWidth is the width of its scrolled contents (ignoring padding, since we overflowed)"); + }, "elemNestedOverflow.scrollWidth is the width of its scrolled contents (ignoring padding)"); ]]> diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSContainerRule.tentative.html b/tests/wpt/web-platform-tests/css/cssom/CSSContainerRule.tentative.html new file mode 100644 index 00000000000..4e01c0b4700 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/CSSContainerRule.tentative.html @@ -0,0 +1,35 @@ + + +CSSContainerRule + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-baseURL.tentative.html b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-baseURL.tentative.html index b43ed61c3ee..8997a59e9c1 100644 --- a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-baseURL.tentative.html +++ b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-baseURL.tentative.html @@ -60,7 +60,7 @@ test(() => { }, "Constructing sheet with relative URL adds to the constructor document's base URL"); test(() => { - assert_throws_dom("NotAllowedError", () => { new CSSStyleSheet({ baseURL: "chrome://"}) }); + assert_throws_dom("NotAllowedError", () => { new CSSStyleSheet({ baseURL: "https://test:test/"}) }); }, "Constructing sheet with invalid base URL throws a NotAllowedError"); diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-cssRules.html b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-cssRules.html new file mode 100644 index 00000000000..72b0e15c8b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-cssRules.html @@ -0,0 +1,22 @@ + + +CSSStyleSheet.replace/replaceSync() doesn't change cssRules object + + + + + + +Should be green + diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-template-adoption.html b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-template-adoption.html index 8fecbd83f7f..e014627ed8b 100644 --- a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-template-adoption.html +++ b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-template-adoption.html @@ -13,30 +13,41 @@ + +
    + diff --git a/tests/wpt/web-platform-tests/css/cssom/caretPositionFromPoint-with-transformation.html b/tests/wpt/web-platform-tests/css/cssom/caretPositionFromPoint-with-transformation.html new file mode 100644 index 00000000000..fcd02877ca9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/caretPositionFromPoint-with-transformation.html @@ -0,0 +1,46 @@ + + +getCaretPositionFromPoint should return the correct offset even in iframes with transformation + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html new file mode 100644 index 00000000000..2efab276c5b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html @@ -0,0 +1,27 @@ + + +CSSStyleDeclaration for a CSSFontRule + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-csstext-all-shorthand.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-csstext-all-shorthand.html new file mode 100644 index 00000000000..6619538cf10 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-csstext-all-shorthand.html @@ -0,0 +1,38 @@ + +CSSOM test: serialization of the 'all' shorthand in cssText + + + + + diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html index b522baa42b3..211d512b28c 100644 --- a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html +++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html @@ -17,7 +17,8 @@ function testNoComputedStyle(element, description, global) { assert_true(!!element); let style = (global ? global : window).getComputedStyle(element); assert_true(!!style); - assert_equals(style.length, 0); + // Note that we avoid assert_equals below to get a stable failure message. + assert_true(style.length == 0); assert_equals(style.color, ""); }, `getComputedStyle returns no style for ${description}`); } diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-display-none-003.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-display-none-003.html new file mode 100644 index 00000000000..7ea45055882 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-display-none-003.html @@ -0,0 +1,26 @@ + +style is invalidated properly as a result of attribute changes in display: none subtrees + + + + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html new file mode 100644 index 00000000000..e61241e5709 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html @@ -0,0 +1,34 @@ + + +CSSStyleDeclaration index getter v. attributes + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html index fb8ab653845..40af5b0818c 100644 --- a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html +++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html @@ -138,14 +138,16 @@ test(function() { }, "Dynamically change to display: contents on pseudo-elements"); test(function() { var div = document.getElementById('test'); - assert_not_equals( - getComputedStyle(div, "totallynotapseudo").length, 0, + // Note that these assertions deliberately avoid assert_[not_]equals to + // avoid gCS().length in the failure output. + assert_true( + getComputedStyle(div, "totallynotapseudo").length != 0, "Should return the element's style for unknown pseudo-elements that don't start with a colon"); - assert_equals( - getComputedStyle(div, "::totallynotapseudo").length, 0, + assert_true( + getComputedStyle(div, "::totallynotapseudo").length == 0, "Should return an empty style for unknown pseudo-elements starting with double-colon"); - assert_equals( - getComputedStyle(div, ":totallynotapseudo").length, 0, + assert_true( + getComputedStyle(div, ":totallynotapseudo").length == 0, "Should return an empty style for unknown pseudo-elements starting with colon"); }, "Unknown pseudo-elements"); diff --git a/tests/wpt/web-platform-tests/css/cssom/property-accessors.html b/tests/wpt/web-platform-tests/css/cssom/property-accessors.html new file mode 100644 index 00000000000..87c9df0b324 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/property-accessors.html @@ -0,0 +1,64 @@ + + + +Accessing properties via CSSStyleDeclaration + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/cssom/serialize-all-longhands.html b/tests/wpt/web-platform-tests/css/cssom/serialize-all-longhands.html new file mode 100644 index 00000000000..95204b63613 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/serialize-all-longhands.html @@ -0,0 +1,36 @@ + + +Serialize all longhands + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-001.html b/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-001.html index 1f6c9e24935..07c4fbb41ae 100644 --- a/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-001.html +++ b/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-001.html @@ -38,6 +38,34 @@ assert_true(linkSheet instanceof CSSStyleSheet); }, "sheet_property"); + // The `disabled` IDL attribute setter has no effect before the underlying + // CSSStyleSheet is created. + test(function () { + const style = document.createElement("style"); + style.disabled = true; + assert_false(style.disabled); + document.head.append(style); + const sheet1 = style.sheet; + assert_false(style.disabled); + assert_false(sheet1.disabled); + + // The `disabled` attribute can be set after the sheet exists. + style.disabled = true; + assert_true(style.disabled); + assert_true(sheet1.disabled); + + // Reset `disabled`. + style.disabled = false; + assert_false(style.disabled); + assert_false(style.disabled); + + // Setting `disabled = true` on the CSSStyleSheet also carries over to the + // HTMLStyleElement. + sheet1.disabled = true; + assert_true(style.disabled); + assert_true(sheet1.disabled); + }, "disabled attribute getter/setter"); + // The sheet property on LinkStyle should always return the current associated style sheet. test(function () { var style = document.createElement("style"); diff --git a/tests/wpt/web-platform-tests/css/fetching/fetch-resources.sub.html b/tests/wpt/web-platform-tests/css/fetching/fetch-resources.sub.html new file mode 100644 index 00000000000..03c3e346f1c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/fetching/fetch-resources.sub.html @@ -0,0 +1,102 @@ + + + +Test various interactions between fetch, service-workers and resource timing + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/fetching/support/echo-css.py b/tests/wpt/web-platform-tests/css/fetching/support/echo-css.py new file mode 100644 index 00000000000..bbfd3f07c0b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/fetching/support/echo-css.py @@ -0,0 +1,7 @@ +import sys +import json + +def main(request, response): + content = request.GET.first(b"content", None) + response.headers.set(b"Content-Type", "text/css"); + return content diff --git a/tests/wpt/web-platform-tests/css/fetching/support/echo-headers.py b/tests/wpt/web-platform-tests/css/fetching/support/echo-headers.py new file mode 100644 index 00000000000..9feb6f91a46 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/fetching/support/echo-headers.py @@ -0,0 +1,24 @@ +import sys +import json + +def main(request, response): + token = request.GET.first(b"token", None) + location = request.GET.first(b"location", None) + store = request.server.stash.take(token) + headers = {} + if (location == b"echo"): + return store + + if (store == None): + store = {} + else: + store = json.loads(store) + + for header in request.headers: + headers[header.decode('utf-8')] = request.headers.get(header).decode('utf-8') + + store[location.decode('utf-8')] = headers + + request.server.stash.put(token, json.dumps(store)) + response.status = 302 + response.headers.set(b"Location", location) diff --git a/tests/wpt/web-platform-tests/css/fetching/support/echo-helper.js b/tests/wpt/web-platform-tests/css/fetching/support/echo-helper.js new file mode 100644 index 00000000000..15bec650333 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/fetching/support/echo-helper.js @@ -0,0 +1,19 @@ +function get_resource_echo_url(uid, url) { + return `/css/fetching/support/echo-headers.py?token=${uid}&location=${url}` +} + +function wait_for_resource(url) { + return new Promise(resolve => { + const po = new PerformanceObserver(list => { + const entries = list.getEntries(); + if (entries.find(e => e.name.includes(url))) + resolve(); + }) + po.observe({type: "resource", buffered: true}); + }); +} + +async function get_headers(uid) { + return await (await fetch(`/css/fetching/support/echo-headers.py?token=${uid}&location=echo`)).json() +} + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color.html deleted file mode 100644 index 2623c11587c..00000000000 --- a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color.html +++ /dev/null @@ -1,34 +0,0 @@ - - -backdrop-filter: Basic operation of filter with background color - - - - -
    -

    Expected: A green box and an overlapping blue box, with a purple
    - overlapping region.

    -
    -
    -
    -
    - - diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rounded-clip.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rounded-clip.html index ab1a31d740c..e532750a27c 100644 --- a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rounded-clip.html +++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rounded-clip.html @@ -2,6 +2,7 @@ backdrop-filter under overflow clip under border-radius overflow clip +
    diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-feimage-crash.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-feimage-crash.html new file mode 100644 index 00000000000..762452e8e60 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-feimage-crash.html @@ -0,0 +1,11 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-invalid.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-invalid.html new file mode 100644 index 00000000000..57d69b8b8dc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-invalid.html @@ -0,0 +1,25 @@ + + +Invalid backdrop-filter doesn't cause element to disappear + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-plus-will-change-opacity.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-plus-will-change-opacity.html new file mode 100644 index 00000000000..250a13e0f42 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-plus-will-change-opacity.html @@ -0,0 +1,19 @@ + + +backdrop-filter: Correctly apply backdrop-filter with will-change opacity + + + + +

    Expected: A black box.

    + +
    + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-svg-background-image-blur.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-svg-background-image-blur.html new file mode 100644 index 00000000000..9cd18b0542c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-svg-background-image-blur.html @@ -0,0 +1,27 @@ + + +Maybe-unsupported backdrop-filter doesn't cause element to disappear + + + + + +
    + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/crashtests/broken-reference-crash-001.html b/tests/wpt/web-platform-tests/css/filter-effects/crashtests/broken-reference-crash-001.html new file mode 100644 index 00000000000..6e18e06c317 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/crashtests/broken-reference-crash-001.html @@ -0,0 +1,38 @@ + + + + CSS Filters: non-existent filters should not crash + + + + + + + + +
    +
    PASS
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/crashtests/felighting-display-none-mutation-crash.html b/tests/wpt/web-platform-tests/css/filter-effects/crashtests/felighting-display-none-mutation-crash.html new file mode 100644 index 00000000000..bc3e2333bf6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/crashtests/felighting-display-none-mutation-crash.html @@ -0,0 +1,20 @@ + + + Changing 'display' to 'none' on a filter primitive shouldn't crash. + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/css-filters-animation-blur.html b/tests/wpt/web-platform-tests/css/filter-effects/css-filters-animation-blur.html index 7a09e83a315..f1bedd1c245 100644 --- a/tests/wpt/web-platform-tests/css/filter-effects/css-filters-animation-blur.html +++ b/tests/wpt/web-platform-tests/css/filter-effects/css-filters-animation-blur.html @@ -10,6 +10,7 @@ + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-chained-url-url-001.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-chained-url-url-001.html new file mode 100644 index 00000000000..3f58834989a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-chained-url-url-001.html @@ -0,0 +1,11 @@ + +Chained identity url() filters with 'linearRGB' color-interpolation-filters + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-001.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-001.html new file mode 100644 index 00000000000..42942185117 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-001.html @@ -0,0 +1,23 @@ + + + +filter function can be applied to an image included as content + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-002.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-002.html new file mode 100644 index 00000000000..c1b0b0a78c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-002.html @@ -0,0 +1,34 @@ + + + +filter function can be applied to border-image + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-003.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-003.html new file mode 100644 index 00000000000..cb1bf358192 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-003.html @@ -0,0 +1,20 @@ + + + +filter function can be applied to a background-image + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-004.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-004.html new file mode 100644 index 00000000000..07825d8d0d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-004.html @@ -0,0 +1,28 @@ + + + +filter function can be applied to a mask-image + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-005.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-005.html new file mode 100644 index 00000000000..2d3ad5b9a95 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-005.html @@ -0,0 +1,24 @@ + + + +filter function units are not scaled when applied to a scaled image included as content + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-006.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-006.html new file mode 100644 index 00000000000..fe5c0c38495 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-006.html @@ -0,0 +1,36 @@ + + + +filter function unis are not scaled when applied to a scaled border-image + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-007.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-007.html new file mode 100644 index 00000000000..aad794e019e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-007.html @@ -0,0 +1,31 @@ + + + +filter function units are not scaled when applied to a scaled background-image + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-008.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-008.html new file mode 100644 index 00000000000..951a4ed7fd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/filter-function-008.html @@ -0,0 +1,29 @@ + + + +filter function units are not scaled when applied to a scaled mask-image + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-100x100.png b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-100x100.png new file mode 100644 index 00000000000..fe89b0da375 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-100x100.png differ diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-200x200.png b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-200x200.png new file mode 100644 index 00000000000..deac37042f7 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-200x200.png differ diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-20x10.png b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-20x10.png new file mode 100644 index 00000000000..3570d532184 Binary files /dev/null and b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-20x10.png differ diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-80x80.png b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-80x80.png new file mode 100644 index 00000000000..cf180535b9b Binary files /dev/null and b/tests/wpt/web-platform-tests/css/filter-effects/filter-function/resources/green-transparent-80x80.png differ diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-invalid-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-invalid-ref.html new file mode 100644 index 00000000000..086dfe97a0d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-invalid-ref.html @@ -0,0 +1,19 @@ + + +CSS Test Reference + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-invalid.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-invalid.html new file mode 100644 index 00000000000..3aad44efd4e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-invalid.html @@ -0,0 +1,24 @@ + + +Invalid filter draws unfiltered frame + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filter-svg-background-image-blur.html b/tests/wpt/web-platform-tests/css/filter-effects/filter-svg-background-image-blur.html new file mode 100644 index 00000000000..ab56d73c054 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filter-svg-background-image-blur.html @@ -0,0 +1,27 @@ + + +Unsupported filter draws unfiltered frame + + + + + +
    + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/filters-drop-shadow-003.html b/tests/wpt/web-platform-tests/css/filter-effects/filters-drop-shadow-003.html new file mode 100644 index 00000000000..2dda6d0140b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/filters-drop-shadow-003.html @@ -0,0 +1,20 @@ + +CSS Filters: drop-shadow filter on element in outside of the view + + + + + + +You should see a green box. +
    diff --git a/tests/wpt/web-platform-tests/css/filter-effects/fixed-pos-filter-clip-001.html b/tests/wpt/web-platform-tests/css/filter-effects/fixed-pos-filter-clip-001.html new file mode 100644 index 00000000000..3633872711f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/fixed-pos-filter-clip-001.html @@ -0,0 +1,13 @@ + + +filter + fixed pos clipping + + + + + + +
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/filter-effects/fixed-pos-filter-clip-002-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/fixed-pos-filter-clip-002-ref.html new file mode 100644 index 00000000000..d281f2a852e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/fixed-pos-filter-clip-002-ref.html @@ -0,0 +1,6 @@ + + +CSS Test Reference + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/fixed-pos-filter-clip-002.html b/tests/wpt/web-platform-tests/css/filter-effects/fixed-pos-filter-clip-002.html new file mode 100644 index 00000000000..196e4c91fc3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/fixed-pos-filter-clip-002.html @@ -0,0 +1,21 @@ + + +filter + fixed pos clipping + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/backdrop-filter-plus-will-change-opacity-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/backdrop-filter-plus-will-change-opacity-ref.html new file mode 100644 index 00000000000..56c6243809b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/backdrop-filter-plus-will-change-opacity-ref.html @@ -0,0 +1,11 @@ + + +

    Expected: A black box.

    +
    + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-004-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-004-ref.html new file mode 100644 index 00000000000..0aa3378e590 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-004-ref.html @@ -0,0 +1,2 @@ + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/filters-drop-shadow-003-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/filters-drop-shadow-003-ref.html new file mode 100644 index 00000000000..94c265066b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/filters-drop-shadow-003-ref.html @@ -0,0 +1,10 @@ + + +You should see a green box. +
    diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/repaint-added-backdrop-filter-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/repaint-added-backdrop-filter-ref.html new file mode 100644 index 00000000000..caaa3061eda --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/repaint-added-backdrop-filter-ref.html @@ -0,0 +1,11 @@ + + +

    Expected: A black box.

    +
    + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/repaint-added-backdrop-filter.html b/tests/wpt/web-platform-tests/css/filter-effects/repaint-added-backdrop-filter.html new file mode 100644 index 00000000000..6678ba4358d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/repaint-added-backdrop-filter.html @@ -0,0 +1,33 @@ + + + +backdrop-filter: Correctly repaint added backdrop-filter + + + + + +

    Expected: A black box.

    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/svg-image-root-filter-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/svg-image-root-filter-ref.html new file mode 100644 index 00000000000..a11aaf36f8c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/svg-image-root-filter-ref.html @@ -0,0 +1,6 @@ + + +CSS Test Reference + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/svg-image-root-filter.html b/tests/wpt/web-platform-tests/css/filter-effects/svg-image-root-filter.html new file mode 100644 index 00000000000..6df6eb23b9a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/svg-image-root-filter.html @@ -0,0 +1,10 @@ + + +CSS Filter Effects: filters work on the root of an svg image + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/will-change-blur-filter-under-clip.html b/tests/wpt/web-platform-tests/css/filter-effects/will-change-blur-filter-under-clip.html new file mode 100644 index 00000000000..68e622c36ad --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/will-change-blur-filter-under-clip.html @@ -0,0 +1,8 @@ + + + + +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/geometry/DOMMatrix-invert-invertible.html b/tests/wpt/web-platform-tests/css/geometry/DOMMatrix-invert-invertible.html new file mode 100644 index 00000000000..d5bef624d2b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/geometry/DOMMatrix-invert-invertible.html @@ -0,0 +1,76 @@ + + + + + +

    Test DOMMatrix.inverse()/invertSelf() for invertible matrices

    + diff --git a/tests/wpt/web-platform-tests/css/geometry/DOMMatrix-invert-non-invertible.html b/tests/wpt/web-platform-tests/css/geometry/DOMMatrix-invert-non-invertible.html new file mode 100644 index 00000000000..b3295321e0c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/geometry/DOMMatrix-invert-non-invertible.html @@ -0,0 +1,50 @@ + + + + +

    Test DOMMatrix.inverse()/invertSelf() for non-invertible matrix

    + diff --git a/tests/wpt/web-platform-tests/css/geometry/DOMMatrix-invert-preserves-2d.html b/tests/wpt/web-platform-tests/css/geometry/DOMMatrix-invert-preserves-2d.html new file mode 100644 index 00000000000..a4f0b584969 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/geometry/DOMMatrix-invert-preserves-2d.html @@ -0,0 +1,41 @@ + +Test DOMMatrix.inverse()/invertSelf() keep is2D status + + + + diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/dynamic-range.html b/tests/wpt/web-platform-tests/css/mediaqueries/dynamic-range.html index f423efbefe9..babe1b9f0d4 100644 --- a/tests/wpt/web-platform-tests/css/mediaqueries/dynamic-range.html +++ b/tests/wpt/web-platform-tests/css/mediaqueries/dynamic-range.html @@ -5,33 +5,19 @@ + + + + diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/mq-calc-007.html b/tests/wpt/web-platform-tests/css/mediaqueries/mq-calc-007.html new file mode 100644 index 00000000000..5f846ca083b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/mediaqueries/mq-calc-007.html @@ -0,0 +1,20 @@ + +Test: evaluation of mixed-unit calc in Media Queries + + + + +

    Test passes if there is a filled green square and no red.

    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/mq-invalid-media-type-layer-001.html b/tests/wpt/web-platform-tests/css/mediaqueries/mq-invalid-media-type-layer-001.html new file mode 100644 index 00000000000..ef3fc48ca88 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/mediaqueries/mq-invalid-media-type-layer-001.html @@ -0,0 +1,31 @@ + + + + Test: syntax error handling in Media Queries + + + + + + + + +

    Test passes if there is a filled green square and no red.

    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/mq-invalid-media-type-layer-002.html b/tests/wpt/web-platform-tests/css/mediaqueries/mq-invalid-media-type-layer-002.html new file mode 100644 index 00000000000..3f8b719bfab --- /dev/null +++ b/tests/wpt/web-platform-tests/css/mediaqueries/mq-invalid-media-type-layer-002.html @@ -0,0 +1,27 @@ + + + +Mediaqueries-3 test: parsing hanging-punctuation with invalid values + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/mq-unknown-feature-custom-property.html b/tests/wpt/web-platform-tests/css/mediaqueries/mq-unknown-feature-custom-property.html new file mode 100644 index 00000000000..48ad5b4f514 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/mediaqueries/mq-unknown-feature-custom-property.html @@ -0,0 +1,13 @@ + +Media Queries Test: Custom property name as media feature name + + + + + diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/navigation-controls.tentative.html b/tests/wpt/web-platform-tests/css/mediaqueries/navigation-controls.tentative.html index ac1087bb65b..5be0b78ab8b 100644 --- a/tests/wpt/web-platform-tests/css/mediaqueries/navigation-controls.tentative.html +++ b/tests/wpt/web-platform-tests/css/mediaqueries/navigation-controls.tentative.html @@ -4,16 +4,11 @@
    +
    diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/resources/matchmedia-utils.js b/tests/wpt/web-platform-tests/css/mediaqueries/resources/matchmedia-utils.js index 544f68c0400..327e8f69fe2 100644 --- a/tests/wpt/web-platform-tests/css/mediaqueries/resources/matchmedia-utils.js +++ b/tests/wpt/web-platform-tests/css/mediaqueries/resources/matchmedia-utils.js @@ -47,3 +47,30 @@ function query_should_not_be_js_parseable(query) { assert_false(query_is_js_parseable(query)); }, "Should not be parseable in JS: '" + query + "'"); } + +function query_is_known(query) { + return window.matchMedia(`${query}, not all and ${query}`).matches; +} + +function query_is_unknown(query) { + return !window.matchMedia(`${query}, not all and ${query}`).matches; +} + +function query_should_be_known(query) { + test(() => { + assert_true(query_is_js_parseable(query), "Can parse with JS"); + assert_true(query_is_css_parseable(query), "Can parse with CSS"); + assert_true(query_is_known(query)); + }, "Should be known: '" + query + "'"); +} + +function query_should_be_unknown(query) { + test(() => { + assert_true(query_is_js_parseable(query), "Can parse with JS"); + assert_true(query_is_css_parseable(query), "Can parse with CSS"); + }, "Should be parseable: '" + query + "'"); + + test(() => { + assert_true(query_is_unknown(query)); + }, "Should be unknown: '" + query + "'"); +} diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/resources/prefers-color-scheme-dark.svg b/tests/wpt/web-platform-tests/css/mediaqueries/resources/prefers-color-scheme-dark.svg new file mode 100644 index 00000000000..f65fce76ecb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/mediaqueries/resources/prefers-color-scheme-dark.svg @@ -0,0 +1,6 @@ + + + + diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/resources/prefers-color-scheme-light.svg b/tests/wpt/web-platform-tests/css/mediaqueries/resources/prefers-color-scheme-light.svg new file mode 100644 index 00000000000..23ac2ad9496 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/mediaqueries/resources/prefers-color-scheme-light.svg @@ -0,0 +1,6 @@ + + + + diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/resources/prefers-color-scheme.svg b/tests/wpt/web-platform-tests/css/mediaqueries/resources/prefers-color-scheme.svg new file mode 100644 index 00000000000..5523ff39fa4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/mediaqueries/resources/prefers-color-scheme.svg @@ -0,0 +1,9 @@ + + + + diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html b/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html index a57a4c5a453..22bf2db0dbb 100644 --- a/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html +++ b/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html @@ -30,28 +30,27 @@ setup({ "explicit_done": true }); return body_cs.getPropertyValue("text-decoration-line") == "underline"; } - function should_apply(q) { - test(function() { - // lazily evaluate template string to avoid including device-specific data in test name - var escaped = JSON.stringify(q); - var evalq = eval("`" + escaped.substring(1, escaped.length - 1) + "`"); - // Also avoid an assert message for the same reason. (Relevant for - // failing tests). - assert_true(query_applies(evalq)); - }, `${testGroup ? testGroup + ": " : ""}should_apply: ${q}`); + function not(predicate) { + return (...args) => !predicate(...args); } - function should_not_apply(q, extraName) { - if (extraName) extraName += " "; - else extraName = ""; - test(function() { + function test_predicate(input, predicate, name) { + test(() => { // lazily evaluate template string to avoid including device-specific data in test name - var escaped = JSON.stringify(q); - var evalq = eval("`" + escaped.substring(1, escaped.length - 1) + "`"); + var escaped = JSON.stringify(input); + var evaled = eval("`" + escaped.substring(1, escaped.length - 1) + "`"); // Also avoid an assert message for the same reason. (Relevant for // failing tests). - assert_false(query_applies(evalq)); - }, `${testGroup ? testGroup + ": " : ""}should_not_apply: ${q}`); + assert_true(predicate(evaled)) + }, `${testGroup ? testGroup + ": " : ""}${name}: ${input}`); + } + + function should_apply(q) { + test_predicate(q, query_applies, "should_apply"); + } + + function should_not_apply(q) { + test_predicate(q, not(query_applies), "should_not_apply"); } /* @@ -78,60 +77,42 @@ setup({ "explicit_done": true }); } function query_should_be_parseable(q) { - test(function() { - // lazily evaluate template string to avoid including device-specific data in test name - var escaped = JSON.stringify(q); - var evalq = eval("`" + escaped.substring(1, escaped.length - 1) + "`"); - // Also avoid an assert message for the same reason. (Relevant for - // failing tests). - assert_true(query_is_parseable(evalq)) - }, `${testGroup ? testGroup + ": " : ""}query_should_be_parseable: ${q}`); + test_predicate(q, query_is_parseable, "query_should_be_parseable"); } function query_should_not_be_parseable(q) { - test(function() { - // lazily evaluate template string to avoid including device-specific data in test name - var escaped = JSON.stringify(q); - var evalq = eval("`" + escaped.substring(1, escaped.length - 1) + "`"); - // Also avoid an assert message for the same reason. (Relevant for - // failing tests). - assert_false(query_is_parseable(evalq)); - }, `${testGroup ? testGroup + ": " : ""}query_should_not_be_parseable: ${q}`); + test_predicate(q, not(query_is_parseable), "query_should_not_be_parseable"); } /* - * Functions to test whether a single media expression is parseable. + * Functions to test whether a single media expression is "unknown" or not. + * + * https://drafts.csswg.org/mediaqueries-4/#evaluating */ + function expression_is_parseable(e) { - style.setAttribute("media", "all and (" + e + ")"); - return style.sheet.media.mediaText != "not all"; + return query_is_parseable(`(${e})`); } - function expression_should_be_parseable(e) { - test(function() { - // lazily evaluate template string to avoid including device-specific data in test name - var escaped = JSON.stringify(e); - var evale = eval("`" + escaped.substring(1, escaped.length - 1) + "`"); - // Also avoid an assert message for the same reason. (Relevant for - // failing tests). - assert_true(expression_is_parseable(evale)); - }, `${testGroup ? testGroup + ": " : ""}expression_should_be_parseable: ${e}`); + function expression_is_known(e) { + return query_applies(`(${e}), not all and (${e})`); } - function expression_should_not_be_parseable(e) { - test(function() { - // lazily evaluate template string to avoid including device-specific data in test name - var escaped = JSON.stringify(e); - var evale = eval("`" + escaped.substring(1, escaped.length - 1) + "`"); - // Also avoid an assert message for the same reason. (Relevant for - // failing tests). - assert_false(expression_is_parseable(evale)); - }, `${testGroup ? testGroup + ": " : ""}expression_should_not_be_parseable: ${e}`); + function expression_should_be_known(e) { + // We don't bother with expression_is_parseable here, because it must be parseable to be known + test_predicate(e, expression_is_known, "expression_should_be_known"); + } + + function expression_should_be_unknown(e) { + test_predicate(e, expression_is_parseable, "expression_should_be_parseable"); + test_predicate(e, not(expression_is_known), "expression_should_be_unknown"); } // The no-type syntax doesn't mix with the not and only keywords. query_should_be_parseable("(orientation)"); query_should_be_parseable("not (orientation)"); + expression_should_be_known("(orientation)"); + expression_should_be_known("not (orientation)"); query_should_not_be_parseable("only (orientation)"); query_should_be_parseable("all and (orientation)"); query_should_be_parseable("not all and (orientation)"); @@ -141,6 +122,9 @@ setup({ "explicit_done": true }); query_should_be_parseable("(orientation) and (orientation)"); query_should_be_parseable("(orientation) or (orientation)"); query_should_be_parseable("(orientation) or ((orientation) and ((orientation) or (orientation) or (not (orientation))))"); + expression_should_be_known("(orientation) and (orientation)"); + expression_should_be_known("(orientation) or (orientation)"); + expression_should_be_known("(orientation) or ((orientation) and ((orientation) or (orientation) or (not (orientation))))"); query_should_not_be_parseable("all and (orientation) or (orientation)"); query_should_be_parseable("all and (orientation) and (orientation)"); @@ -148,42 +132,57 @@ setup({ "explicit_done": true }); query_should_not_be_parseable("(orientation) and (orientation) or (orientation)"); query_should_not_be_parseable("(orientation) and not (orientation)"); - var features = [ "width", "height", "device-width", "device-height" ]; var separators = [ ":", ">", ">=", "=", "<=", "<" ]; var feature; var i; for (i in features) { feature = features[i]; - expression_should_be_parseable(feature); - expression_should_not_be_parseable("min-" + feature); - expression_should_not_be_parseable("max-" + feature); + expression_should_be_known(feature); + expression_should_be_unknown("min-" + feature); + expression_should_be_unknown("max-" + feature); for (let separator of separators) { - expression_should_be_parseable(feature + " " + separator + " 0"); - expression_should_be_parseable(feature + " " + separator + " 0px"); - expression_should_be_parseable(feature + " " + separator + " 0em"); - expression_should_be_parseable(feature + " " + separator + " -0"); - expression_should_be_parseable(feature + " " + separator + " -0cm"); - expression_should_be_parseable(feature + " " + separator + " 1px"); - expression_should_be_parseable(feature + " " + separator + " 0.001mm"); - expression_should_be_parseable(feature + " " + separator + " 100000px"); + expression_should_be_known(feature + " " + separator + " 0"); + expression_should_be_known(feature + " " + separator + " 0px"); + expression_should_be_known(feature + " " + separator + " 0em"); + expression_should_be_known(feature + " " + separator + " -0"); + expression_should_be_known(feature + " " + separator + " -0cm"); + expression_should_be_known(feature + " " + separator + " 1px"); + expression_should_be_known(feature + " " + separator + " 0.001mm"); + expression_should_be_known(feature + " " + separator + " 100000px"); if (separator == ":") { - expression_should_be_parseable("min-" + feature + " " + separator + " -0"); - expression_should_be_parseable("max-" + feature + " " + separator + " -0"); + expression_should_be_known("min-" + feature + " " + separator + " -0"); + expression_should_be_known("max-" + feature + " " + separator + " -0"); } else { - expression_should_not_be_parseable("min-" + feature + " " + separator + " -0"); - expression_should_not_be_parseable("max-" + feature + " " + separator + " -0"); + expression_should_be_unknown("min-" + feature + " " + separator + " -0"); + expression_should_be_unknown("max-" + feature + " " + separator + " -0"); + let multi_range = "0px " + separator + " " + feature + " " + separator + " 100000px" + if (separator == "=") { + expression_should_be_unknown(multi_range); + } else { + expression_should_be_known(multi_range); + } } if (separator == ">=") { - expression_should_not_be_parseable(feature + " " + "> =" + " 0px"); + expression_should_be_unknown(feature + " > = 0px"); } else if (separator == "<=") { - expression_should_not_be_parseable(feature + " " + "< =" + " 0px"); + expression_should_be_unknown(feature + " < = 0px"); + } + + expression_should_be_unknown(feature + " " + separator + " -1px"); + expression_should_be_unknown("min-" + feature + " " + separator + " -1px"); + expression_should_be_unknown("max-" + feature + " " + separator + " -1px"); + expression_should_be_unknown(feature + " " + separator + " -0.00001mm"); + expression_should_be_unknown(feature + " " + separator + " -100000em"); + + for (let separator2 of separators) { + // https://drafts.csswg.org/mediaqueries-4/#typedef-mf-range + if (separator[0] == separator2[0] && (separator[0] == '<' || separator[0] == '>')) { + expression_should_be_known(`0px ${separator} ${feature} ${separator2} 0px`); + } else { + expression_should_be_unknown(`0px ${separator} ${feature} ${separator2} 0px`); + } } - expression_should_not_be_parseable(feature + " " + separator + " -1px"); - expression_should_not_be_parseable("min-" + feature + " " + separator + " -1px"); - expression_should_not_be_parseable("max-" + feature + " " + separator + " -1px"); - expression_should_not_be_parseable(feature + " " + separator + " -0.00001mm"); - expression_should_not_be_parseable(feature + " " + separator + " -100000em"); } } @@ -227,6 +226,13 @@ setup({ "explicit_done": true }); should_apply("(" + feature + " <= ${value}px)"); should_apply("(" + feature + " >= ${value}px)"); + + should_apply("(0px < " + feature + " <= ${value}px)"); + should_apply("(${value}px >= " + feature + " > 0px)"); + + should_not_apply("(0px < " + feature + " < ${value}px)"); + should_not_apply("(${value}px > " + feature + " > 0px)"); + should_not_apply("(" + feature + " < ${value}px)"); should_not_apply("(" + feature + " > ${value}px)"); @@ -239,6 +245,20 @@ setup({ "explicit_done": true }); should_apply("(" + feature + " >= ${value - 1}px)"); should_not_apply("(" + feature + " < ${value - 1}px)"); should_not_apply("(" + feature + " <= ${value - 1}px)"); + + should_apply("(${value - 1}px < " + feature + ")"); + should_apply("(${value - 1}px <= " + feature + ")"); + should_not_apply("(${value - 1}px > " + feature + ")"); + should_not_apply("(${value - 1}px >= " + feature + ")"); + + should_apply("(${value - 1}px < " + feature + " < ${value + 1}px)"); + should_apply("(${value - 1}px < " + feature + " <= ${value}px)"); + should_apply("(${value}px <= " + feature + " < ${value + 1}px)"); + should_apply("(${value + 1}px > " + feature + " > ${value - 1}px)"); + should_apply("(${value + 1}px > " + feature + " >= ${value}px)"); + should_apply("(${value}px >= " + feature + " > ${value - 1}px)"); + should_not_apply("(${value}px > " + feature + " > ${value - 1}px)"); + should_not_apply("(${value + 1}px > " + feature + " > ${value}px)"); } iframe_style.width = "0"; @@ -264,15 +284,15 @@ setup({ "explicit_done": true }); testGroup = "ratio that reduces to 59/40"; iframe_style.width = "236px"; iframe_style.height = "160px"; - expression_should_be_parseable("orientation"); - expression_should_be_parseable("orientation: portrait"); - expression_should_be_parseable("orientation: landscape"); - expression_should_not_be_parseable("min-orientation"); - expression_should_not_be_parseable("min-orientation: portrait"); - expression_should_not_be_parseable("min-orientation: landscape"); - expression_should_not_be_parseable("max-orientation"); - expression_should_not_be_parseable("max-orientation: portrait"); - expression_should_not_be_parseable("max-orientation: landscape"); + expression_should_be_known("orientation"); + expression_should_be_known("orientation: portrait"); + expression_should_be_known("orientation: landscape"); + expression_should_be_unknown("min-orientation"); + expression_should_be_unknown("min-orientation: portrait"); + expression_should_be_unknown("min-orientation: landscape"); + expression_should_be_unknown("max-orientation"); + expression_should_be_unknown("max-orientation: portrait"); + expression_should_be_unknown("max-orientation: landscape"); should_apply("(orientation)"); should_apply("(orientation: landscape)"); should_not_apply("(orientation: portrait)"); @@ -305,14 +325,14 @@ setup({ "explicit_done": true }); should_apply("(min-aspect-ratio: 59/81)"); should_not_apply("(min-aspect-ratio: 60/80)"); should_not_apply("(min-aspect-ratio: 59/79)"); - expression_should_not_be_parseable("min-aspect-ratio"); + expression_should_be_unknown("min-aspect-ratio"); should_apply("(max-aspect-ratio: 59/80)"); should_not_apply("(max-aspect-ratio: 58/80)"); should_not_apply("(max-aspect-ratio: 59/81)"); should_apply("(max-aspect-ratio: 60/80)"); should_apply("(max-aspect-ratio: 59/79)"); - expression_should_not_be_parseable("max-aspect-ratio"); + expression_should_be_unknown("max-aspect-ratio"); var real_dar = device_width + "/" + device_height; var high_dar_1 = (device_width + 1) + "/" + device_height; @@ -331,36 +351,36 @@ setup({ "explicit_done": true }); should_apply("not all and (min-device-aspect-ratio: ${high_dar_2})"); should_not_apply("not all and (min-device-aspect-ratio: ${low_dar_1})"); should_apply("all and (min-device-aspect-ratio: ${low_dar_2})"); - expression_should_not_be_parseable("min-device-aspect-ratio"); + expression_should_be_unknown("min-device-aspect-ratio"); should_apply("all and (max-device-aspect-ratio: ${real_dar})"); should_apply("(max-device-aspect-ratio: ${high_dar_1})"); should_apply("(max-device-aspect-ratio: ${high_dar_2})"); should_not_apply("all and (max-device-aspect-ratio: ${low_dar_1})"); should_apply("not all and (max-device-aspect-ratio: ${low_dar_2})"); - expression_should_not_be_parseable("max-device-aspect-ratio"); + expression_should_be_unknown("max-device-aspect-ratio"); features = [ "max-aspect-ratio", "device-aspect-ratio" ]; for (i in features) { feature = features[i]; - expression_should_be_parseable(feature + ": 1/1"); - expression_should_be_parseable(feature + ": 1 /1"); - expression_should_be_parseable(feature + ": 1 / \t\n1"); - expression_should_be_parseable(feature + ": 1/\r1"); - expression_should_be_parseable(feature + ": 1"); - expression_should_be_parseable(feature + ": 0.5"); - expression_should_be_parseable(feature + ": 1.0/1"); - expression_should_be_parseable(feature + ": 1/1.0"); - expression_should_be_parseable(feature + ": 1.0/1.0"); - expression_should_be_parseable(feature + ": 0/1"); - expression_should_be_parseable(feature + ": 1/0"); - expression_should_be_parseable(feature + ": 0/0"); - expression_should_not_be_parseable(feature + ": -1/1"); - expression_should_not_be_parseable(feature + ": 1/-1"); - expression_should_not_be_parseable(feature + ": -1/-1"); - expression_should_not_be_parseable(feature + ": invalid"); - expression_should_not_be_parseable(feature + ": 1 / invalid"); - expression_should_not_be_parseable(feature + ": 1 invalid"); + expression_should_be_known(feature + ": 1/1"); + expression_should_be_known(feature + ": 1 /1"); + expression_should_be_known(feature + ": 1 / \t\n1"); + expression_should_be_known(feature + ": 1/\r1"); + expression_should_be_known(feature + ": 1"); + expression_should_be_known(feature + ": 0.5"); + expression_should_be_known(feature + ": 1.0/1"); + expression_should_be_known(feature + ": 1/1.0"); + expression_should_be_known(feature + ": 1.0/1.0"); + expression_should_be_known(feature + ": 0/1"); + expression_should_be_known(feature + ": 1/0"); + expression_should_be_known(feature + ": 0/0"); + expression_should_be_unknown(feature + ": -1/1"); + expression_should_be_unknown(feature + ": 1/-1"); + expression_should_be_unknown(feature + ": -1/-1"); + expression_should_be_unknown(feature + ": invalid"); + expression_should_be_unknown(feature + ": 1 / invalid"); + expression_should_be_unknown(feature + ": 1 invalid"); } var is_monochrome = query_applies("all and (min-monochrome: 1)"); @@ -393,11 +413,11 @@ setup({ "explicit_done": true }); should_apply(depth_query("max-", depth + 1)); (is_color ? should_apply : should_not_apply)("all and (color)"); - expression_should_not_be_parseable("max-color"); - expression_should_not_be_parseable("min-color"); + expression_should_be_unknown("max-color"); + expression_should_be_unknown("min-color"); (is_color ? should_not_apply : should_apply)("all and (monochrome)"); - expression_should_not_be_parseable("max-monochrome"); - expression_should_not_be_parseable("min-monochrome"); + expression_should_be_unknown("max-monochrome"); + expression_should_be_unknown("min-monochrome"); (is_color ? should_apply : should_not_apply)("not all and (monochrome)"); (is_color ? should_not_apply : should_apply)("not all and (color)"); (is_color ? should_apply : should_not_apply)("only all and (color)"); @@ -406,12 +426,12 @@ setup({ "explicit_done": true }); features = [ "color", "min-monochrome", "max-color-index" ]; for (i in features) { feature = features[i]; - expression_should_be_parseable(feature + ": 1"); - expression_should_be_parseable(feature + ": 327"); - expression_should_be_parseable(feature + ": 0"); - expression_should_not_be_parseable(feature + ": 1.0"); - expression_should_not_be_parseable(feature + ": -1"); - expression_should_not_be_parseable(feature + ": 1/1"); + expression_should_be_known(feature + ": 1"); + expression_should_be_known(feature + ": 327"); + expression_should_be_known(feature + ": 0"); + expression_should_be_unknown(feature + ": 1.0"); + expression_should_be_unknown(feature + ": -1"); + expression_should_be_unknown(feature + ": 1/1"); } // Presume that we never support indexed color (at least not usefully @@ -427,21 +447,21 @@ setup({ "explicit_done": true }); features = [ "resolution", "min-resolution", "max-resolution" ]; for (i in features) { feature = features[i]; - expression_should_be_parseable(feature + ": 3dpi"); - expression_should_be_parseable(feature + ":3dpi"); - expression_should_be_parseable(feature + ": 3.0dpi"); - expression_should_be_parseable(feature + ": 3.4dpi"); - expression_should_be_parseable(feature + "\t: 120dpcm"); - expression_should_be_parseable(feature + ": 1dppx"); - expression_should_be_parseable(feature + ": 1x"); - expression_should_be_parseable(feature + ": 1.5dppx"); - expression_should_be_parseable(feature + ": 1.5x"); - expression_should_be_parseable(feature + ": 2.0dppx"); + expression_should_be_known(feature + ": 3dpi"); + expression_should_be_known(feature + ":3dpi"); + expression_should_be_known(feature + ": 3.0dpi"); + expression_should_be_known(feature + ": 3.4dpi"); + expression_should_be_known(feature + "\t: 120dpcm"); + expression_should_be_known(feature + ": 1dppx"); + expression_should_be_known(feature + ": 1x"); + expression_should_be_known(feature + ": 1.5dppx"); + expression_should_be_known(feature + ": 1.5x"); + expression_should_be_known(feature + ": 2.0dppx"); // TODO(emilio): Doesn't seem right to exclude 0 here. - expression_should_not_be_parseable(feature + ": 0dpi"); - expression_should_not_be_parseable(feature + ": -3dpi"); - expression_should_not_be_parseable(feature + ": 0dppx"); - expression_should_not_be_parseable(feature + ": 0x"); + expression_should_be_unknown(feature + ": 0dpi"); + expression_should_be_unknown(feature + ": -3dpi"); + expression_should_be_unknown(feature + ": 0dppx"); + expression_should_be_unknown(feature + ": 0x"); } // Find the resolution using max-resolution @@ -469,8 +489,8 @@ setup({ "explicit_done": true }); should_not_apply("(resolution: ${resolution - 1}dpi)"); dpi_high = resolution + 1; } else { - // We have no way to test resolution applying since it need not be - // an integer. + // We have no way to test resolution applying since it need not be + // an integer. testGroup = "resolution is inexact"; should_not_apply("(resolution: ${resolution}dpi)"); should_not_apply("(resolution: ${resolution - 1}dpi)"); @@ -491,13 +511,13 @@ setup({ "explicit_done": true }); should_not_apply("(max-resolution: ${dpcm_low}dpcm)"); should_apply("not all and (min-resolution: ${dpcm_high}dpcm)"); - expression_should_be_parseable("scan"); - expression_should_be_parseable("scan: progressive"); - expression_should_be_parseable("scan:interlace"); - expression_should_not_be_parseable("min-scan:interlace"); - expression_should_not_be_parseable("scan: 1"); - expression_should_not_be_parseable("max-scan"); - expression_should_not_be_parseable("max-scan: progressive"); + expression_should_be_known("scan"); + expression_should_be_known("scan: progressive"); + expression_should_be_known("scan:interlace"); + expression_should_be_unknown("min-scan:interlace"); + expression_should_be_unknown("scan: 1"); + expression_should_be_unknown("max-scan"); + expression_should_be_unknown("max-scan: progressive"); // Assume we don't support tv devices. should_not_apply("(scan)"); should_not_apply("(scan: progressive)"); @@ -506,14 +526,14 @@ setup({ "explicit_done": true }); should_apply("not all and (scan: progressive)"); should_apply("not all and (scan: interlace)"); - expression_should_be_parseable("grid"); - expression_should_be_parseable("grid: 0"); - expression_should_be_parseable("grid: 1"); - expression_should_not_be_parseable("min-grid"); - expression_should_not_be_parseable("min-grid:0"); - expression_should_not_be_parseable("max-grid: 1"); - expression_should_not_be_parseable("grid: 2"); - expression_should_not_be_parseable("grid: -1"); + expression_should_be_known("grid"); + expression_should_be_known("grid: 0"); + expression_should_be_known("grid: 1"); + expression_should_be_unknown("min-grid"); + expression_should_be_unknown("min-grid:0"); + expression_should_be_unknown("max-grid: 1"); + expression_should_be_unknown("grid: 2"); + expression_should_be_unknown("grid: -1"); // Assume we don't support grid devices should_not_apply("(grid)"); @@ -561,12 +581,12 @@ setup({ "explicit_done": true }); should_not_apply("only all and (bogus)") // Parsing tests for overflow-block from mediaqueries-4 - expression_should_be_parseable("overflow-block") - expression_should_be_parseable("overflow-block: none") - expression_should_be_parseable("overflow-block: paged") - expression_should_be_parseable("overflow-block: scroll") - expression_should_be_parseable("overflow-block: optional-paged") - expression_should_not_be_parseable("overflow-block: some-random-invalid-thing") + expression_should_be_known("overflow-block") + expression_should_be_known("overflow-block: none") + expression_should_be_known("overflow-block: paged") + expression_should_be_known("overflow-block: scroll") + expression_should_be_known("overflow-block: optional-paged") + expression_should_be_unknown("overflow-block: some-random-invalid-thing") // Sanity check for overflow-block test(function() { @@ -576,10 +596,10 @@ setup({ "explicit_done": true }); }, "Sanity check for overflow-block"); // Parsing tests for overflow-inline from mediaqueries-4 - expression_should_be_parseable("overflow-inline") - expression_should_be_parseable("overflow-inline: none") - expression_should_be_parseable("overflow-inline: scroll") - expression_should_not_be_parseable("overflow-inline: some-random-invalid-thing") + expression_should_be_known("overflow-inline") + expression_should_be_known("overflow-inline: none") + expression_should_be_known("overflow-inline: scroll") + expression_should_be_unknown("overflow-inline: some-random-invalid-thing") // Sanity check for overflow-inline test(function() { @@ -588,13 +608,27 @@ setup({ "explicit_done": true }); assert_not_equals(any_overflow_inline, overflow_inline_none, "overflow-inline should be equivalent to not (overflow-inline: none)"); }, "Sanity check for overflow-inline"); + // Parsing tests for update from mediaqueries-4 + expression_should_be_known("update") + expression_should_be_known("update: none") + expression_should_be_known("update: slow") + expression_should_be_known("update: fast") + expression_should_be_unknown("update: some-random-invalid-thing") + + // Sanity check for update + test(function() { + var any_update = query_applies("(update)"); + var update_none = query_applies("(update: none)"); + assert_not_equals(any_update, update_none, "update should be equivalent to not (update: none)"); + }, "Sanity check for update"); + // Parsing tests for interaction media features. - expression_should_be_parseable("hover") - expression_should_be_parseable("hover: hover") - expression_should_be_parseable("hover: none") - expression_should_be_parseable("any-hover") - expression_should_be_parseable("any-hover: hover") - expression_should_be_parseable("any-hover: none") + expression_should_be_known("hover") + expression_should_be_known("hover: hover") + expression_should_be_known("hover: none") + expression_should_be_known("any-hover") + expression_should_be_known("any-hover: hover") + expression_should_be_known("any-hover: none") test(function() { assert_equals(query_applies("(hover)"), query_applies("(hover: hover)")); @@ -612,14 +646,14 @@ setup({ "explicit_done": true }); assert_not_equals(query_applies("(any-hover)"), query_applies("(any-hover: none)")); }, "(any-hover) == not (any-hover: none)"); - expression_should_be_parseable("pointer") - expression_should_be_parseable("pointer: coarse") - expression_should_be_parseable("pointer: fine") - expression_should_be_parseable("pointer: none") - expression_should_be_parseable("any-pointer") - expression_should_be_parseable("any-pointer: coarse") - expression_should_be_parseable("any-pointer: fine") - expression_should_be_parseable("any-pointer: none") + expression_should_be_known("pointer") + expression_should_be_known("pointer: coarse") + expression_should_be_known("pointer: fine") + expression_should_be_known("pointer: none") + expression_should_be_known("any-pointer") + expression_should_be_known("any-pointer: coarse") + expression_should_be_known("any-pointer: fine") + expression_should_be_known("any-pointer: none") test(function() { assert_equals(query_applies("(pointer)"), @@ -641,6 +675,33 @@ setup({ "explicit_done": true }); query_applies("(any-pointer: none)")); }, "(any-pointer) == not (any-pointer: none)"); + iframe_style.width = '100px'; + iframe_style.height = '0px'; + + testGroup = "'or' keyword" + should_not_apply("(height) or (height)"); + should_apply("(width) or (height)"); + should_apply("(height) or (width)"); + should_apply("(height) or (width) or (height)"); + query_should_not_be_parseable("screen or (width)"); + query_should_not_be_parseable("screen and (width) or (height)"); + + testGroup = "nesting" + should_not_apply("((height))"); + should_apply("((width))"); + should_apply("(((((width)))))"); + should_apply("(((((width"); + + testGroup = "'not' keyword" + should_not_apply("not (width)"); + should_apply("not (height)"); + should_apply("not ((width) and (height))"); + should_not_apply("not ((width) or (height))"); + should_not_apply("not ((width) and (not (height)))"); + query_should_not_be_parseable("not (width) and not (height)"); + query_should_not_be_parseable("not not (width)"); + + testGroup = "" done(); } diff --git a/tests/wpt/web-platform-tests/css/motion/change-offset-path.html b/tests/wpt/web-platform-tests/css/motion/change-offset-path.html new file mode 100644 index 00000000000..bdc01a857bd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/motion/change-offset-path.html @@ -0,0 +1,33 @@ + + +Change offset-path property + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/motion/offset-path-geometry-box-ref.html b/tests/wpt/web-platform-tests/css/motion/offset-path-geometry-box-ref.html new file mode 100644 index 00000000000..eb7646db662 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/motion/offset-path-geometry-box-ref.html @@ -0,0 +1,21 @@ + + + + CSS Motion Path: path(geometry-box) paths + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/motion/offset-path-geometry-box.html b/tests/wpt/web-platform-tests/css/motion/offset-path-geometry-box.html new file mode 100644 index 00000000000..1e9399441c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/motion/offset-path-geometry-box.html @@ -0,0 +1,24 @@ + + + + CSS Motion Path: path(basic-shape) paths + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/motion/offset-path-shape-ref.html b/tests/wpt/web-platform-tests/css/motion/offset-path-shape-ref.html new file mode 100644 index 00000000000..a659b287fda --- /dev/null +++ b/tests/wpt/web-platform-tests/css/motion/offset-path-shape-ref.html @@ -0,0 +1,21 @@ + + + + CSS Motion Path: path(basic-shape) paths + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/motion/offset-path-shape.html b/tests/wpt/web-platform-tests/css/motion/offset-path-shape.html new file mode 100644 index 00000000000..2750fd9f2fc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/motion/offset-path-shape.html @@ -0,0 +1,24 @@ + + + + CSS Motion Path: path(basic-shape) paths + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/motion/offset-path-url-ref.html b/tests/wpt/web-platform-tests/css/motion/offset-path-url-ref.html new file mode 100644 index 00000000000..c5f8ec74e87 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/motion/offset-path-url-ref.html @@ -0,0 +1,21 @@ + + + + CSS Motion Path: path(url) paths + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/motion/offset-path-url.html b/tests/wpt/web-platform-tests/css/motion/offset-path-url.html new file mode 100644 index 00000000000..b8cd89104fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/motion/offset-path-url.html @@ -0,0 +1,27 @@ + + + + CSS Motion Path: path(url) paths + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/motion/offset-rotate-003.html b/tests/wpt/web-platform-tests/css/motion/offset-rotate-003.html index 8f52024a6fc..522ff35b051 100644 --- a/tests/wpt/web-platform-tests/css/motion/offset-rotate-003.html +++ b/tests/wpt/web-platform-tests/css/motion/offset-rotate-003.html @@ -5,6 +5,7 @@ + +

    blue with animation support; olive without

    diff --git a/tests/wpt/web-platform-tests/css/printing/animations-print.html b/tests/wpt/web-platform-tests/css/printing/animations-print.html new file mode 100644 index 00000000000..8839fd971e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/animations-print.html @@ -0,0 +1,18 @@ + + + + +Static CSS animation + +

    blue with animation support; olive without

    diff --git a/tests/wpt/web-platform-tests/css/printing/animations-shadow-print-ref.html b/tests/wpt/web-platform-tests/css/printing/animations-shadow-print-ref.html new file mode 100644 index 00000000000..60daae78bf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/animations-shadow-print-ref.html @@ -0,0 +1,5 @@ + + +Static CSS animation in Shadow DOM +

    blue with animation support; olive without

    +

    orange with animation support; olive without

    diff --git a/tests/wpt/web-platform-tests/css/printing/animations-shadow-print.html b/tests/wpt/web-platform-tests/css/printing/animations-shadow-print.html new file mode 100644 index 00000000000..0e80e9c45c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/animations-shadow-print.html @@ -0,0 +1,32 @@ + + + + +Static CSS animation in Shadow DOM + +

    blue with animation support; olive without

    +
    + diff --git a/tests/wpt/web-platform-tests/css/printing/background-image-print-ref.html b/tests/wpt/web-platform-tests/css/printing/background-image-print-ref.html new file mode 100644 index 00000000000..305aa2fce2f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/background-image-print-ref.html @@ -0,0 +1,40 @@ + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/printing/background-image-print.html b/tests/wpt/web-platform-tests/css/printing/background-image-print.html new file mode 100644 index 00000000000..8d294107406 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/background-image-print.html @@ -0,0 +1,44 @@ + + + + +test-case.html + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/printing/existing-transition-in-media-print.tentative.html b/tests/wpt/web-platform-tests/css/printing/existing-transition-in-media-print.tentative.html new file mode 100644 index 00000000000..3b83bdd5b08 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/existing-transition-in-media-print.tentative.html @@ -0,0 +1,22 @@ + +Printing with a transition that could trigger as a result of @media print + + + + +
    + Should not be red +
    + diff --git a/tests/wpt/web-platform-tests/css/printing/fragmented-inline-block-001-print.html b/tests/wpt/web-platform-tests/css/printing/fragmented-inline-block-001-print.html new file mode 100644 index 00000000000..848635431ec --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/fragmented-inline-block-001-print.html @@ -0,0 +1,33 @@ + + + + + test that inline-blocks are fragmented in print output + + + + + + + +
    +
      +
    1. +
    2. +
    3. +
    4. +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/printing/fragmented-inline-block-002-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fragmented-inline-block-002-print-ref.html new file mode 100644 index 00000000000..dcfa3a13856 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/fragmented-inline-block-002-print-ref.html @@ -0,0 +1,18 @@ + + + + + Reference Case + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/printing/fragmented-inline-block-002-print.html b/tests/wpt/web-platform-tests/css/printing/fragmented-inline-block-002-print.html new file mode 100644 index 00000000000..c5390aad6c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/fragmented-inline-block-002-print.html @@ -0,0 +1,25 @@ + + + + + test that inline-blocks are fragmented in print output + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/printing/input-file-print-ref.html b/tests/wpt/web-platform-tests/css/printing/input-file-print-ref.html new file mode 100644 index 00000000000..fb5255eddb1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/input-file-print-ref.html @@ -0,0 +1,22 @@ + + + + Reference case + + + + + +

    + +

    +
    + diff --git a/tests/wpt/web-platform-tests/css/printing/input-file-print.html b/tests/wpt/web-platform-tests/css/printing/input-file-print.html new file mode 100644 index 00000000000..a0700244632 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/input-file-print.html @@ -0,0 +1,23 @@ + + + + Test that file-input widgets have 'auto' height (not some other arbitrary value) when printed + + + + + + + +

    + +

    +
    + diff --git a/tests/wpt/web-platform-tests/css/printing/paused-animations-print-ref.html b/tests/wpt/web-platform-tests/css/printing/paused-animations-print-ref.html new file mode 100644 index 00000000000..c22ecd17458 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/paused-animations-print-ref.html @@ -0,0 +1,4 @@ + + +Paused CSS animation +

    blue with animation support; olive without

    diff --git a/tests/wpt/web-platform-tests/css/printing/paused-animations-print.html b/tests/wpt/web-platform-tests/css/printing/paused-animations-print.html new file mode 100644 index 00000000000..03ef1bab3c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/paused-animations-print.html @@ -0,0 +1,22 @@ + + + + +Paused CSS animation + +

    blue with animation support; olive without

    + diff --git a/tests/wpt/web-platform-tests/css/printing/pseudo-animations-print-ref.html b/tests/wpt/web-platform-tests/css/printing/pseudo-animations-print-ref.html new file mode 100644 index 00000000000..07107d1db78 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/pseudo-animations-print-ref.html @@ -0,0 +1,18 @@ + + +Static CSS animation + +

    blue with animation support; olive without

    diff --git a/tests/wpt/web-platform-tests/css/printing/pseudo-animations-print.html b/tests/wpt/web-platform-tests/css/printing/pseudo-animations-print.html new file mode 100644 index 00000000000..40585ba2c48 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/pseudo-animations-print.html @@ -0,0 +1,29 @@ + + + + +Static CSS animation + +

    blue with animation support; olive without

    diff --git a/tests/wpt/web-platform-tests/css/printing/transition-in-media-print-ref.html b/tests/wpt/web-platform-tests/css/printing/transition-in-media-print-ref.html new file mode 100644 index 00000000000..2f25c06131e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/transition-in-media-print-ref.html @@ -0,0 +1,5 @@ + +CSS test reference +
    + Should not be red +
    diff --git a/tests/wpt/web-platform-tests/css/printing/transition-in-media-print.tentative.html b/tests/wpt/web-platform-tests/css/printing/transition-in-media-print.tentative.html new file mode 100644 index 00000000000..54bac1f4812 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/printing/transition-in-media-print.tentative.html @@ -0,0 +1,19 @@ + +Printing with a transition that could trigger as a result of @media print + + + + +
    + Should not be red +
    diff --git a/tests/wpt/web-platform-tests/css/requirements.txt b/tests/wpt/web-platform-tests/css/requirements.txt deleted file mode 100644 index 02241970be7..00000000000 --- a/tests/wpt/web-platform-tests/css/requirements.txt +++ /dev/null @@ -1,6 +0,0 @@ -Template-Python==0.1.post1 -html5lib==1.1 -lxml==4.6.5 -mercurial==4.6.1 -six==1.15.0 -webencodings==0.5.1 diff --git a/tests/wpt/web-platform-tests/css/selectors/dir-style-01a.html b/tests/wpt/web-platform-tests/css/selectors/dir-style-01a.html index d7a423979a9..e362cd838d5 100644 --- a/tests/wpt/web-platform-tests/css/selectors/dir-style-01a.html +++ b/tests/wpt/web-platform-tests/css/selectors/dir-style-01a.html @@ -8,6 +8,7 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-027.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-027.html new file mode 100644 index 00000000000..b4e7117f06c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-027.html @@ -0,0 +1,28 @@ + + +CSS Test (Selectors): :focus-visible after click and input type change + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-script-focus-008-b.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-script-focus-008-b.html new file mode 100644 index 00000000000..4ea414f343a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-script-focus-008-b.html @@ -0,0 +1,64 @@ + + +CSS Test (Selectors): Script focus after mouse click on a button that does not match :focus-visible, does NOT match :focus-visible + + + + + + + + + +

    This test checks that a script focus after a mouse click on a button that does not match :focus visible, does NOT match :focus-visible.

    +
      +
    1. Click on the button that says "Click me".
    2. +
    3. If the element that says "Focused" has a red outline then the test result is FAILURE, if it has a green background then the test result is SUCCESS.
    4. +
    +

    Your user-agent does not support :focus-visible pseudo-class, please SKIP this test.

    + + +
    Focused
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-script-focus-020.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-script-focus-020.html new file mode 100644 index 00000000000..eb68efc6830 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-script-focus-020.html @@ -0,0 +1,70 @@ + + +CSS Test (Selectors): Double script focus after mouse click on a focusable element that does not match :focus-visible, does NOT match :focus-visible + + + + + + + + + +

    This test checks that a double script focus after a mouse click on a focusable element that does not match :focus visible, does NOT match :focus-visible.

    +
      +
    1. Click on the element that says "Click me".
    2. +
    3. If the element that says "Focused" has a red outline then the test result is FAILURE, if it has a green background then the test result is SUCCESS.
    4. +
    +

    Your user-agent does not support :focus-visible pseudo-class, please SKIP this test.

    + +
    Click me
    +
    Focused
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/has-argument-with-explicit-scope.tentative.html b/tests/wpt/web-platform-tests/css/selectors/has-argument-with-explicit-scope.html similarity index 100% rename from tests/wpt/web-platform-tests/css/selectors/has-argument-with-explicit-scope.tentative.html rename to tests/wpt/web-platform-tests/css/selectors/has-argument-with-explicit-scope.html diff --git a/tests/wpt/web-platform-tests/css/selectors/has-basic.html b/tests/wpt/web-platform-tests/css/selectors/has-basic.html index b346af6768a..3a73edd1841 100644 --- a/tests/wpt/web-platform-tests/css/selectors/has-basic.html +++ b/tests/wpt/web-platform-tests/css/selectors/has-basic.html @@ -70,10 +70,6 @@ test_selector_all(':has(:is(.target ~ .sibling .descendant))', [a, h, j]); test_selector_all('.parent:has(:is(.target ~ .sibling .descendant))', [h]); test_selector_all('.sibling:has(.descendant) ~ .target', [e]); - test_selector_all(':has(.sibling:has(.descendant) ~ .target)', [a, b]); - test_selector_all( - ':has(.sibling:has(.descendant) ~ .target) ~ .parent > .descendant', - [g, i, j]); test_selector_all(':has(> .parent)', [a]); test_selector_all(':has(> .target)', [b, f, h]); test_selector_all(':has(> .parent, > .target)', [a, b, f, h]); diff --git a/tests/wpt/web-platform-tests/css/selectors/has-error-recovery.html b/tests/wpt/web-platform-tests/css/selectors/has-error-recovery.html new file mode 100644 index 00000000000..b435d8c8f35 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/has-error-recovery.html @@ -0,0 +1,53 @@ + +CSS Selectors: :has() error recovery + + + + + +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/selectors/has-relative-argument.html b/tests/wpt/web-platform-tests/css/selectors/has-relative-argument.html index b4ba20f664a..aad7436884c 100644 --- a/tests/wpt/web-platform-tests/css/selectors/has-relative-argument.html +++ b/tests/wpt/web-platform-tests/css/selectors/has-relative-argument.html @@ -176,12 +176,6 @@ test_selector_all('.y:has(.g .h)', [d63, d68, d71]) test_selector_all('.y:has(> .g .h) .i', [d67, d75]) test_selector_all('.y:has(.g .h) .i', [d67, d75]) - test_selector_all('.x:has(+ .y:has(> .g .h) .i)', [d62, d70]) - test_selector_all('.x:has(+ .y:has(.g .h) .i)', [d62, d63, d70]) - test_selector_all('.x:has(+ .y:has(> .g .h) .i) ~ .j', [d77, d80]) - test_selector_all('.x:has(+ .y:has(.g .h) .i) ~ .j', [d77, d80]) - test_selector_all('.x:has(~ .y:has(> .g .h) .i)', [d61, d62, d69, d70]) - test_selector_all('.x:has(~ .y:has(.g .h) .i)', [d61, d62, d63, d69, d70]) test_selector_all('.d .x:has(.e)', [d51, d52]) diff --git a/tests/wpt/web-platform-tests/css/selectors/has-specificity.html b/tests/wpt/web-platform-tests/css/selectors/has-specificity.html index b33e3a0eb36..69fcb5b1fbe 100644 --- a/tests/wpt/web-platform-tests/css/selectors/has-specificity.html +++ b/tests/wpt/web-platform-tests/css/selectors/has-specificity.html @@ -21,9 +21,15 @@ main :has(span, li, #foo) { --t5:PASS; } main :has(span, li, p) { --t5:FAIL; } + + main div:has(.foo) { --t6:FAIL; } + main div.baz { --t6:PASS; } + + main div.baz { --t7:FAIL; } + main div:has(.foo) { --t7:PASS; }
    -

  13. +

  14. diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html new file mode 100644 index 00000000000..5c689e23330 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html @@ -0,0 +1,116 @@ + + +CSS Selectors Invalidation: child-indexed pseudo classes in :has() argument + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/empty-pseudo-in-has.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/empty-pseudo-in-has.html new file mode 100644 index 00000000000..83cf0515656 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/empty-pseudo-in-has.html @@ -0,0 +1,37 @@ + + +CSS Selectors Invalidation: :empty in :has() argument + + + + + +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-adjacent-position.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-adjacent-position.html index 2f7d5794a7f..5c1a1ecf78a 100644 --- a/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-adjacent-position.html +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-adjacent-position.html @@ -8,11 +8,17 @@
    @@ -32,11 +38,47 @@ div:has(+ div .test) + #subject { color: pink } diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-ancestor-position.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-ancestor-position.html index 0959044dfa5..7662fbde69e 100644 --- a/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-ancestor-position.html +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-ancestor-position.html @@ -8,11 +8,17 @@
    @@ -35,11 +41,47 @@ div:has(+ div .test) #subject { color: pink } diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-parent-position.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-parent-position.html index ba914108a84..4690e6929f5 100644 --- a/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-parent-position.html +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-parent-position.html @@ -8,11 +8,17 @@
    @@ -30,11 +36,47 @@ div:has(+ div .test) > #subject { color: pink } diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-sibling-position.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-sibling-position.html index dd8d73ac435..8b35940f87c 100644 --- a/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-sibling-position.html +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-in-sibling-position.html @@ -8,11 +8,17 @@
    @@ -32,11 +38,47 @@ div:has(+ div .test) ~ #subject { color: pink } diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html new file mode 100644 index 00000000000..482f07b8af6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html @@ -0,0 +1,31 @@ + + +:has() invalidation after removing non-first element + + + + + +
    +
    +
    + +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html new file mode 100644 index 00000000000..03fa9a55540 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html @@ -0,0 +1,42 @@ + + +:has() invalidation for wiping an element by means of innerHTML + + + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/has-with-not.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-with-not.html new file mode 100644 index 00000000000..b67ec5e3b7d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/has-with-not.html @@ -0,0 +1,107 @@ + + +CSS Selector Invalidation: :has() with :not() + + + + + + +
    +
    +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/host-pseudo-class-in-has.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/host-pseudo-class-in-has.html new file mode 100644 index 00000000000..a2c63d54635 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/host-pseudo-class-in-has.html @@ -0,0 +1,65 @@ + + +CSS Test: Invalidation for :host() and :host-context() inside :has() + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/input-pseudo-classes-in-has.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/input-pseudo-classes-in-has.html index 620e7801cc3..67aeedf315e 100644 --- a/tests/wpt/web-platform-tests/css/selectors/invalidation/input-pseudo-classes-in-has.html +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/input-pseudo-classes-in-has.html @@ -5,9 +5,6 @@ - - -
    @@ -25,9 +23,13 @@ +
    \ No newline at end of file + test(function() { + this.add_cleanup(() => { + numberinput.value = 5; + }); + assert_equals(getComputedStyle(subject).color, "rgb(0, 0, 0)", + "ancestor should be black"); + numberinput.value = 12; + assert_equals(getComputedStyle(subject).color, "rgb(0, 100, 0)", + "ancestor should be darkgreen"); + }, ":out-of-range invalidation"); + + test(function() { + this.add_cleanup(() => { + textinput.removeAttribute("placeholder"); + }); + assert_equals(getComputedStyle(subject).color, "rgb(0, 0, 0)", + "ancestor should be black"); + textinput.placeholder = 'placeholder text'; + assert_equals(getComputedStyle(subject).color, "rgb(0, 0, 128)", + "ancestor should be navy"); + }, ":placeholder-shown invalidation"); + diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html new file mode 100644 index 00000000000..4e6d4c8832e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html @@ -0,0 +1,379 @@ + + +CSS Selectors Invalidation: :is() in :has() argument + + + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/link-pseudo-in-has.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/link-pseudo-in-has.html new file mode 100644 index 00000000000..0ff879768b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/link-pseudo-in-has.html @@ -0,0 +1,97 @@ + + +CSS Selectors Invalidation: :link, :visited :any-link, pseudo-class in :has() argument + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/modal-pseudo-class-in-has.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/modal-pseudo-class-in-has.html new file mode 100644 index 00000000000..9c487fba16f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/modal-pseudo-class-in-has.html @@ -0,0 +1,44 @@ + + +CSS Selectors Invalidation: :modal pseudo class in :has() + + + + + +
    + This is some text. + This is a dialog +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html new file mode 100644 index 00000000000..d24abf69f73 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html @@ -0,0 +1,375 @@ + + +CSS Selectors Invalidation: :not(<complex-selector>) in :has() argument (complex selector) + + + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/subject-has-invalidation-with-display-none-anchor-element.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/subject-has-invalidation-with-display-none-anchor-element.html new file mode 100644 index 00000000000..6c87560c691 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/subject-has-invalidation-with-display-none-anchor-element.html @@ -0,0 +1,29 @@ + + +CSS Selectors Invalidation: subject :has() invalidation with display: none anchor element + + + + + +

    Click checkbox

    +
    PASS
    + + + diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/target-pseudo-in-has.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/target-pseudo-in-has.html new file mode 100644 index 00000000000..629a6a826be --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/target-pseudo-in-has.html @@ -0,0 +1,90 @@ + + +CSS Selectors Invalidation: :target pseudo-class in :has() argument + + + + +
    link to #fragment +link to #fragment2 +link to #fragment3 +link to # +
    + 1: + Must be green when containing :target +
    +
    + 2: + Must be green when containing :target +
    +
    + 3: + Must be green when containing :target +
    + diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html new file mode 100644 index 00000000000..b3a91d67cbc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html @@ -0,0 +1,131 @@ + + +CSS Selectors Invalidation: typed child-indexed pseudo classes in :has() argument + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/user-action-pseudo-classes-in-has.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/user-action-pseudo-classes-in-has.html index bb6be827b5c..466e8610fdb 100644 --- a/tests/wpt/web-platform-tests/css/selectors/invalidation/user-action-pseudo-classes-in-has.html +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/user-action-pseudo-classes-in-has.html @@ -10,10 +10,15 @@
    @@ -24,9 +29,11 @@
    Focus me
    +
    subject
    Focus me
    +
    subject
    + + + + +
    +
    Whitespace nodes should be ignored.
    +
    + +
    +
    +
    There is a prior child element.
    +
    + +
    +
    A comment node should be ignored.
    + +
    + +
    +
    Non-whitespace text node should be ignored.
    + . +
    + +
    +
    The first child should not be matched.
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/selectors/last-of-type.html b/tests/wpt/web-platform-tests/css/selectors/last-of-type.html new file mode 100644 index 00000000000..35328313e6d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/last-of-type.html @@ -0,0 +1,89 @@ + + + + +CSS Selectors :last-of-type + + + + + + +
    +
    Whitespace nodes should be ignored.
    +
    + +
    +
    +
    Thre is another child element of the same type.
    +
    + +
    +
    There is a posterior child element of another type.
    +
    +
    + +
    +
    +
    A next element of the parent should not affect.
    +
    +
    +
    + +
    +
    +
    The parent element of the same type should not affect.
    +
    +
    + +
    +
    A child of the next element should not affect.
    +
    +
    +
    +
    + +
    +
    The first child element of the same +type should not match.
    +
    +
    + +
    +
    The first child element of the same +type should not match, the last child has a case-different tag name.
    +
    +
    + +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/selectors/media/media-loading-state.html b/tests/wpt/web-platform-tests/css/selectors/media/media-loading-state.html new file mode 100644 index 00000000000..b48cfc13fb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/media/media-loading-state.html @@ -0,0 +1,62 @@ + + +Media Loading State: the :buffering and :stalled pseudo-classes + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/selectors/media/media-playback-state.html b/tests/wpt/web-platform-tests/css/selectors/media/media-playback-state.html new file mode 100644 index 00000000000..628daa25214 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/media/media-playback-state.html @@ -0,0 +1,73 @@ + + + Media Playback State: the :playing, :paused, and :seeking pseudo-classes + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/selectors/media/sound-state.html b/tests/wpt/web-platform-tests/css/selectors/media/sound-state.html new file mode 100644 index 00000000000..d9eb86a5ebe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/media/sound-state.html @@ -0,0 +1,45 @@ + +Sound State: the :muted and :volume-locked pseudo-classes + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/selectors/modal-pseudo-class.html b/tests/wpt/web-platform-tests/css/selectors/modal-pseudo-class.html new file mode 100644 index 00000000000..079f4063d45 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/modal-pseudo-class.html @@ -0,0 +1,59 @@ + + +:modal pseudo-class + + + + + + + + +Just another dialog. +
    +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nesting-parsing.html b/tests/wpt/web-platform-tests/css/selectors/nesting-parsing.html deleted file mode 100644 index f751a7bb686..00000000000 --- a/tests/wpt/web-platform-tests/css/selectors/nesting-parsing.html +++ /dev/null @@ -1,42 +0,0 @@ - -CSS Selectors @nest parsing - - - - - - - diff --git a/tests/wpt/web-platform-tests/css/selectors/nesting-ref.html b/tests/wpt/web-platform-tests/css/selectors/nesting-ref.html deleted file mode 100644 index 98e9d4ec281..00000000000 --- a/tests/wpt/web-platform-tests/css/selectors/nesting-ref.html +++ /dev/null @@ -1,81 +0,0 @@ - -@nest | basic - - - - -

    Tests pass if block is green

    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/nesting.html b/tests/wpt/web-platform-tests/css/selectors/nesting.html deleted file mode 100644 index 7160b9a1c22..00000000000 --- a/tests/wpt/web-platform-tests/css/selectors/nesting.html +++ /dev/null @@ -1,97 +0,0 @@ - -@nest | basic - - - - - -

    Tests pass if block is green

    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-and-nth-last-child-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-and-nth-last-child-ref.html new file mode 100644 index 00000000000..447426a3e3a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-and-nth-last-child-ref.html @@ -0,0 +1,56 @@ + + + + + + +

    Test the matching of an element only if it is the only child matching the selector list. If the test succeed, every instance of the text "Success" should be on green background.

    +
    +
    + Foo +
    + Bar +
    +
    +
    +
    +
    + Success +
    +
    +
    +
    + Foo +
    + Bar +
    +
    +
    +
    +
    + Success +
    +
    +
    +
    + Foo +
    + Bar +
    +
    +
    +
    +
    + Success +
    +
    + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-and-nth-last-child.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-and-nth-last-child.html new file mode 100644 index 00000000000..455063f9160 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-and-nth-last-child.html @@ -0,0 +1,75 @@ + + + +:nth-child and :nth-last-child with selector list argument chained together + + + + + +

    Test the matching of an element only if it is the only child matching the selector list. If the test succeed, every instance of the text "Success" should be on green background.

    +
    +
    + Foo +
    + Bar +
    +
    +
    +
    +
    + Success +
    +
    +
    +
    + Foo +
    + Bar +
    +
    +
    +
    +
    + Success +
    +
    +
    +
    + Foo +
    + Bar +
    +
    +
    +
    +
    + Success +
    +
    + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-of-classname-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-classname-ref.html new file mode 100644 index 00000000000..b424e73b450 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-classname-ref.html @@ -0,0 +1,16 @@ + + + +

    This test the styling of paragraphs with :nth-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White

    +

    White

    +

    White

    +

    Green!

    +

    White

    +

    White

    +

    White

    +

    White

    +

    Green!

    +

    White

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-of-classname.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-classname.html new file mode 100644 index 00000000000..8ec3f43f7f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-classname.html @@ -0,0 +1,26 @@ + + + +:nth-child with .className selector list argument + + + + + +

    This test the styling of paragraphs with :nth-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White

    +

    White

    +

    White

    +

    Green!

    +

    White

    +

    White

    +

    White

    +

    White

    +

    Green!

    +

    White

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector-ref.html new file mode 100644 index 00000000000..ba38f685c64 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector-ref.html @@ -0,0 +1,14 @@ + + + +

    This test the styling of paragraphs with :nth-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White

    +

    White

    +

    White

    +

    Green

    +

    White

    +

    White

    +

    White

    +

    Green

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector.html new file mode 100644 index 00000000000..b751d83de22 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector.html @@ -0,0 +1,25 @@ + + + +:nth-child with complex selector list argument + + + + + +

    This test the styling of paragraphs with :nth-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White

    +

    White

    +

    White

    +

    Green

    +

    White

    +

    White

    +

    White

    +

    Green

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-of-compound-selector-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-compound-selector-ref.html new file mode 100644 index 00000000000..3acec23e61d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-compound-selector-ref.html @@ -0,0 +1,18 @@ + + + +

    +

    This test the styling of paragraphs with :nth-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    Green

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-of-compound-selector.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-compound-selector.html new file mode 100644 index 00000000000..5efefe6eadf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-compound-selector.html @@ -0,0 +1,29 @@ + + + +:nth-child with compound selector argument + + + + + +

    +

    This test the styling of paragraphs with :nth-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    Green

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-of-tagname-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-tagname-ref.html new file mode 100644 index 00000000000..99c8262b4f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-tagname-ref.html @@ -0,0 +1,16 @@ + + + + +

    This test the styling of paragraphs with :nth-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White!

    +

    White!

    + White! +

    White!

    +

    White!

    + Green +

    White!

    + White! +

    White!

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-of-tagname.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-tagname.html new file mode 100644 index 00000000000..107e834296f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-tagname.html @@ -0,0 +1,26 @@ + + + +:nth-child with tagname selector list argument + + + + + + +

    This test the styling of paragraphs with :nth-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White!

    +

    White!

    + White! +

    White!

    +

    White!

    + Green +

    White!

    + White! +

    White!

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-1-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-1-ref.html new file mode 100644 index 00000000000..df70316c8d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-1-ref.html @@ -0,0 +1,17 @@ + + + +

    This test the specificity of :nth-child() with static specificity. The test passes if the text "target" is displayed white on green background. There should be 2 red rects on each side.

    +
    + Not target + + Not target + + Target + + Not target + + Not target +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-1.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-1.html new file mode 100644 index 00000000000..d0b084a719d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-1.html @@ -0,0 +1,40 @@ + + + +:nth-child with selector list specificity + + + + + +

    This test the specificity of :nth-child() with static specificity. The test passes if the text "target" is displayed white on green background. There should be 2 red rects on each side.

    +
    + Not target + + Not target + + Target + + Not target + + Not target +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-2-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-2-ref.html new file mode 100644 index 00000000000..1f7d3765930 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-2-ref.html @@ -0,0 +1,23 @@ + + + + + + +
    + Black text on white background. + White text on red background with a purple border. + Red text on green background. + White text on red background with a purple border. + Black text on white background with a blue border. + White text on red background with a purple border. + Red text on green background with a blue border. + White text on red background with a purple border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-2.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-2.html new file mode 100644 index 00000000000..a467e5e056a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-2.html @@ -0,0 +1,47 @@ + + + +:nth-child with selector list specificity + + + + + +
    + Black text on white background. + White text on red background with a purple border. + Red text on green background. + White text on red background with a purple border. + Black text on white background with a blue border. + White text on red background with a purple border. + Red text on green background with a blue border. + White text on red background with a purple border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-3-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-3-ref.html new file mode 100644 index 00000000000..b13bc50f415 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-3-ref.html @@ -0,0 +1,23 @@ + + + + + + +
    + Black text. + Black text. + Red text with black border. + White text on red background with purple border. + Black text with blue border. + White text on red background with purple border. + Red text on green background with blue border. + White text on red background with purple border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-3.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-3.html new file mode 100644 index 00000000000..f9c23b27ca1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-3.html @@ -0,0 +1,51 @@ + + + +:nth-child with selector list specificity + + + + + +
    + Black text. + Black text. + Red text with black border. + White text on red background with purple border. + Black text with blue border. + White text on red background with purple border. + Red text on green background with blue border. + White text on red background with purple border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-4-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-4-ref.html new file mode 100644 index 00000000000..b6f26c9cf4b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-4-ref.html @@ -0,0 +1,23 @@ + + + + + + +
    + Black text. + Black text. + Black text with blue border. + White text on red background with purple border. + Red text on green background with blue border. + White text on red background with purple border. + Red text with black border. + White text on red background with purple border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-4.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-4.html new file mode 100644 index 00000000000..6286b01f7ea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-specificity-4.html @@ -0,0 +1,51 @@ + + + +:nth-child with selector list specificity + + + + + +
    + Black text. + Black text. + Black text with blue border. + White text on red background with purple border. + Red text on green background with blue border. + White text on red background with purple border. + Red text with black border. + White text on red background with purple border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-classname-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-classname-ref.html new file mode 100644 index 00000000000..7df68b2aee5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-classname-ref.html @@ -0,0 +1,16 @@ + + + +

    This test the styling of paragraphs with :nth-last-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White

    +

    White

    +

    Green!

    +

    White

    +

    White

    +

    White

    +

    White

    +

    Green!

    +

    White

    +

    White

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-classname.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-classname.html new file mode 100644 index 00000000000..770fda381f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-classname.html @@ -0,0 +1,26 @@ + + + +:nth-last-child with .className selector list argument + + + + + +

    This test the styling of paragraphs with :nth-last-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White

    +

    White

    +

    Green!

    +

    White

    +

    White

    +

    White

    +

    White

    +

    Green!

    +

    White

    +

    White

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-complex-selector-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-complex-selector-ref.html new file mode 100644 index 00000000000..cda1902d1a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-complex-selector-ref.html @@ -0,0 +1,14 @@ + + + +

    This test the styling of paragraphs with :nth-last-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    Green

    +

    White

    +

    White

    +

    White

    +

    Green

    +

    White

    +

    White

    +

    White

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-complex-selector.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-complex-selector.html new file mode 100644 index 00000000000..0f1262c746f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-complex-selector.html @@ -0,0 +1,24 @@ + + + +:nth-last-child with complex selector list argument + + + + + +

    This test the styling of paragraphs with :nth-last-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    Green

    +

    White

    +

    White

    +

    White

    +

    Green

    +

    White

    +

    White

    +

    White

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-compound-selector-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-compound-selector-ref.html new file mode 100644 index 00000000000..bc5c3ddbd56 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-compound-selector-ref.html @@ -0,0 +1,19 @@ + + + +

    This test the styling of paragraphs with :nth-last-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    + +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    Green

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-compound-selector.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-compound-selector.html new file mode 100644 index 00000000000..a7aa40f50a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-compound-selector.html @@ -0,0 +1,29 @@ + + + +:nth-last-child with compound selector argument + + + + + +

    This test the styling of paragraphs with :nth-last-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    + +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    Green

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    White!

    +

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-1-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-1-ref.html new file mode 100644 index 00000000000..14ca8e42c7e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-1-ref.html @@ -0,0 +1,13 @@ + + + +

    Test that style-sharing does not ignore cases matching :nth-last-child(An+B of selector list).

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-1.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-1.html new file mode 100644 index 00000000000..de3e2632561 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-1.html @@ -0,0 +1,23 @@ + + + +:nth-last-child correct style-sharing + + + + + +

    Test that style-sharing does not ignore cases matching :nth-last-child(An+B of selector list).

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-2-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-2-ref.html new file mode 100644 index 00000000000..1ef071d56bb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-2-ref.html @@ -0,0 +1,15 @@ + + + +

    Test that style-sharing does not ignore cases matching :nth-last-child(An+B of selector list).

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-2.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-2.html new file mode 100644 index 00000000000..19fc9af414e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-style-sharing-2.html @@ -0,0 +1,25 @@ + + + +:nth-last-child correct style-sharing + + + + + +

    Test that style-sharing does not ignore cases matching :nth-last-child(An+B of selector list).

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    +

    Target

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-tagname-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-tagname-ref.html new file mode 100644 index 00000000000..e0dcc6b0363 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-tagname-ref.html @@ -0,0 +1,16 @@ + + + +

    This test the styling of paragraphs with :nth-last-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White!

    + White! +

    White!

    + Green + White! +

    White!

    +

    White!

    + Green +

    White!

    +

    White!

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-tagname.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-tagname.html new file mode 100644 index 00000000000..ddfd6528cc5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-of-tagname.html @@ -0,0 +1,26 @@ + + + +:nth-last-child with tagname selector list argument + + + + + +

    This test the styling of paragraphs with :nth-last-child(An+B of selector). If the test succeed, paragraphs that say "green" should have a green background.

    +

    White!

    + White! +

    White!

    + Green + White! +

    White!

    +

    White!

    + Green +

    White!

    +

    White!

    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-1-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-1-ref.html new file mode 100644 index 00000000000..609279fdc5f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-1-ref.html @@ -0,0 +1,17 @@ + + + +

    This test the specificity of :nth-last-child() with static specificity. The test passes if the text "target" is displayed white on green background. There should be 2 red rects on each side.

    +
    + Not target + + Not target + + Target + + Not target + + Not target +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-1.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-1.html new file mode 100644 index 00000000000..cc4f542fff3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-1.html @@ -0,0 +1,40 @@ + + + +:nth-last-child with selector list specificity + + + + + +

    This test the specificity of :nth-last-child() with static specificity. The test passes if the text "target" is displayed white on green background. There should be 2 red rects on each side.

    +
    + Not target + + Not target + + Target + + Not target + + Not target +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-2-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-2-ref.html new file mode 100644 index 00000000000..70c44b8fac7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-2-ref.html @@ -0,0 +1,23 @@ + + + + + + +
    + White text on red background with a purple border. + Black text on white background. + White text on red background with a purple border. + Red text on green background. + White text on red background with a purple border. + Black text on white background with a blue border. + White text on red background with a purple border. + Red text on green background with a blue border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-2.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-2.html new file mode 100644 index 00000000000..3ddb43b62bd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-2.html @@ -0,0 +1,47 @@ + + + +:nth-last-child with selector list specificity + + + + + +
    + White text on red background with a purple border. + Black text on white background. + White text on red background with a purple border. + Red text on green background. + White text on red background with a purple border. + Black text on white background with a blue border. + White text on red background with a purple border. + Red text on green background with a blue border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-3-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-3-ref.html new file mode 100644 index 00000000000..8adc397d380 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-3-ref.html @@ -0,0 +1,23 @@ + + + + + + +
    + Black text. + Black text. + White text on red background with purple border. + Red text with black border. + White text on red background with purple border. + Black text with blue border. + White text on red background with purple border. + Red text on green background with blue border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-3.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-3.html new file mode 100644 index 00000000000..673b4350443 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-3.html @@ -0,0 +1,51 @@ + + + +:nth-last-child with selector list specificity + + + + + +
    + Black text. + Black text. + White text on red background with purple border. + Red text with black border. + White text on red background with purple border. + Black text with blue border. + White text on red background with purple border. + Red text on green background with blue border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-4-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-4-ref.html new file mode 100644 index 00000000000..f0042d1114c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-4-ref.html @@ -0,0 +1,23 @@ + + + + + + +
    + Black text. + Black text. + White text on red background with purple border. + Black text with blue border. + White text on red background with purple border. + Red text on green background with blue border. + White text on red background with purple border. + Red text with black border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-4.html b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-4.html new file mode 100644 index 00000000000..b690ea2b017 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-last-child-specificity-4.html @@ -0,0 +1,51 @@ + + + +:nth-last-child with selector list specificity + + + + + +
    + Black text. + Black text. + White text on red background with purple border. + Black text with blue border. + White text on red background with purple border. + Red text on green background with blue border. + White text on red background with purple border. + Red text with black border. +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156.xml b/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156.xml index f52b98f86b3..4717fb8a395 100644 --- a/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156.xml +++ b/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156.xml @@ -4,7 +4,7 @@ Syntax and parsing @@ -13,4 +13,4 @@

    This line should have a green background.

    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156b.xml b/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156b.xml index 2f8ed883132..28a6c985bb9 100644 --- a/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156b.xml +++ b/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156b.xml @@ -3,7 +3,7 @@ Syntax and parsing diff --git a/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156c.xml b/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156c.xml index 3a15c82323a..cb888e1eb0a 100644 --- a/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156c.xml +++ b/tests/wpt/web-platform-tests/css/selectors/old-tests/css3-modsel-156c.xml @@ -3,7 +3,7 @@ Syntax and parsing @@ -13,4 +13,4 @@

    This line should have a green background.

    - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/selectors/only-child.html b/tests/wpt/web-platform-tests/css/selectors/only-child.html new file mode 100644 index 00000000000..590c07ba2b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/only-child.html @@ -0,0 +1,61 @@ + + + + +CSS Selectors :only-child + + + + + + +
    +
    Whitespace nodes should be ignored.
    +
    + +
    +
    A comment node should be ignored.
    + +
    + +
    +
    Non-whitespace text node should be ignored.
    + . +
    + +
    +
    +
    There is another child element.
    +
    + +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html b/tests/wpt/web-platform-tests/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html new file mode 100644 index 00000000000..0a30718df04 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html @@ -0,0 +1,13 @@ + + +CSS Selectors: The relational pseudo-class (disallow nesting :has() inside :has()) + + + + + + diff --git a/tests/wpt/web-platform-tests/css/selectors/parsing/parse-has.html b/tests/wpt/web-platform-tests/css/selectors/parsing/parse-has.html index 1db87c4c008..e15d33532bc 100644 --- a/tests/wpt/web-platform-tests/css/selectors/parsing/parse-has.html +++ b/tests/wpt/web-platform-tests/css/selectors/parsing/parse-has.html @@ -23,14 +23,15 @@ test_valid_selector('.a .b:has(.c)'); test_valid_selector('.a .b:has(.c .d)'); test_valid_selector('.a .b:has(.c .d) .e'); - test_valid_selector('.a:has(.b:has(.c))'); test_valid_selector('.a:has(.b:is(.c .d))'); - test_valid_selector('.a:has(.b:is(.c:has(.d) .e))'); test_valid_selector('.a:is(.b:has(.c) .d)'); test_valid_selector('.a:not(:has(.b))'); test_valid_selector('.a:has(:not(.b))'); test_valid_selector('.a:has(.b):has(.c)'); test_valid_selector('*|*:has(*)', ':has(*)'); test_valid_selector(':has(*|*)', ':has(*)'); - test_invalid_selector('.a:has()'); - \ No newline at end of file + test_valid_selector('.a:has()', '.a:has()'); + test_invalid_selector(':has'); + test_invalid_selector('.a:has'); + test_invalid_selector('.a:has b'); + diff --git a/tests/wpt/web-platform-tests/css/selectors/scope-selector.html b/tests/wpt/web-platform-tests/css/selectors/scope-selector.html index 0340f25919f..06b6bc13785 100644 --- a/tests/wpt/web-platform-tests/css/selectors/scope-selector.html +++ b/tests/wpt/web-platform-tests/css/selectors/scope-selector.html @@ -6,71 +6,20 @@
    diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-attr-many-ref.html b/tests/wpt/web-platform-tests/css/selectors/selectors-attr-many-ref.html new file mode 100644 index 00000000000..7d8a9f6d89d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/selectors-attr-many-ref.html @@ -0,0 +1,5 @@ + +Selectors: Many attribute selectors, and one that is only set +

    This text should be black.

    +

    This text should be green.

    +

    This text should be blue.

    diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-attr-many.html b/tests/wpt/web-platform-tests/css/selectors/selectors-attr-many.html new file mode 100644 index 00000000000..b38b8f52cfa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/selectors-attr-many.html @@ -0,0 +1,60 @@ + +Selectors: Many attribute selectors, and one that is only set + + + + +

    This text should be black.

    +

    This text should be green.

    +

    This text should be blue.

    diff --git a/tests/wpt/web-platform-tests/css/selectors/spurious-brace-crash.html b/tests/wpt/web-platform-tests/css/selectors/spurious-brace-crash.html new file mode 100644 index 00000000000..b1a462a9690 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/spurious-brace-crash.html @@ -0,0 +1,5 @@ + + +Spurious left-brace byte when converted to UTF-16 + + diff --git a/tests/wpt/web-platform-tests/css/selectors/visited-inheritance-ref.html b/tests/wpt/web-platform-tests/css/selectors/visited-inheritance-ref.html new file mode 100644 index 00000000000..64300b13f42 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/visited-inheritance-ref.html @@ -0,0 +1,14 @@ + + +inherited link color when modifying parent + + + +
    + +
    diff --git a/tests/wpt/web-platform-tests/css/selectors/visited-inheritance.html b/tests/wpt/web-platform-tests/css/selectors/visited-inheritance.html new file mode 100644 index 00000000000..1442307a929 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/visited-inheritance.html @@ -0,0 +1,19 @@ + + +inherited link color when modifying parent + + + + +
    + + +
    diff --git a/tests/wpt/web-platform-tests/css/support/computed-testcommon.js b/tests/wpt/web-platform-tests/css/support/computed-testcommon.js index 42cc17652e1..e8d3a523477 100644 --- a/tests/wpt/web-platform-tests/css/support/computed-testcommon.js +++ b/tests/wpt/web-platform-tests/css/support/computed-testcommon.js @@ -25,7 +25,10 @@ function test_computed_value(property, specified, computed, titleExtra) { if (Array.isArray(computed)) { assert_in_array(readValue, computed); } else { - assert_equals(readValue, computed); + if (property == "color") + colorValuesAlmostEqual(readValue, computed, 0.0001); + else + assert_equals(readValue, computed); } if (readValue !== specified) { target.style[property] = ''; @@ -36,7 +39,32 @@ function test_computed_value(property, specified, computed, titleExtra) { }, `Property ${property} value '${specified}'${titleExtra ? ' ' + titleExtra : ''}`); } -function test_computed_value_greater_or_lower_than(property, specified, expected, titleExtra) { +function colorValuesAlmostEqual(color1, color2, epsilon) { + // Colors can be split by spaces, commas or the '(' character. + const colorElementDividers = /( |\(|,)/; + // Return the string stripped of numbers. + function getNonNumbers(color) { + return color.replace(/[0-9]/g, ''); + } + // Return an array of all numbers in the color. + function getNumbers(color) { + const result = []; + // const entries = color.split(colorElementDividers); + color.split(colorElementDividers).forEach(element => { + const numberElement = parseFloat(element); + if (!isNaN(numberElement)) { + result.push(numberElement); + } + }); + return result; + } + + assert_array_approx_equals(getNumbers(color1), getNumbers(color2), epsilon, "Numeric parameters are approximately equal."); + // Assert that the text of the two colors are equal. i.e. colorSpace, colorFunction and format. + assert_equals(getNonNumbers(color1), getNonNumbers(color2), "Color format is correct."); +} + +function testComputedValueGreaterOrLowerThan(property, specified, expected, titleExtra) { test(() => { const target = document.getElementById('target'); assert_true(property in getComputedStyle(target), property + " doesn't seem to be supported in the computed style"); @@ -53,16 +81,16 @@ function test_computed_value_greater_or_lower_than(property, specified, expected }, `Property ${property} value '${specified}'${titleExtra ? ' ' + titleExtra : ''}`); } -function compareValueCloseTo(property_name, calcValue, epsilon, expectedValue, description) +function testTransformValuesCloseTo(specified, epsilon, expectedValue, description) { if(!description) { - description = `Property ${calcValue} value expected same with ${expectedValue} in +/-${epsilon}` + description = `Property ${specified} value expected same with ${expectedValue} in +/-${epsilon}` } test(function() { var targetElement = document.getElementById("target"); - targetElement.style.setProperty(property_name, "initial"); + targetElement.style.setProperty('transform', "initial"); /* Since we are running many consecutive tests on the same @@ -70,9 +98,9 @@ function compareValueCloseTo(property_name, calcValue, epsilon, expectedValue, d to an initial value before actually re-testing it. */ - targetElement.style.setProperty(property_name, calcValue); + targetElement.style.setProperty('transform', specified); - var computedCalcValue = getComputedStyle(targetElement)[property_name]; + var computedCalcValue = getComputedStyle(targetElement)['transform']; /* We first strip out the word "matrix" with the @@ -107,9 +135,9 @@ function compareValueCloseTo(property_name, calcValue, epsilon, expectedValue, d Now, we execute the same steps with the expectedValue */ - targetElement.style.setProperty(property_name, expectedValue); + targetElement.style.setProperty('transform', expectedValue); - var computedExpectedValue = getComputedStyle(targetElement)[property_name]; + var computedExpectedValue = getComputedStyle(targetElement)['transform']; /* We first strip out the word "matrix" with the @@ -141,42 +169,10 @@ function compareValueCloseTo(property_name, calcValue, epsilon, expectedValue, d tableSplitExpectedValue[5] = parseFloat(tableSplitExpectedValue[5]); assert_array_approx_equals(tableSplitCalcValue, tableSplitExpectedValue, epsilon); - - /* - In this mega-test of 27 sub-tests, we intentionally - set the tolerance precision (epsilon) to a rather big - value (0.0001 === 100 millionths). The reason for this - is we want to verify if browsers and CSS-capable - applications do the right calculations. We do not want - to penalize browsers and CSS-capable applications that - have modest precision (not capable of a 1 millionth - level precision). - */ - } , description); } -/* - deg - Degrees. There are 360 degrees in a full circle. - - grad - Gradians, also known as "gons" or "grades". There are 400 gradians in a full circle. - - rad - Radians. There are 2π radians in a full circle. - - 1rad == 57.295779513° - https://www.rapidtables.com/convert/number/radians-to-degrees.html - - π == Math.PI == 3.141592653589793 - - turn - Turns. There is 1 turn in a full circle. -*/ - /* Addition of angle units */ - function test_pseudo_computed_value(pseudo, property, specified, computed, titleExtra) { if (!computed) computed = specified; diff --git a/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js b/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js index 3ba879d0d6a..002841cfead 100644 --- a/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js +++ b/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js @@ -7,6 +7,7 @@ nextID: 0, }; var expectNoInterpolation = {}; + var expectNotAnimatable = {}; var neutralKeyframe = {}; function isNeutralKeyframe(keyframe) { return keyframe === neutralKeyframe; @@ -26,6 +27,9 @@ nonInterpolationExpectations: function(from, to) { return expectFlip(from, to, 0.5); }, + notAnimatableExpectations: function(from, to, underlying) { + return expectFlip(underlying, underlying, -Infinity); + }, interpolate: function(property, from, to, at, target) { var id = cssAnimationsData.nextID++; if (!cssAnimationsData.sharedStyle) { @@ -54,6 +58,9 @@ nonInterpolationExpectations: function(from, to) { return expectFlip(from, to, -Infinity); }, + notAnimatableExpectations: function(from, to, underlying) { + return expectFlip(from, to, -Infinity); + }, interpolate: function(property, from, to, at, target) { // Force a style recalc on target to set the 'from' value. getComputedStyle(target).getPropertyValue(property); @@ -77,6 +84,9 @@ nonInterpolationExpectations: function(from, to) { return expectFlip(from, to, -Infinity); }, + notAnimatableExpectations: function(from, to, underlying) { + return expectFlip(from, to, -Infinity); + }, interpolate: function(property, from, to, at, target) { // Force a style recalc on target to set the 'from' value. getComputedStyle(target).getPropertyValue(property); @@ -97,6 +107,9 @@ nonInterpolationExpectations: function(from, to) { return expectFlip(from, to, 0.5); }, + notAnimatableExpectations: function(from, to, underlying) { + return expectFlip(underlying, underlying, -Infinity); + }, interpolate: function(property, from, to, at, target) { this.interpolateComposite(property, from, 'replace', to, 'replace', at, target); }, @@ -255,8 +268,12 @@ var testContainer = createElement(interpolationMethodContainer, 'div'); createElement(testContainer); var expectations = interpolationTest.expectations; + var applyUnderlying = false; if (expectations === expectNoInterpolation) { expectations = interpolationMethod.nonInterpolationExpectations(from, to); + } else if (expectations === expectNotAnimatable) { + expectations = interpolationMethod.notAnimatableExpectations(from, to, interpolationTest.options.underlying); + applyUnderlying = true; } // Setup a standard equality function if an override is not provided. @@ -274,6 +291,12 @@ expectedProperties = {[property]: expectedProperties}; } var target = actualTargetContainer.target; + if (applyUnderlying) { + let underlying = interpolationTest.options.underlying; + assert_true(typeof underlying !== 'undefined', '\'underlying\' value must be provided'); + assert_true(CSS.supports(property, underlying), '\'underlying\' value must be supported'); + target.style.setProperty(property, underlying); + } interpolationMethod.setup(property, from, target); target.interpolate = function() { interpolationMethod.interpolate(property, from, to, expectation.at, target); @@ -400,6 +423,9 @@ function test_no_interpolation(options) { test_interpolation(options, expectNoInterpolation); } + function test_not_animatable(options) { + test_interpolation(options, expectNotAnimatable); + } function create_tests() { var interpolationMethods = [ cssTransitionsInterpolation, @@ -431,6 +457,7 @@ } window.test_interpolation = test_interpolation; window.test_no_interpolation = test_no_interpolation; + window.test_not_animatable = test_not_animatable; window.test_composition = test_composition; window.neutralKeyframe = neutralKeyframe; window.roundNumbers = roundNumbers; diff --git a/tests/wpt/web-platform-tests/css/support/parsing-testcommon.js b/tests/wpt/web-platform-tests/css/support/parsing-testcommon.js index 7a23f5149fe..cc040be5116 100644 --- a/tests/wpt/web-platform-tests/css/support/parsing-testcommon.js +++ b/tests/wpt/web-platform-tests/css/support/parsing-testcommon.js @@ -141,3 +141,26 @@ function test_invalid_rule(rule) { rule + " should throw in insertRule"); }, rule + " should be an invalid rule"); } + +function _set_style(rule) { + const style = document.createElement('style'); + style.innerText = rule; + document.head.append(style); + const { sheet } = style; + document.head.removeChild(style); + return sheet; +} + +function test_keyframes_name_valid(keyframes_name) { + test(t => { + const sheet = _set_style(`@keyframes ${keyframes_name} {}`); + assert_equals(sheet.cssRules.length, 1); + }, `valid: @keyframes ${keyframes_name} { }`); +} + +function test_keyframes_name_invalid(keyframes_name) { + test(t => { + const sheet = _set_style(`@keyframes ${keyframes_name} {}`); + assert_equals(sheet.cssRules.length, 0); + }, `invalid: @keyframes ${keyframes_name} { }`); +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/tools/README.md b/tests/wpt/web-platform-tests/css/tools/README.md index 3679d9fb1fc..8310d89d7ad 100644 --- a/tests/wpt/web-platform-tests/css/tools/README.md +++ b/tests/wpt/web-platform-tests/css/tools/README.md @@ -1,6 +1,6 @@ This directory contains the CSS build system. -It is recommended that it is run with `../build-css-testsuites.sh`, as +It is recommended that it is run with `build.sh`, as this ensures all dependencies are installed. Note that it is not required to build the testsuites to run tests; you can just run tests as with any other web-platform-tests tests (see ../../docs/). @@ -10,3 +10,6 @@ w3ctestlib package in w3ctestlib/, and the apiclient package in apiclient/apiclient/. Note that apiclient exists as a separate upstream project at https://hg.csswg.org/dev/apiclient/, and that ideally any changes here should make it upstream. + +Warning: The CSS build system is not tested in CI at all, so don't make any +changes without ensuring that it still works locally. diff --git a/tests/wpt/web-platform-tests/css/tools/build.py b/tests/wpt/web-platform-tests/css/tools/build.py old mode 100755 new mode 100644 diff --git a/tests/wpt/web-platform-tests/css/tools/build.sh b/tests/wpt/web-platform-tests/css/tools/build.sh new file mode 100755 index 00000000000..326fe632a8c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/tools/build.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env sh +set -ex + +SCRIPT_DIR=$(cd $(dirname "$0") && pwd -P) + +main() { + cd $SCRIPT_DIR + + if [ -z $VENV ]; then + VENV=_virtualenv + fi + + # Create the virtualenv + if [ ! -d $VENV ]; then + if [ -z $PYTHON ]; then + command -v python + if [ $? -eq 0 ]; then + if [ `python -c 'import sys; print(sys.version[0:3])'` == "2.7" ]; then + PYTHON=python + fi + fi + fi + + if [ -z $PYTHON ]; then + command -v python2 + if [ $? -eq 0 ]; then + PYTHON=python2 + fi + fi + + if [ -z $PYTHON ]; then + echo "Please ensure Python 2.7 is installed" + exit 1 + fi + + # The maximum Unicode code point is U+10FFFF = 1114111 + if [ `$PYTHON -c 'import sys; print(sys.maxunicode)'` != "1114111" ]; then + echo "UCS-4 support for Python is required" + exit 1 + fi + + virtualenv -p $PYTHON $VENV || { echo "Please ensure virtualenv is installed"; exit 2; } + fi + + # Install dependencies + $VENV/bin/pip install -r requirements.txt + + # Run the build script + $VENV/bin/python build.py "$@" +} + +main "$@" diff --git a/tests/wpt/web-platform-tests/css/tools/requirements.txt b/tests/wpt/web-platform-tests/css/tools/requirements.txt new file mode 100644 index 00000000000..15d49f4d298 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/tools/requirements.txt @@ -0,0 +1,8 @@ +# Warning: The CSS build system is not tested in CI at all, so do not bump these +# dependencies without making sure that the build script still works. +Template-Python==0.1.post1 +html5lib==1.1 +lxml==4.8.0 +mercurial==4.6.1 +six==1.16.0 +webencodings==0.5.1 diff --git a/tests/wpt/web-platform-tests/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html b/tests/wpt/web-platform-tests/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html new file mode 100644 index 00000000000..5e741eba67e --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html @@ -0,0 +1,84 @@ + + +CustomElementInterface holds constructors and callbacks strongly, preventing them from being GCed if there are no other references + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-accessibility.html b/tests/wpt/web-platform-tests/custom-elements/ElementInternals-accessibility.html similarity index 98% rename from tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-accessibility.html rename to tests/wpt/web-platform-tests/custom-elements/ElementInternals-accessibility.html index b07320bb879..b823a9ddea8 100644 --- a/tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-accessibility.html +++ b/tests/wpt/web-platform-tests/custom-elements/ElementInternals-accessibility.html @@ -43,6 +43,7 @@ const properties = [ "ariaFlowToElements", "ariaHasPopup", "ariaHidden", + "ariaInvalid", "ariaKeyShortcuts", "ariaLabel", "ariaLabelledByElements", diff --git a/tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-reportValidity-bubble-ref.html b/tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-reportValidity-bubble-ref.html new file mode 100644 index 00000000000..54a438245c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-reportValidity-bubble-ref.html @@ -0,0 +1,28 @@ + +Both focusable and unfocusable custom elements can show validation bubbles + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-reportValidity-bubble.html b/tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-reportValidity-bubble.html new file mode 100644 index 00000000000..6ada4b473ab --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-reportValidity-bubble.html @@ -0,0 +1,29 @@ + +Both focusable and unfocusable custom elements can show validation bubbles + + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html b/tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html new file mode 100644 index 00000000000..7119d5f9ebe --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html @@ -0,0 +1,26 @@ + +Target element of ElementsInternals is held strongly and doesn't get GCed if there are no other references + + + + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/form-associated/label-delegatesFocus.html b/tests/wpt/web-platform-tests/custom-elements/form-associated/label-delegatesFocus.html new file mode 100644 index 00000000000..67f4f61e495 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/form-associated/label-delegatesFocus.html @@ -0,0 +1,38 @@ + + + + + + + + +
    + + +
    + + diff --git a/tests/wpt/web-platform-tests/custom-elements/perform-microtask-checkpoint-before-construction-xml-parser.xhtml b/tests/wpt/web-platform-tests/custom-elements/perform-microtask-checkpoint-before-construction-xml-parser.xhtml new file mode 100644 index 00000000000..63bb1d143fb --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/perform-microtask-checkpoint-before-construction-xml-parser.xhtml @@ -0,0 +1,81 @@ + + + +Custom Elements: create an element for a token must perform a microtask checkpoint + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/Animation.html b/tests/wpt/web-platform-tests/custom-elements/reactions/Animation.html new file mode 100644 index 00000000000..47eff97497c --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/Animation.html @@ -0,0 +1,66 @@ + + + +Custom Elements: CEReactions on Element interface + + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/AriaMixin-element-attributes.html b/tests/wpt/web-platform-tests/custom-elements/reactions/AriaMixin-element-attributes.html new file mode 100644 index 00000000000..09e62b2d39c --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/AriaMixin-element-attributes.html @@ -0,0 +1,65 @@ + + + +Custom Elements: CEReactions on Element interface + + + + + + + + + + +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/AriaMixin-string-attributes.html b/tests/wpt/web-platform-tests/custom-elements/reactions/AriaMixin-string-attributes.html new file mode 100644 index 00000000000..f71bf2daa9b --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/AriaMixin-string-attributes.html @@ -0,0 +1,66 @@ + + + +Custom Elements: CEReactions on Element interface + + + + + + + + + + +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/resources/custom-elements-helpers.js b/tests/wpt/web-platform-tests/custom-elements/resources/custom-elements-helpers.js index 6f73fe20d0f..48775af162a 100644 --- a/tests/wpt/web-platform-tests/custom-elements/resources/custom-elements-helpers.js +++ b/tests/wpt/web-platform-tests/custom-elements/resources/custom-elements-helpers.js @@ -12,6 +12,20 @@ function create_window_in_test(t, srcdoc) { return p; } +function create_window_in_test_async(test, mime, doc) { + return new Promise((resolve) => { + let iframe = document.createElement('iframe'); + blob = new Blob([doc], {type: mime}); + iframe.src = URL.createObjectURL(blob); + iframe.onload = (event) => { + let contentWindow = iframe.contentWindow; + test.add_cleanup(() => iframe.remove()); + resolve(contentWindow); + }; + document.body.appendChild(iframe); + }); +} + function test_with_window(f, name, srcdoc) { promise_test((t) => { return create_window_in_test(t, srcdoc) diff --git a/tests/wpt/web-platform-tests/custom-elements/resources/garbage-collect.js b/tests/wpt/web-platform-tests/custom-elements/resources/garbage-collect.js new file mode 100644 index 00000000000..d2e3449c05e --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/resources/garbage-collect.js @@ -0,0 +1,19 @@ +async function maybeGarbageCollectAsync() { + if (typeof TestUtils !== 'undefined' && TestUtils.gc) { + await TestUtils.gc(); + } else if (self.gc) { + // Use --expose_gc for V8 (and Node.js) + // to pass this flag at chrome launch use: --js-flags="--expose-gc" + // Exposed in SpiderMonkey shell as well + await self.gc(); + } else if (self.GCController) { + // Present in some WebKit development environments + await GCController.collect(); + } else { + /* eslint-disable no-console */ + console.warn('Tests are running without the ability to do manual ' + + 'garbage collection. They will still work, but ' + + 'coverage will be suboptimal.'); + /* eslint-enable no-console */ + } +} diff --git a/tests/wpt/web-platform-tests/custom-elements/scoped-registry/CustomElementRegistry-constructor.tentative.html b/tests/wpt/web-platform-tests/custom-elements/scoped-registry/CustomElementRegistry-constructor.tentative.html new file mode 100644 index 00000000000..d80a1fbe6c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/scoped-registry/CustomElementRegistry-constructor.tentative.html @@ -0,0 +1,27 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/scoped-registry/CustomElementRegistry-multi-register.tentative.html b/tests/wpt/web-platform-tests/custom-elements/scoped-registry/CustomElementRegistry-multi-register.tentative.html new file mode 100644 index 00000000000..bd97017308a --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/scoped-registry/CustomElementRegistry-multi-register.tentative.html @@ -0,0 +1,27 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/scoped-registry/ShadowRoot-init-registry.tentative.html b/tests/wpt/web-platform-tests/custom-elements/scoped-registry/ShadowRoot-init-registry.tentative.html new file mode 100644 index 00000000000..f9bc5b5b568 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/scoped-registry/ShadowRoot-init-registry.tentative.html @@ -0,0 +1,52 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-xml-parser.xhtml b/tests/wpt/web-platform-tests/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-xml-parser.xhtml new file mode 100644 index 00000000000..c0a7f622fbe --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-xml-parser.xhtml @@ -0,0 +1,134 @@ + + + +Custom Elements: create an element for a token must increment and decrement document's throw-on-dynamic-markup-insertion counter + + + + + + + + + +
    + + +`); + let content_document; + try { + content_document = content_window.document; + } catch (error) { } + assert_true(executed, 'Must synchronously instantiate a custom element'); + return {window: content_window, document: content_document, exception}; +} + +promise_test(async function () { + const result = await construct_custom_element_in_parser(this, `document.open()`); + assert_throws_dom('InvalidStateError', result.window.DOMException, () => { throw result.exception; }, 'Must throw an InvalidStateError'); + }, 'document.open() must throw an InvalidStateError when synchronously constructing a custom element'); + +promise_test(async function () { + const result = await construct_custom_element_in_parser(this, `document.open('text/html')`); + assert_throws_dom('InvalidStateError', result.window.DOMException, () => { throw result.exception; }, 'Must throw an InvalidStateError'); +}, 'document.open("text/html") must throw an InvalidStateError when synchronously constructing a custom element'); + +// https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-document-open-window +promise_test(async function () { + let load_promise = new Promise((resolve) => window.onmessage = (event) => resolve(event.data)); + const url = top.location.href.substring(0, top.location.href.lastIndexOf('/')) + '/resources/navigation-destination.html'; + const result = await construct_custom_element_in_parser(this, `document.open('${url}', '_self', '')`); + assert_equals(result.exception, null); + assert_equals(await load_promise, 'didNavigate'); +}, 'document.open(URL) must NOT throw an InvalidStateError when synchronously constructing a custom element'); + +promise_test(async function () { + const result = await construct_custom_element_in_parser(this, `document.close()`); + assert_not_equals(result.exception, null); + assert_throws_dom('InvalidStateError', result.window.DOMException, () => { throw result.exception; }, 'Must throw an InvalidStateError'); +}, 'document.close() must throw an InvalidStateError when synchronously constructing a custom element'); + +promise_test(async function () { + const result = await construct_custom_element_in_parser(this, `document.write('some text')`); + assert_throws_dom('InvalidStateError', result.window.DOMException, () => { throw result.exception; }, 'Must throw an InvalidStateError'); + assert_equals(result.document.querySelector('b'), null, 'Must not insert new content'); + assert_false(result.document.body.innerHTML.includes('some text'), 'Must not insert new content'); +}, 'document.write must throw an InvalidStateError when synchronously constructing a custom element'); + +promise_test(async function () { + const result = await construct_custom_element_in_parser(this, `document.writeln('some text')`); + assert_throws_dom('InvalidStateError', result.window.DOMException, () => { throw result.exception; }, 'Must throw an InvalidStateError'); + assert_equals(result.document.querySelector('b'), null, 'Must not insert new content'); + assert_false(result.document.body.innerHTML.includes('some text'), 'Must not insert new content'); +}, 'document.writeln must throw an InvalidStateError when synchronously constructing a custom element'); + +promise_test(async function () { + window.another_window = await create_window_in_test_async(this, 'text/html', ''); + const result = await construct_custom_element_in_parser(this, `top.another_window.document.open()`); + assert_equals(result.exception, null); +}, 'document.open() of another document must not throw an InvalidStateError when synchronously constructing a custom element'); + +promise_test(async function () { + window.another_window = await create_window_in_test_async(this, 'text/html', ''); + const result = await construct_custom_element_in_parser(this, `top.another_window.document.open('text/html')`); + assert_equals(result.exception, null); +}, 'document.open("text/html") of another document must not throw an InvalidStateError when synchronously constructing a custom element'); + +promise_test(async function () { + window.another_window = await create_window_in_test_async(this, 'text/html', ''); + const result = await construct_custom_element_in_parser(this, `top.another_window.document.close()`); + assert_equals(result.exception, null); +}, 'document.close() of another document must not throw an InvalidStateError when synchronously constructing a custom element'); + +promise_test(async function () { + window.another_window = await create_window_in_test_async(this, 'text/html', ''); + const result = await construct_custom_element_in_parser(this, `top.another_window.document.write('some text')`); + assert_equals(result.exception, null); + assert_equals(another_window.document.querySelector('b').outerHTML, 'some text'); +}, 'document.write of another document must not throw an InvalidStateError when synchronously constructing a custom element'); + +promise_test(async function () { + window.another_window = await create_window_in_test_async(this, 'text/html', ''); + const result = await construct_custom_element_in_parser(this, `top.another_window.document.writeln('some text')`); + assert_equals(result.exception, null); + assert_equals(another_window.document.querySelector('b').outerHTML, 'some text'); +}, 'document.writeln of another document must not throw an InvalidStateError when synchronously constructing a custom element'); + +]]> + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-xml-parser.xhtml b/tests/wpt/web-platform-tests/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-xml-parser.xhtml new file mode 100644 index 00000000000..13f664550be --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-xml-parser.xhtml @@ -0,0 +1,134 @@ + + + +Custom Elements: create an element for a token must increment and decrement document's throw-on-dynamic-markup-insertion counter + + + + + + + + + +
    + + +`); + let content_document; + try { + content_document = content_window.document; + } catch (error) { } + assert_true(executed, 'Must immediately process custom element reactions for setting attributes'); + return {window: content_window, document: content_document, exception}; +} + +promise_test(async function () { + const result = await custom_element_reactions_in_parser(this, `document.open()`); + assert_throws_dom('InvalidStateError', result.window.DOMException, () => { throw result.exception; }, 'Must throw an InvalidStateError'); +}, 'document.open() must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element'); + +promise_test(async function () { + const result = await custom_element_reactions_in_parser(this, `document.open('text/html')`); + assert_throws_dom('InvalidStateError', result.window.DOMException, () => { throw result.exception; }, 'Must throw an InvalidStateError'); +}, 'document.open("text/html") must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element'); + +// https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-document-open-window +promise_test(async function () { + let load_promise = new Promise((resolve) => window.onmessage = (event) => resolve(event.data)); + const url = top.location.href.substring(0, top.location.href.lastIndexOf('/')) + '/resources/navigation-destination.html'; + const result = await custom_element_reactions_in_parser(this, `document.open('${url}', '_self', '')`); + assert_equals(result.exception, null); + assert_equals(await load_promise, 'didNavigate'); +}, 'document.open(URL) must NOT throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element'); + +promise_test(async function () { + const result = await custom_element_reactions_in_parser(this, `document.close()`); + assert_throws_dom('InvalidStateError', result.window.DOMException, () => { throw result.exception; }, 'Must throw an InvalidStateError'); +}, 'document.close() must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element'); + +promise_test(async function () { + const result = await custom_element_reactions_in_parser(this, `document.write('some text')`); + assert_throws_dom('InvalidStateError', result.window.DOMException, () => { throw result.exception; }, 'Must throw an InvalidStateError'); + assert_equals(result.document.querySelector('b'), null, 'Must not insert new content'); + assert_false(result.document.body.innerHTML.includes('some text'), 'Must not insert new content'); +}, 'document.write must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element'); + +promise_test(async function () { + const result = await custom_element_reactions_in_parser(this, `document.writeln('some text')`); + assert_throws_dom('InvalidStateError', result.window.DOMException, () => { throw result.exception; }, 'Must throw an InvalidStateError'); + assert_equals(result.document.querySelector('b'), null, 'Must not insert new content'); + assert_false(result.document.body.innerHTML.includes('some text'), 'Must not insert new content'); +}, 'document.writeln must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element'); + +promise_test(async function () { + window.another_window = await create_window_in_test(this); + const result = await custom_element_reactions_in_parser(this, `top.another_window.document.open()`); + assert_equals(result.exception, null); +}, 'document.open() of another document must not throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element'); + +promise_test(async function () { + window.another_window = await create_window_in_test(this); + const result = await custom_element_reactions_in_parser(this, `top.another_window.document.open('text/html')`); + assert_equals(result.exception, null); +}, 'document.open("text/html") of another document must not throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element'); + +promise_test(async function () { + window.another_window = await create_window_in_test(this); + const result = await custom_element_reactions_in_parser(this, `top.another_window.document.close()`); + assert_equals(result.exception, null); +}, 'document.close() of another document must not throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element'); + +promise_test(async function () { + window.another_window = await create_window_in_test(this); + const result = await custom_element_reactions_in_parser(this, `top.another_window.document.write('some text')`); + assert_equals(result.exception, null); + assert_equals(another_window.document.querySelector('b').outerHTML, 'some text'); +}, 'document.write of another document must not throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element'); + +promise_test(async function () { + window.another_window = await create_window_in_test(this); + const result = await custom_element_reactions_in_parser(this, `top.another_window.document.writeln('some text')`); + assert_equals(result.exception, null); + assert_equals(another_window.document.querySelector('b').outerHTML, 'some text'); +}, 'document.writeln of another document must not throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element'); + +]]> + + + diff --git a/tests/wpt/web-platform-tests/custom-elements/when-defined-reentry-crash.html b/tests/wpt/web-platform-tests/custom-elements/when-defined-reentry-crash.html new file mode 100644 index 00000000000..38614cbbd78 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/when-defined-reentry-crash.html @@ -0,0 +1,25 @@ + + +Check for crashes when a whenDefined promise resolving re-entries + + + + + +Test passes if it does not crash. diff --git a/tests/wpt/web-platform-tests/density-size-correction/density-corrected-image-svg-aspect-ratio-cross-origin.sub.html b/tests/wpt/web-platform-tests/density-size-correction/density-corrected-image-svg-aspect-ratio-cross-origin.sub.html index 8c651225450..4cedfd9aac3 100644 --- a/tests/wpt/web-platform-tests/density-size-correction/density-corrected-image-svg-aspect-ratio-cross-origin.sub.html +++ b/tests/wpt/web-platform-tests/density-size-correction/density-corrected-image-svg-aspect-ratio-cross-origin.sub.html @@ -3,7 +3,6 @@ Density Corrected Size: SVG aspect ratio (cross-origin) - diff --git a/tests/wpt/web-platform-tests/density-size-correction/density-corrected-image-svg-aspect-ratio.html b/tests/wpt/web-platform-tests/density-size-correction/density-corrected-image-svg-aspect-ratio.html index fbc68de65db..2b4d938a14f 100644 --- a/tests/wpt/web-platform-tests/density-size-correction/density-corrected-image-svg-aspect-ratio.html +++ b/tests/wpt/web-platform-tests/density-size-correction/density-corrected-image-svg-aspect-ratio.html @@ -4,7 +4,6 @@ - diff --git a/tests/wpt/web-platform-tests/device-memory/META.yml b/tests/wpt/web-platform-tests/device-memory/META.yml index b8dd4761adf..390013487f6 100644 --- a/tests/wpt/web-platform-tests/device-memory/META.yml +++ b/tests/wpt/web-platform-tests/device-memory/META.yml @@ -1,3 +1,3 @@ -spec: https://w3c.github.io/device-memory/ +spec: https://www.w3.org/TR/device-memory/ suggested_reviewers: - npm1 diff --git a/tests/wpt/web-platform-tests/direct-sockets/direct-sockets-disabled-by-permissions-policy.https.sub.html b/tests/wpt/web-platform-tests/direct-sockets/direct-sockets-disabled-by-permissions-policy.https.sub.html index 03760e79502..9e81223de1c 100644 --- a/tests/wpt/web-platform-tests/direct-sockets/direct-sockets-disabled-by-permissions-policy.https.sub.html +++ b/tests/wpt/web-platform-tests/direct-sockets/direct-sockets-disabled-by-permissions-policy.https.sub.html @@ -9,16 +9,6 @@ - + diff --git a/tests/wpt/web-platform-tests/direct-sockets/direct-sockets-disabled-by-permissions-policy.js b/tests/wpt/web-platform-tests/direct-sockets/direct-sockets-disabled-by-permissions-policy.js new file mode 100644 index 00000000000..a27d1ddf497 --- /dev/null +++ b/tests/wpt/web-platform-tests/direct-sockets/direct-sockets-disabled-by-permissions-policy.js @@ -0,0 +1,8 @@ +'use strict'; + +test(() => { + assert_throws_dom("NotAllowedError", () => new TCPSocket("address.com", 53), "constructor should throw"); +}, "tcp disabled by permissions-policy"); +test(() => { + assert_throws_dom("NotAllowedError", () => new UDPSocket({ remoteAddress: "address.com", remotePort: 53 }), "constructor should throw"); +}, "udp disabled by permissions-policy"); diff --git a/tests/wpt/web-platform-tests/direct-sockets/open-securecontext.http.html b/tests/wpt/web-platform-tests/direct-sockets/open-securecontext.http.html index ae403b6b584..c3a2a42a25b 100644 --- a/tests/wpt/web-platform-tests/direct-sockets/open-securecontext.http.html +++ b/tests/wpt/web-platform-tests/direct-sockets/open-securecontext.http.html @@ -10,12 +10,12 @@ diff --git a/tests/wpt/web-platform-tests/direct-sockets/open-without-user-gesture.https.html b/tests/wpt/web-platform-tests/direct-sockets/open-without-user-gesture.https.html deleted file mode 100644 index ed9a9e0d2c6..00000000000 --- a/tests/wpt/web-platform-tests/direct-sockets/open-without-user-gesture.https.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Sockets test: open without user gesture fails - - - - - - - diff --git a/tests/wpt/web-platform-tests/direct-sockets/remotePort-required.https.html b/tests/wpt/web-platform-tests/direct-sockets/remotePort-required.https.html deleted file mode 100644 index 6d738da845a..00000000000 --- a/tests/wpt/web-platform-tests/direct-sockets/remotePort-required.https.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - Sockets test: open without remotePort - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/docs/Dockerfile b/tests/wpt/web-platform-tests/docs/Dockerfile index e8ae834bd4f..bf5b7088a58 100644 --- a/tests/wpt/web-platform-tests/docs/Dockerfile +++ b/tests/wpt/web-platform-tests/docs/Dockerfile @@ -4,33 +4,22 @@ FROM ubuntu:20.04 ENV DEBIAN_FRONTEND=noninteractive \ DEBCONF_NONINTERACTIVE_SEEN=true -# General requirements not in the base image +# Documentation is generated using Python 3.9 due to spinx-js not +# supporting 3.10: https://github.com/mozilla/sphinx-js/issues/186 RUN apt-get -qqy update \ - && apt-get -qqy install \ - ca-certificates \ - curl \ - git \ - npm \ - python3 \ - python3-distutils \ - python3-pip \ - python3.9 \ - python3-distutils \ - python3.9-venv \ - software-properties-common \ - tzdata \ - sudo \ - unzip \ - # Set Python 3.9 as the default - && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 \ - && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2; - -# Make sure we're using the latest pip -RUN pip install --upgrade pip \ - && pip install virtualenv + && apt-get -qqy install git npm python3.9 python3.9-venv WORKDIR /app/ -COPY ./package.json ./ +COPY package.json requirements.txt ./ + RUN npm install . ENV PATH=/app/node_modules/.bin:$PATH + +# Use venv to create a virtual environment with the docs dependencies installed, +# setting the environment variables needed for this to always be active. The +# `./wpt build-docs` then uses this venv with --skip-venv-setup. +ENV VIRTUAL_ENV=/app/venv +RUN python3.9 -m venv $VIRTUAL_ENV +ENV PATH=$VIRTUAL_ENV/bin:$PATH +RUN pip install -r requirements.txt diff --git a/tests/wpt/web-platform-tests/docs/admin/index.md b/tests/wpt/web-platform-tests/docs/admin/index.md index 9f52c17669a..dd7dfe2e72a 100644 --- a/tests/wpt/web-platform-tests/docs/admin/index.md +++ b/tests/wpt/web-platform-tests/docs/admin/index.md @@ -44,11 +44,10 @@ explicitly-managed secret. - (unknown registrar): http://testthewebforward.org - web-human@w3.org - [Google Domains](https://domains.google/): https://wpt.fyi - - smcgruer@google.com - - foolip@google.com -- (Google internal): https://wpt.live - - smcgruer@google.com + - danielrsmith@google.com - foolip@google.com + - kyleju@google.com + - pastithas@google.com - [GitHub](https://github.com/): web-platform-tests - [@foolip](https://github.com/foolip) - [@jgraham](https://github.com/jgraham) @@ -60,12 +59,22 @@ explicitly-managed secret. - [@plehegar](https://github.com/plehegar) - [@sideshowbarker](https://github.com/sideshowbarker) - [Google Cloud Platform](https://cloud.google.com/): wptdashboard{-staging} - - smcgruer@google.com + - danielrsmith@google.com - foolip@google.com + - kyleju@google.com + - pastithas@google.com - [Google Cloud Platform](https://cloud.google.com/): wpt-live - - smcgruer@google.com + - danielrsmith@chromium.org + - foolip@chromium.org + - kyleju@chromium.org + - mike@bocoup.com + - pastithas@chromium.org + - The DNS for wpt.live, not-wpt.live, wptpr.live, and not-wptpr.live are also managed in this project, while the domains are registered with a Google-internal mechanism. - [Google Cloud Platform](https://cloud.google.com/): wpt-pr-bot - - smcgruer@google.com + - danielrsmith@google.com + - foolip@google.com + - kyleju@google.com + - pastithas@google.com - E-mail address: wpt.pr.bot@gmail.com - smcgruer@google.com - boaz@bocoup.com diff --git a/tests/wpt/web-platform-tests/docs/commands.json b/tests/wpt/web-platform-tests/docs/commands.json index 9482d8fb971..b908485c43a 100644 --- a/tests/wpt/web-platform-tests/docs/commands.json +++ b/tests/wpt/web-platform-tests/docs/commands.json @@ -6,7 +6,7 @@ "help": "Build documentation", "virtualenv": true, "requirements": [ - "./requirements.txt" + "requirements.txt" ] } } diff --git a/tests/wpt/web-platform-tests/docs/frontend.py b/tests/wpt/web-platform-tests/docs/frontend.py index 9397e05ad51..c8d114b39f6 100644 --- a/tests/wpt/web-platform-tests/docs/frontend.py +++ b/tests/wpt/web-platform-tests/docs/frontend.py @@ -84,8 +84,9 @@ def docker_run(**kwargs): if os.isatty(os.isatty(sys.stdout.fileno())): cmd.append("-it") cmd.extend(["wpt:docs", "./wpt"]) - if kwargs["venv"]: - cmd.extend(["--venv", kwargs["venv"]]) + # /app/venv is created during docker build and is always active inside the + # container. + cmd.extend(["--venv", "/app/venv", "--skip-venv-setup"]) cmd.extend(["build-docs", "--type", kwargs["type"]]) if kwargs["serve"] is not None: cmd.extend(["--serve", str(kwargs["serve"])]) @@ -96,7 +97,6 @@ def docker_run(**kwargs): def build(_venv, **kwargs): if kwargs["docker"]: docker_build() - kwargs["venv"] = "/app/venv" return docker_run(**kwargs) out_dir = os.path.join(here, "_build") @@ -108,7 +108,7 @@ def build(_venv, **kwargs): sys.exit(1) if kwargs["serve"] is not None: executable = "sphinx-autobuild" - extras = ["-p", str(kwargs["serve"]), + extras = ["--port", str(kwargs["serve"]), "--host", "0.0.0.0", "--watch", os.path.abspath(os.path.join(here, os.pardir, "resources")), # Ignore changes to files specified with glob pattern diff --git a/tests/wpt/web-platform-tests/docs/requirements.txt b/tests/wpt/web-platform-tests/docs/requirements.txt index bdf0ee2ab16..1cdeadd2dcc 100644 --- a/tests/wpt/web-platform-tests/docs/requirements.txt +++ b/tests/wpt/web-platform-tests/docs/requirements.txt @@ -1,5 +1,6 @@ recommonmark==0.7.1 sphinx-argparse==0.3.1 -sphinx-autobuild==0.7.1 +sphinx-autobuild==2021.3.14 sphinx-js==3.1.2 sphinx==4.4.0 +markupsafe==2.0.1 diff --git a/tests/wpt/web-platform-tests/docs/running-tests/chrome-chromium-installation-detection.md b/tests/wpt/web-platform-tests/docs/running-tests/chrome-chromium-installation-detection.md new file mode 100644 index 00000000000..63fcd8688d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/running-tests/chrome-chromium-installation-detection.md @@ -0,0 +1,96 @@ +# Detection and Installation of Browser and WebDriver Binaries and for Chrome and Chromium + +This is a detailed description of the process in which WPT detects and installs the browser +components for Chrome and Chromium. This process can seem convoluted and difficult to +understand at first glance, but the reason for this process is to best ensure these components +are compatible with each other and are the intended items that the user is trying to test. + +## Chrome + +### Detection +**Browser**: Because WPT does not offer installation of Chrome browser binaries, it will +not attempt to detect a Chrome browser binary in the virtual environment directory. +Instead, commonly-used installation locations on various operating systems are checked to +detect a valid Chrome binary. This detection process is only used if the user has not passed +a binary path as an argument using the `--binary` flag. + +**WebDriver**: ChromeDriver detection for Chrome will only occur if a valid browser binary +has been found. Once the browser binary version is detected, the virtual environment +directory will be checked to see if a matching ChromeDriver version is already installed. +If the browser and ChromeDriver versions do not match, the ChromeDriver binary will be +removed from the directory and the user will be prompted to begin the webdriver installation +process. A ChromeDriver version is considered matching the browser version if ChromeDriver shares +the same major version, or next major version when testing Chrome Dev. For example, Chrome 98.x.x.x +is considered to match ChromeDriver version 98.x.x.x, or also ChromeDriver 99.x.x.x if testing +Chrome Dev. + +Note: Both Chrome and Chromium’s versions of ChromeDriver are stored in separate +directories in the virtual environment directory i.e +`_venv3/bin/{chrome|chromium}/{chromedriver}`. This safeguards from accidentally +using Chromium’s ChromeDriver for a Chrome run and vice versa. Additionally, there +is no need to reinstall ChromeDriver versions if switching between testing Chrome and Chromium. + +### Installation +**Browser**: Browser binary installation is not provided through WPT and will throw a +`NotImplementedError` if attempted via `./wpt install`. The user will need to +have a browser binary on their system that can be detected or provide a path explicitly +using the `--binary` flag. + +**WebDriver**: A version of ChromeDriver will only be installed once a Chrome browser binary +has been given or detected. A `FileNotFoundError` will be raised if the user tries to download +ChromeDriver via `./wpt install` and a browser binary is not located. After browser binary +detection, a version of ChromeDriver that matches the browser binary will be installed. +The download source for this ChromeDriver is +[described here](https://chromedriver.chromium.org/downloads/version-selection). +If a matching ChromeDriver version cannot be found using this process, it is assumed that +the Chrome browser binary is a dev version which does not have a ChromeDriver version available +through official releases. In this case, the Chromium revision associated with this version is +detected from [OmahaProxy](https://omahaproxy.appspot.com/) and used to download +Chromium's version of ChromeDriver for use from Chromium snapshots, as this is currently +the closest version we can match for Chrome Dev. Finally, if the revision number detected is +not available in Chromium snapshots, or if the version does not match any revision number, +the latest revision of Chromium's ChromeDriver is installed from Chromium snapshots. + +## Chromium + +### Detection +**Browser**: Chromium browser binary detection is only done in the virtual +environment directory `_venv3/browsers/{channel}/`, not on the user’s system +outside of this directory. This detection process is only used if the user has +not passed a binary path as an argument using the `--binary` flag. + +**WebDriver**: ChromeDriver detection for Chromium will only occur if a valid browser binary has +been found. Once the browser binary version is detected, the virtual environment directory will +be checked to see if a matching ChromeDriver version is already installed. If the versions do not +match, the ChromeDriver binary will be removed from the directory and the user will be prompted to +begin the webdriver installation process. For Chromium, the ChromeDriver and browser versions must be +the same to be considered matching. For example, Chromium 99.0.4844.74 will only match ChromeDriver +99.0.4844.74. + +### Installation +**Browser**: Chromium’s browser binary will be installed from +[Chromium snapshots storage](https://storage.googleapis.com/chromium-browser-snapshots/index.html). +The last revision associated with the user’s operating system will be downloaded +(this revision is obtained by the LAST_CHANGE designation from the snapshots bucket). +Chromium does not have varying channels, so the installation uses the default `nightly` +designation. The install path is `_venv3/browsers/nightly/{chromium_binary}`. + +Note: If this download process is successful, the Chromium snapshot URL that the browser +binary was downloaded from will be kept during the current invocation. If a Chromium ChromeDriver +is also downloaded later to match this browser binary, the same URL is used for that download to +ensure both components are downloaded from the same source. + +**WebDriver**: A version of ChromeDriver will only be installed once a Chromium browser binary +has been given or detected. A FileNotFoundError will be raised if the user tries to download +ChromeDriver via the install command and a browser binary is not located. A version of +ChromeDriver that matches the version of the browser binary will be installed. The download +source for this ChromeDriver will be the Chromium snapshots. If a Chromium browser +binary and webdriver are installed in the same invocation of `./wpt run` +(for example, by passing both `--install-browser` and `--install-webdriver` flags), then the +browser binary and ChromeDriver will be pulled from the same Chromium snapshots URL (see Note +from browser installation). Although unusual, if a Chromium browser binary is detected and +it is not the tip-of-tree revision and the browser binary was not downloaded and installed +during this invocation of `./wpt run` and the currently installed ChromeDriver version does +not match the browser version, then an attempt will be made to detect the revision number from +the browser binary version using the [OmahaProxy](https://omahaproxy.appspot.com/) +and download the matching ChromeDriver using this revision number from Chromium snapshots. diff --git a/tests/wpt/web-platform-tests/docs/running-tests/chrome.md b/tests/wpt/web-platform-tests/docs/running-tests/chrome.md index 808639e927a..45293af65ef 100644 --- a/tests/wpt/web-platform-tests/docs/running-tests/chrome.md +++ b/tests/wpt/web-platform-tests/docs/running-tests/chrome.md @@ -1,4 +1,4 @@ -# Chrome +# Chrome and Chromium When running Chrome, there are some useful command line arguments. @@ -27,4 +27,7 @@ If you want to enable a specific [runtime enabled feature][1], use ./wpt run --binary-arg=--enable-blink-features=AsyncClipboard chrome clipboard-apis/ ``` -[1]: https://chromium.googlesource.com/chromium/src/+/master/third_party/blink/renderer/platform/RuntimeEnabledFeatures.md +[A detailed explanation is available](running-tests/chrome-chromium-installation-detection.html) +for more information on how wpt detects and installs the components for Chrome and Chromium. + +[1]: https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/RuntimeEnabledFeatures.md diff --git a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md index 1cc1e75eea3..77f4799fb24 100644 --- a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md +++ b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md @@ -207,3 +207,9 @@ tracking is required, the command-line interface supports storing and loading the expected result of each test in a test run. See [Expectations Data](../../tools/wptrunner/docs/expectation) for more information on creating and maintaining these files. + +## Testing polyfills + +Polyfill scripts can be tested using the `--inject-script` argument to either +`wpt run` or `wpt serve`. See [Testing Polyfills](testing-polyfills) for +details. diff --git a/tests/wpt/web-platform-tests/docs/running-tests/testing-polyfills.md b/tests/wpt/web-platform-tests/docs/running-tests/testing-polyfills.md new file mode 100644 index 00000000000..468bfa2e033 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/running-tests/testing-polyfills.md @@ -0,0 +1,67 @@ +# Testing polyfills + +## Preparing the polyfill + +The polyfill script-injection feature currently only supports scripts which +are immediately invoked. The script must be prepared as a single file whose +contents will be inlined into a script tag served as part of every test page. + +If your polyfill is only available as an asynchronous module with dependent +scripts, you can use a tool such as +[microbundle](https://github.com/developit/microbundle) to repackage it as a +single synchronous script file, e.g.: + +```bash +microbundle -f iife -i polyfill/src/main.js -o polyfill.js +``` + +## Running the tests + +Follow the steps for [Running Tests from the Local System](from-local-system) to +set up your test environment. When running tests via the browser or via the +command line, add the `--inject-script=polyfill.js` to either command, e.g. + +Via the browser: + +```bash +./wpt serve --inject-script=polyfill.js +``` + +Then visit http://web-platform.test:8000/ or https://web-platform.test:8443/ to +run the tests in your browser. + +Via the command line: + +```bash +./wpt run --inject-script=polyfill.js [browsername] [tests] +``` + +## Limitations + +Polyfill scripts are injected to an inline script tag which removes itself from +the DOM after executing. This is done by modifying the server response for +documents with a `text/html` MIME type to insert the following before the first tag in +the served response: + +```html + + + diff --git a/tests/wpt/web-platform-tests/document-policy/reporting/sync-script-reporting.html.headers b/tests/wpt/web-platform-tests/document-policy/reporting/sync-script-reporting.html.headers new file mode 100644 index 00000000000..cfe200c27b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/document-policy/reporting/sync-script-reporting.html.headers @@ -0,0 +1 @@ +Document-Policy: sync-script=?0 diff --git a/tests/wpt/web-platform-tests/dom/abort/AbortSignal.any.js b/tests/wpt/web-platform-tests/dom/abort/AbortSignal.any.js index 1d7d7678eb1..3bbdc11a92f 100644 --- a/tests/wpt/web-platform-tests/dom/abort/AbortSignal.any.js +++ b/tests/wpt/web-platform-tests/dom/abort/AbortSignal.any.js @@ -10,3 +10,31 @@ async_test(t => { s.onabort = t.unreached_func("abort event handler called"); t.step_timeout(() => { t.done(); }, 2000); }, "signal returned by AbortSignal.abort() should not fire abort event"); + +test(t => { + const signal = AbortSignal.timeout(0); + assert_true(signal instanceof AbortSignal, "returned object is an AbortSignal"); + assert_false(signal.aborted, "returned signal is not already aborted"); +}, "AbortSignal.timeout() returns a non-aborted signal"); + +async_test(t => { + const signal = AbortSignal.timeout(5); + signal.onabort = t.step_func_done(() => { + assert_true(signal.aborted, "signal is aborted"); + assert_true(signal.reason instanceof DOMException, "signal.reason is a DOMException"); + assert_equals(signal.reason.name, "TimeoutError", "signal.reason is a TimeoutError"); + }); +}, "Signal returned by AbortSignal.timeout() times out"); + +async_test(t => { + let result = ""; + for (const value of ["1", "2", "3"]) { + const signal = AbortSignal.timeout(5); + signal.onabort = t.step_func(() => { result += value; }); + } + + const signal = AbortSignal.timeout(5); + signal.onabort = t.step_func_done(() => { + assert_equals(result, "123", "Timeout order should be 123"); + }); +}, "AbortSignal timeouts fire in order"); diff --git a/tests/wpt/web-platform-tests/dom/abort/abort-signal-timeout.html b/tests/wpt/web-platform-tests/dom/abort/abort-signal-timeout.html new file mode 100644 index 00000000000..2a9c13d6143 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/abort/abort-signal-timeout.html @@ -0,0 +1,19 @@ + + +AbortSignal.timeout frame detach + + + + diff --git a/tests/wpt/web-platform-tests/dom/abort/crashtests/timeout-close.html b/tests/wpt/web-platform-tests/dom/abort/crashtests/timeout-close.html new file mode 100644 index 00000000000..ee8544a7f57 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/abort/crashtests/timeout-close.html @@ -0,0 +1,22 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-signal.any.js b/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-signal.any.js index dc401e3bb5a..e6a34261594 100644 --- a/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-signal.any.js +++ b/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-signal.any.js @@ -136,3 +136,8 @@ test(function() { const et = new EventTarget(); assert_throws_js(TypeError, () => { et.addEventListener("foo", () => {}, { signal: null }); }); }, "Passing null as the signal should throw"); + +test(function() { + const et = new EventTarget(); + assert_throws_js(TypeError, () => { et.addEventListener("foo", null, { signal: null }); }); +}, "Passing null as the signal should throw (listener is also null)"); diff --git a/tests/wpt/web-platform-tests/dom/events/Body-FrameSet-Event-Handlers.html b/tests/wpt/web-platform-tests/dom/events/Body-FrameSet-Event-Handlers.html new file mode 100644 index 00000000000..3a891158d5f --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/Body-FrameSet-Event-Handlers.html @@ -0,0 +1,123 @@ + + +HTMLBodyElement and HTMLFrameSetElement Event Handler Tests + + + + + diff --git a/tests/wpt/web-platform-tests/dom/events/Event-constructors.any.js b/tests/wpt/web-platform-tests/dom/events/Event-constructors.any.js index aced2f3c2cd..faa623ea929 100644 --- a/tests/wpt/web-platform-tests/dom/events/Event-constructors.any.js +++ b/tests/wpt/web-platform-tests/dom/events/Event-constructors.any.js @@ -1,5 +1,11 @@ // META: title=Event constructors +test(function() { + assert_throws_js( + TypeError, + () => Event(""), + "Calling Event constructor without 'new' must throw") +}) test(function() { assert_throws_js(TypeError, function() { new Event() diff --git a/tests/wpt/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html b/tests/wpt/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html deleted file mode 100644 index f3f0d58209f..00000000000 --- a/tests/wpt/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html +++ /dev/null @@ -1,73 +0,0 @@ - -Default passive document level touchmove event listener test - - - - - - - -
    -
    - - - diff --git a/tests/wpt/web-platform-tests/dom/events/document-level-wheel-event-listener-passive-by-default.tentative.html b/tests/wpt/web-platform-tests/dom/events/document-level-wheel-event-listener-passive-by-default.tentative.html deleted file mode 100644 index b7224835fa3..00000000000 --- a/tests/wpt/web-platform-tests/dom/events/document-level-wheel-event-listener-passive-by-default.tentative.html +++ /dev/null @@ -1,51 +0,0 @@ - -Default passive document level wheel event listener manual test - - - - - - - -
    This is a manual test since there is no way to synthesize wheel events. -Scroll by wheel in the middle of the page to run the test.
    - - diff --git a/tests/wpt/web-platform-tests/dom/events/event-global-set-before-handleEvent-lookup.any.js b/tests/wpt/web-platform-tests/dom/events/event-global-set-before-handleEvent-lookup.any.js deleted file mode 100644 index 5199cc7d6dd..00000000000 --- a/tests/wpt/web-platform-tests/dom/events/event-global-set-before-handleEvent-lookup.any.js +++ /dev/null @@ -1,19 +0,0 @@ -// https://dom.spec.whatwg.org/#concept-event-listener-inner-invoke (steps 8.2 - 12) -// https://webidl.spec.whatwg.org/#call-a-user-objects-operation (step 10.1) - -test(() => { - const eventTarget = new EventTarget; - - let currentEvent; - eventTarget.addEventListener("foo", { - get handleEvent() { - currentEvent = self.event; - return () => {}; - } - }); - - const event = new Event("foo"); - eventTarget.dispatchEvent(event); - - assert_equals(currentEvent, event); -}, "self.event is set before 'handleEvent' lookup"); diff --git a/tests/wpt/web-platform-tests/dom/events/event-global-set-before-handleEvent-lookup.window.js b/tests/wpt/web-platform-tests/dom/events/event-global-set-before-handleEvent-lookup.window.js new file mode 100644 index 00000000000..8f934bcea97 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/event-global-set-before-handleEvent-lookup.window.js @@ -0,0 +1,19 @@ +// https://dom.spec.whatwg.org/#concept-event-listener-inner-invoke (steps 8.2 - 12) +// https://webidl.spec.whatwg.org/#call-a-user-objects-operation (step 10.1) + +test(() => { + const eventTarget = new EventTarget; + + let currentEvent; + eventTarget.addEventListener("foo", { + get handleEvent() { + currentEvent = window.event; + return () => {}; + } + }); + + const event = new Event("foo"); + eventTarget.dispatchEvent(event); + + assert_equals(currentEvent, event); +}, "window.event is set before 'handleEvent' lookup"); diff --git a/tests/wpt/web-platform-tests/dom/events/mouse-event-retarget.html b/tests/wpt/web-platform-tests/dom/events/mouse-event-retarget.html new file mode 100644 index 00000000000..c9ce6240d40 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/mouse-event-retarget.html @@ -0,0 +1,26 @@ + + +Script created MouseEvent properly retargets and adjusts offsetX + + + + + +
    Hello
    + + diff --git a/tests/wpt/web-platform-tests/dom/events/no-focus-events-at-clicking-editable-content-in-link.html b/tests/wpt/web-platform-tests/dom/events/no-focus-events-at-clicking-editable-content-in-link.html new file mode 100644 index 00000000000..dc08636c467 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/no-focus-events-at-clicking-editable-content-in-link.html @@ -0,0 +1,80 @@ + + + + +Clicking editable content in link shouldn't cause redundant focus related events + + + + + + + +Hello +Hello + + + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-body.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-body.html new file mode 100644 index 00000000000..5574fe0acbc --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-body.html @@ -0,0 +1,19 @@ + +non-passive mousewheel event listener on body + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-div.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-div.html new file mode 100644 index 00000000000..6fbf692cd79 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-div.html @@ -0,0 +1,35 @@ + +non-passive mousewheel event listener on div + + + + + + + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-document.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-document.html new file mode 100644 index 00000000000..7d07393c699 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-document.html @@ -0,0 +1,19 @@ + +non-passive mousewheel event listener on document + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-root.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-root.html new file mode 100644 index 00000000000..e85fbacaba6 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-root.html @@ -0,0 +1,19 @@ + +non-passive mousewheel event listener on root + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-window.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-window.html new file mode 100644 index 00000000000..29b09f85615 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-mousewheel-event-listener-on-window.html @@ -0,0 +1,19 @@ + +non-passive mousewheel event listener on window + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-body.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-body.html new file mode 100644 index 00000000000..f417bdd0a66 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-body.html @@ -0,0 +1,25 @@ + +non-passive touchmove event listener on body + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-div.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-div.html new file mode 100644 index 00000000000..11c93454075 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-div.html @@ -0,0 +1,25 @@ + +non-passive touchmove event listener on div + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-document.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-document.html new file mode 100644 index 00000000000..8b95a8d492b --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-document.html @@ -0,0 +1,25 @@ + +non-passive touchmove event listener on document + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-root.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-root.html new file mode 100644 index 00000000000..c41ab72bd8c --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-root.html @@ -0,0 +1,25 @@ + +non-passive touchmove event listener on root + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-window.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-window.html new file mode 100644 index 00000000000..3d6675c5661 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchmove-event-listener-on-window.html @@ -0,0 +1,25 @@ + + + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-body.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-body.html new file mode 100644 index 00000000000..f6e6ecb06d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-body.html @@ -0,0 +1,25 @@ + +non-passive touchstart event listener on body + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-div.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-div.html new file mode 100644 index 00000000000..2e7c6e6b3b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-div.html @@ -0,0 +1,25 @@ + +non-passive touchstart event listener on div + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-document.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-document.html new file mode 100644 index 00000000000..22fcbdc322c --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-document.html @@ -0,0 +1,25 @@ + +non-passive touchstart event listener on document + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-root.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-root.html new file mode 100644 index 00000000000..56c51349a04 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-root.html @@ -0,0 +1,25 @@ + +non-passive touchstart event listener on root + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-window.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-window.html new file mode 100644 index 00000000000..4e9d424a9de --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-touchstart-event-listener-on-window.html @@ -0,0 +1,25 @@ + +non-passive touchstart event listener on window + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-body.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-body.html new file mode 100644 index 00000000000..070cadc2918 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-body.html @@ -0,0 +1,18 @@ + +non-passive wheel event listener on body + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-div.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-div.html new file mode 100644 index 00000000000..c49d18ac139 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-div.html @@ -0,0 +1,34 @@ + +non-passive wheel event listener on div + + + + + + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-document.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-document.html new file mode 100644 index 00000000000..31a55cad43e --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-document.html @@ -0,0 +1,18 @@ + +non-passive wheel event listener on document + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-root.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-root.html new file mode 100644 index 00000000000..b7bacbfc7ce --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-root.html @@ -0,0 +1,18 @@ + +non-passive wheel event listener on root + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-window.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-window.html new file mode 100644 index 00000000000..c236059df4d --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/non-passive-wheel-event-listener-on-window.html @@ -0,0 +1,18 @@ + +non-passive wheel event listener on window + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-body.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-body.html new file mode 100644 index 00000000000..9db12cfbdc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-body.html @@ -0,0 +1,19 @@ + +passive mousewheel event listener on body + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-div.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-div.html new file mode 100644 index 00000000000..373670856b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-div.html @@ -0,0 +1,35 @@ + +passive mousewheel event listener on div + + + + + + + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-document.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-document.html new file mode 100644 index 00000000000..71262280b6f --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-document.html @@ -0,0 +1,19 @@ + +passive mousewheel event listener on document + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-root.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-root.html new file mode 100644 index 00000000000..fc641d172e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-root.html @@ -0,0 +1,19 @@ + +passive mousewheel event listener on root + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-window.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-window.html new file mode 100644 index 00000000000..f60955c7c48 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-mousewheel-event-listener-on-window.html @@ -0,0 +1,19 @@ + +passive mousewheel event listener on window + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-body.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-body.html new file mode 100644 index 00000000000..2349bad2583 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-body.html @@ -0,0 +1,25 @@ + +passive touchmove event listener on body + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-div.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-div.html new file mode 100644 index 00000000000..a61b34851e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-div.html @@ -0,0 +1,25 @@ + +passive touchmove event listener on div + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-document.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-document.html new file mode 100644 index 00000000000..b49971b5b01 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-document.html @@ -0,0 +1,25 @@ + +passive touchmove event listener on document + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-root.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-root.html new file mode 100644 index 00000000000..b8517045900 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-root.html @@ -0,0 +1,25 @@ + +passive touchmove event listener on root + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-window.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-window.html new file mode 100644 index 00000000000..351d6ace845 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchmove-event-listener-on-window.html @@ -0,0 +1,25 @@ + +passive touchmove event listener on window + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-body.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-body.html new file mode 100644 index 00000000000..c3d2b577fd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-body.html @@ -0,0 +1,25 @@ + +passive touchstart event listener on body + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-div.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-div.html new file mode 100644 index 00000000000..103e7f0d233 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-div.html @@ -0,0 +1,25 @@ + +passive touchstart event listener on div + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-document.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-document.html new file mode 100644 index 00000000000..2e4de2405fb --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-document.html @@ -0,0 +1,25 @@ + +passive touchstart event listener on document + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-root.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-root.html new file mode 100644 index 00000000000..0f52e9a16fe --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-root.html @@ -0,0 +1,25 @@ + +passive touchstart event listener on root + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-window.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-window.html new file mode 100644 index 00000000000..c47af8101f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-touchstart-event-listener-on-window.html @@ -0,0 +1,25 @@ + +passive touchstart event listener on window + + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-body.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-body.html new file mode 100644 index 00000000000..fe0869b0229 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-body.html @@ -0,0 +1,18 @@ + +passive wheel event listener on body + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-div.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-div.html new file mode 100644 index 00000000000..e2ca6e795ae --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-div.html @@ -0,0 +1,34 @@ + +passive wheel event listener on div + + + + + + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-document.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-document.html new file mode 100644 index 00000000000..61b716f7bbf --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-document.html @@ -0,0 +1,18 @@ + +passive wheel event listener on document + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-root.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-root.html new file mode 100644 index 00000000000..6b383bc871d --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-root.html @@ -0,0 +1,18 @@ + +passive wheel event listener on root + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-window.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-window.html new file mode 100644 index 00000000000..a1e901f5527 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/passive-wheel-event-listener-on-window.html @@ -0,0 +1,18 @@ + +passive wheel event listener on window + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/resources/scrolling.js b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/resources/scrolling.js new file mode 100644 index 00000000000..88e10f5efdc --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/resources/scrolling.js @@ -0,0 +1,34 @@ +function raf() { + return new Promise((resolve) => { + // rAF twice. + window.requestAnimationFrame(() => { + window.requestAnimationFrame(resolve); + }); + }); +} + +async function runTest({target, eventName, passive, expectCancelable}) { + await raf(); + + let cancelable = null; + let arrived = false; + target.addEventListener(eventName, function (event) { + cancelable = event.cancelable; + arrived = true; + }, {passive:passive, once:true}); + + promise_test(async (t) => { + t.add_cleanup(() => { + document.querySelector('.remove-on-cleanup')?.remove(); + }); + const pos_x = Math.floor(window.innerWidth / 2); + const pos_y = Math.floor(window.innerHeight / 2); + const delta_x = 0; + const delta_y = 100; + + await new test_driver.Actions() + .scroll(pos_x, pos_y, delta_x, delta_y).send(); + await t.step_wait(() => arrived, `Didn't get event ${eventName} on ${target.localName}`); + assert_equals(cancelable, expectCancelable); + }); +} diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/resources/touching.js b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/resources/touching.js new file mode 100644 index 00000000000..620d26804bf --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/resources/touching.js @@ -0,0 +1,34 @@ +function waitForCompositorCommit() { + return new Promise((resolve) => { + // rAF twice. + window.requestAnimationFrame(() => { + window.requestAnimationFrame(resolve); + }); + }); +} + +function injectInput(touchDiv) { + return new test_driver.Actions() + .addPointer("touch_pointer", "touch") + .pointerMove(0, 0, {origin: touchDiv}) + .pointerDown() + .pointerMove(30, 30) + .pointerUp() + .send(); +} + +function runTest({target, eventName, passive, expectCancelable}) { + let touchDiv = document.getElementById("touchDiv"); + let cancelable = null; + let arrived = false; + target.addEventListener(eventName, function (event) { + cancelable = event.cancelable; + arrived = true; + }, {passive}); + promise_test(async () => { + await waitForCompositorCommit(); + await injectInput(touchDiv); + await waitFor(() => arrived); + assert_equals(cancelable, expectCancelable); + }); +} diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/resources/wait-for.js b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/resources/wait-for.js new file mode 100644 index 00000000000..0bf3e558342 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/resources/wait-for.js @@ -0,0 +1,15 @@ +function waitFor(condition, MAX_FRAME = 500) { + return new Promise((resolve, reject) => { + function tick(frames) { + // We requestAnimationFrame either for MAX_FRAME frames or until condition is + // met. + if (frames >= MAX_FRAME) + reject(new Error(`Condition did not become true after ${MAX_FRAME} frames`)); + else if (condition()) + resolve(); + else + requestAnimationFrame(() => tick(frames + 1)); + } + tick(0); + }); +} diff --git a/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/synthetic-events-cancelable.html b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/synthetic-events-cancelable.html new file mode 100644 index 00000000000..4287770b8d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/non-cancelable-when-passive/synthetic-events-cancelable.html @@ -0,0 +1,34 @@ + +Synthetic events are always cancelable by default + + + + diff --git a/tests/wpt/web-platform-tests/dom/events/passive-by-default.html b/tests/wpt/web-platform-tests/dom/events/passive-by-default.html new file mode 100644 index 00000000000..02029f4dacf --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/passive-by-default.html @@ -0,0 +1,50 @@ + +Default passive event listeners on window, document, document element, body + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/iframe-chains.html b/tests/wpt/web-platform-tests/dom/events/scrolling/iframe-chains.html index 2d7e1827ada..fb7d674aae1 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/iframe-chains.html +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/iframe-chains.html @@ -39,7 +39,8 @@ body { margin: 0; padding: 10px; } promise_test(async t => { await new test_driver.Actions().scroll(50, 50, 0, 50).send(); - assert_equals(scroller.scrollTop, 50); + // Allow the possibility the scroll is not fully synchronous + await t.step_wait(() => scroller.scrollTop === 50); }, "Wheel scroll in iframe chains to containing element."); diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js b/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js index 0a73f34fefc..d3be2740807 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js @@ -50,6 +50,31 @@ function waitForAnimationEnd(getValue) { }) } +// Scrolls in target according to move_path with pauses in between +function touchScrollInTargetSequentiallyWithPause(target, move_path, pause_time_in_ms = 100) { + const test_driver_actions = new test_driver.Actions() + .addPointer("pointer1", "touch") + .pointerMove(0, 0, {origin: target}) + .pointerDown(); + + const substeps = 5; + let x = 0; + let y = 0; + // Do each move in 5 steps + for(let move of move_path) { + let step_x = (move.x - x) / substeps; + let step_y = (move.y - y) / substeps; + for(let step = 0; step < substeps; step++) { + x += step_x; + y += step_y; + test_driver_actions.pointerMove(x, y, {origin: target}); + } + test_driver_actions.pause(pause_time_in_ms); + } + + return test_driver_actions.pointerUp().send(); +} + function touchScrollInTarget(pixels_to_scroll, target, direction, pause_time_in_ms = 100) { var x_delta = 0; var y_delta = 0; @@ -61,7 +86,7 @@ function touchScrollInTarget(pixels_to_scroll, target, direction, pause_time_in_ } else if (direction == "right") { x_delta = -1 * pixels_to_scroll / num_movs; } else if (direction == "left") { - x_delta = pixels_to_scroll / num_movs;; + x_delta = pixels_to_scroll / num_movs; } else { throw("scroll direction '" + direction + "' is not expected, direction should be 'down', 'up', 'left' or 'right'"); } @@ -95,3 +120,23 @@ function mouseActionsInTarget(target, origin, delta, pause_time_in_ms = 100) { .pointerUp() .send(); } + +// Returns a promise that resolves when the given condition holds for 10 +// animation frames or rejects if the condition changes to false within 10 +// animation frames. +function conditionHolds(condition, error_message = 'Condition is not true anymore.') { + const MAX_FRAME = 10; + return new Promise((resolve, reject) => { + function tick(frames) { + // We requestAnimationFrame either for 10 frames or until condition is + // violated. + if (frames >= MAX_FRAME) + resolve(); + else if (!condition()) + reject(error_message); + else + requestAnimationFrame(tick.bind(this, frames + 1)); + } + tick(0); + }); +} diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html new file mode 100644 index 00000000000..77bf029ced5 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html @@ -0,0 +1,63 @@ + + + + + + + + + + + +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-snap.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-snap.html index ef1b495791c..03079ddc6ca 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-snap.html +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-snap.html @@ -1,4 +1,5 @@ + diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-programmatic-scroll.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-programmatic-scroll.html index 79b5f5f0186..c6569e0bebb 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-programmatic-scroll.html +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-programmatic-scroll.html @@ -1,5 +1,6 @@ + diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-scrollIntoView.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-scrollIntoView.html index 63e1c3e22ea..8782b1dfee6 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-scrollIntoView.html +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-scrollIntoView.html @@ -1,5 +1,6 @@ + diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-document.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-document.html index a35508e2c55..30904553883 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-document.html +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-document.html @@ -1,4 +1,5 @@ + @@ -41,8 +42,6 @@ function onVerticalScrollEnd(event) { assert_true(event.bubbles); vertical_scrollend_arrived = true; } -document.addEventListener("scrollend", onHorizontalScrollEnd); -document.addEventListener("scrollend", onVerticalScrollEnd); function runTest() { promise_test (async (t) => { @@ -50,13 +49,17 @@ function runTest() { target_div.addEventListener("scrollend", t.unreached_func("target_div got unexpected scrollend event.")); await waitForCompositorCommit(); + // Scroll left on target div and wait for the doc to get scrollend event. + document.addEventListener("scrollend", onHorizontalScrollEnd); await touchScrollInTarget(300, target_div, 'left'); await waitFor(() => { return horizontal_scrollend_arrived; }, 'Document did not receive scrollend event after scroll left on target.'); assert_equals(target_div.scrollLeft, 0); + document.removeEventListener("scrollend", onHorizontalScrollEnd); // Scroll up on target div and wait for the doc to get scrollend event. + document.addEventListener("scrollend", onVerticalScrollEnd); await touchScrollInTarget(300, target_div, 'up'); await waitFor(() => { return vertical_scrollend_arrived; }, 'Document did not receive scrollend event after scroll up on target.'); diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-element-with-overscroll-behavior.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-element-with-overscroll-behavior.html index 0269c66fdde..fd9418eb703 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-element-with-overscroll-behavior.html +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-element-with-overscroll-behavior.html @@ -1,4 +1,5 @@ + diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-scrolled-element.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-scrolled-element.html index 87cad79df7c..73433969422 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-scrolled-element.html +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-scrolled-element.html @@ -1,4 +1,5 @@ + diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-window.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-window.html index f9510e6e231..ef72f56d2ba 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-window.html +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-to-window.html @@ -1,4 +1,5 @@ + diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html index 30f16571cd8..e203482d579 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html @@ -1,6 +1,7 @@ + diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-handler-content-attributes.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-handler-content-attributes.html new file mode 100644 index 00000000000..60e9da72c38 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-handler-content-attributes.html @@ -0,0 +1,102 @@ + + + + + + + + + + + +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-not-fired-after-removing-scroller.tentative.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-not-fired-after-removing-scroller.tentative.html new file mode 100644 index 00000000000..95447fbd12e --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-not-fired-after-removing-scroller.tentative.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/dom/historical.html b/tests/wpt/web-platform-tests/dom/historical.html index 155dc895560..1bc209ec0e7 100644 --- a/tests/wpt/web-platform-tests/dom/historical.html +++ b/tests/wpt/web-platform-tests/dom/historical.html @@ -175,7 +175,9 @@ function isRemovedFromWindow(name) { }, "Window member must be removed: " + name) } var windowRemoved = [ - "attachEvent" + "attachEvent", + "content", + "sidebar", ] windowRemoved.forEach(isRemovedFromWindow) diff --git a/tests/wpt/web-platform-tests/dom/idlharness-shadowrealm.window.js b/tests/wpt/web-platform-tests/dom/idlharness-shadowrealm.window.js new file mode 100644 index 00000000000..cb03c07c9be --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/idlharness-shadowrealm.window.js @@ -0,0 +1,2 @@ +// META: script=/resources/idlharness-shadowrealm.js +idl_test_shadowrealm(["dom"], ["html"]); diff --git a/tests/wpt/web-platform-tests/dom/idlharness.window.js b/tests/wpt/web-platform-tests/dom/idlharness.window.js index c73fbf21756..2c7bfd727e8 100644 --- a/tests/wpt/web-platform-tests/dom/idlharness.window.js +++ b/tests/wpt/web-platform-tests/dom/idlharness.window.js @@ -11,7 +11,7 @@ 'use strict'; idl_test( - ['dom'], + ['dom', 'fullscreen'], ['html'], idl_array => { self.xmlDoc = document.implementation.createDocument(null, '', null); diff --git a/tests/wpt/web-platform-tests/dom/nodes/Document-createEvent-touchevent.window.js b/tests/wpt/web-platform-tests/dom/nodes/Document-createEvent-touchevent.window.js new file mode 100644 index 00000000000..6523ac5a023 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/nodes/Document-createEvent-touchevent.window.js @@ -0,0 +1,12 @@ +for (const variant of ['TouchEvent', 'touchevent', 'TOUCHEVENT']) { + test(() => { + if (!('ontouchstart' in document)) { + assert_throws_dom("NOT_SUPPORTED_ERR", () => { + document.createEvent(variant); + }); + } else { + document.createEvent(variant); + // The interface and other details of the event is tested in Document-createEvent.https.html + } + }, `document.createEvent('${variant}') should throw if 'expose legacy touch event APIs' is false`); +} diff --git a/tests/wpt/web-platform-tests/dom/nodes/Document-createEvent.https.html b/tests/wpt/web-platform-tests/dom/nodes/Document-createEvent.https.html index 8e948a37e68..4781d54e8e4 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/Document-createEvent.https.html +++ b/tests/wpt/web-platform-tests/dom/nodes/Document-createEvent.https.html @@ -7,13 +7,20 @@
    + + + + + + diff --git a/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-2.html b/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-2.html new file mode 100644 index 00000000000..bac0511202e --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-2.html @@ -0,0 +1,22 @@ + + + +NodeList (static collection) "length" getter tampered + + + + + + + diff --git a/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-3.html b/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-3.html new file mode 100644 index 00000000000..9690aab3c13 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-3.html @@ -0,0 +1,22 @@ + + + +NodeList (static collection) "length" getter tampered + + + + + + + diff --git a/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-indexOf-1.html b/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-indexOf-1.html new file mode 100644 index 00000000000..5ce41467571 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-indexOf-1.html @@ -0,0 +1,22 @@ + + + +NodeList (static collection) "length" getter tampered (Array.prototype.indexOf) + + + + + + + diff --git a/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-indexOf-2.html b/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-indexOf-2.html new file mode 100644 index 00000000000..57814ed5aca --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-indexOf-2.html @@ -0,0 +1,22 @@ + + + +NodeList (static collection) "length" getter tampered (Array.prototype.indexOf) + + + + + + + diff --git a/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-indexOf-3.html b/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-indexOf-3.html new file mode 100644 index 00000000000..838f376dd2f --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/nodes/NodeList-static-length-getter-tampered-indexOf-3.html @@ -0,0 +1,22 @@ + + + +NodeList (static collection) "length" getter tampered (Array.prototype.indexOf) + + + + + + + diff --git a/tests/wpt/web-platform-tests/dom/nodes/aria-attribute-reflection.tentative.html b/tests/wpt/web-platform-tests/dom/nodes/aria-attribute-reflection.tentative.html deleted file mode 100644 index dfd5c374db4..00000000000 --- a/tests/wpt/web-platform-tests/dom/nodes/aria-attribute-reflection.tentative.html +++ /dev/null @@ -1,439 +0,0 @@ - - - - - Element Reflection for aria-activedescendant and aria-errormessage - - - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - -
    - - - - - -
    - - - -
    - - - - - - - -
    - - - -
    - - - -
    - - - -
    - - - - - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - - - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/dom/nodes/aria-element-reflection.tentative.html b/tests/wpt/web-platform-tests/dom/nodes/aria-element-reflection.tentative.html deleted file mode 100644 index 776fff31432..00000000000 --- a/tests/wpt/web-platform-tests/dom/nodes/aria-element-reflection.tentative.html +++ /dev/null @@ -1,723 +0,0 @@ - - - - - Element Reflection for aria-activedescendant and aria-errormessage - - - - - - -
    - -
    -
    Item 1
    -
    Item 2
    -
    - - - -
    -
    Item 1
    -
    Item 2
    -
    - - - -
    -
    -
    -
    - - - -
    -

    Hello world!

    - - -
    - - - - - Invalid Time - - - - - -
      -
    • First description.
    • -
    • Second description.
    • -
    - - - -
    -
    Item 1
    -
    Item 2
    -
    - - - -
    -
    Item 1
    -
    Item 2
    -
    - - - - -
    -
    Hello world!
    -
    -
    - - - -
    -
    I am an apple
    -
    I am a pear
    -
    I am a banana
    -
    -
    - - - -
    -
    - - - -
    -
    Billing
    -
    -
    -
    Name
    - -
    -
    -
    Address
    - -
    - - - - - -
    -
    - - - - Fruit -
    Delicious
    -
    Nutritious
    - - - -

    Title

    -
    Next
    -
    Content2
    -
    Content1
    - - - -
      -
    • Parent
    • -
    -
      -
    • Child 1
    • -
    • Child 2
    • -
    - - -
    -

    Light DOM Heading

    -
    -

    Light DOM text

    -

    Light DOM text

    -
    - - - -
    -
    Delicious
    -
    Nutritious
    -
    -
    - - - -
    -
    Misspelling
    -
    Wonderful
    -
    Fantastic
    - -
    -
    - - - - - - - - - - - -
    - - - -
    - - - - - - - - diff --git a/tests/wpt/web-platform-tests/dom/nodes/selectors.js b/tests/wpt/web-platform-tests/dom/nodes/selectors.js index decc983e931..5e05547c9ac 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/selectors.js +++ b/tests/wpt/web-platform-tests/dom/nodes/selectors.js @@ -26,7 +26,7 @@ var invalidSelectors = [ {name: "Invalid class", selector: "..test"}, {name: "Invalid class", selector: ".foo..quux"}, {name: "Invalid class", selector: ".bar."}, - {name: "Invalid combinator", selector: "div & address, p"}, + {name: "Invalid combinator", selector: "div % address, p"}, {name: "Invalid combinator", selector: "div ++ address, p"}, {name: "Invalid combinator", selector: "div ~~ address, p"}, {name: "Invalid [att=value] selector", selector: "[*=test]"}, diff --git a/tests/wpt/web-platform-tests/dom/nodes/support/NodeList-static-length-tampered.js b/tests/wpt/web-platform-tests/dom/nodes/support/NodeList-static-length-tampered.js new file mode 100644 index 00000000000..51167e2ddcc --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/nodes/support/NodeList-static-length-tampered.js @@ -0,0 +1,46 @@ +"use strict"; + +function makeStaticNodeList(length) { + const fooRoot = document.createElement("div"); + + for (var i = 0; i < length; i++) { + const el = document.createElement("span"); + el.className = "foo"; + fooRoot.append(el); + } + + document.body.append(fooRoot); + return fooRoot.querySelectorAll(".foo"); +} + +const indexOfNodeList = new Function("nodeList", ` + const __cacheBust = ${Math.random()}; + + const el = nodeList[50]; + + let index = -1; + + for (var i = 0; i < 1e5 / 2; i++) { + for (var j = 0; j < nodeList.length; j++) { + if (nodeList[j] === el) { + index = j; + break; + } + } + } + + return index; +`); + +const arrayIndexOfNodeList = new Function("nodeList", ` + const __cacheBust = ${Math.random()}; + + const el = nodeList[50]; + const {indexOf} = Array.prototype; + + for (var i = 0; i < 1e5; i++) { + var index = indexOf.call(nodeList, el); + } + + return index; +`); diff --git a/tests/wpt/web-platform-tests/xslt/strip-space-crash.xml b/tests/wpt/web-platform-tests/dom/xslt/strip-space-crash.xml similarity index 100% rename from tests/wpt/web-platform-tests/xslt/strip-space-crash.xml rename to tests/wpt/web-platform-tests/dom/xslt/strip-space-crash.xml diff --git a/tests/wpt/web-platform-tests/domxpath/xpath-evaluate-crash.html b/tests/wpt/web-platform-tests/domxpath/xpath-evaluate-crash.html index d32254936f6..5303d85ad31 100644 --- a/tests/wpt/web-platform-tests/domxpath/xpath-evaluate-crash.html +++ b/tests/wpt/web-platform-tests/domxpath/xpath-evaluate-crash.html @@ -1,11 +1,20 @@ + +Evaluating XPath expressions with orhpaned Attr as context node doesn't crash - + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/contenteditable-will-be-blurred-by-focus-event-listener.html b/tests/wpt/web-platform-tests/editing/crashtests/contenteditable-will-be-blurred-by-focus-event-listener.html new file mode 100644 index 00000000000..a887b1de90e --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/contenteditable-will-be-blurred-by-focus-event-listener.html @@ -0,0 +1,16 @@ + + + + +
    abc
    + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/delete-and-justifycenter-recursively-with-mutation-event-listeners.html b/tests/wpt/web-platform-tests/editing/crashtests/delete-and-justifycenter-recursively-with-mutation-event-listeners.html new file mode 100644 index 00000000000..ce0c7e886f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/delete-and-justifycenter-recursively-with-mutation-event-listeners.html @@ -0,0 +1,34 @@ + + + + + + + +
    +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/editing/crashtests/delete-in-dd-editing-host-after-selectall-with-focus.html b/tests/wpt/web-platform-tests/editing/crashtests/delete-in-dd-editing-host-after-selectall-with-focus.html new file mode 100644 index 00000000000..585cd17bb82 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/delete-in-dd-editing-host-after-selectall-with-focus.html @@ -0,0 +1,12 @@ + +
    +
    diff --git a/tests/wpt/web-platform-tests/editing/crashtests/delete-in-dd-editing-host-after-selectall-without-focus.html b/tests/wpt/web-platform-tests/editing/crashtests/delete-in-dd-editing-host-after-selectall-without-focus.html new file mode 100644 index 00000000000..a45f2dad821 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/delete-in-dd-editing-host-after-selectall-without-focus.html @@ -0,0 +1,12 @@ + +
    +
    diff --git a/tests/wpt/web-platform-tests/editing/crashtests/delete-in-designMode-without-explicitly-setting-focus.html b/tests/wpt/web-platform-tests/editing/crashtests/delete-in-designMode-without-explicitly-setting-focus.html new file mode 100644 index 00000000000..16e1808dc86 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/delete-in-designMode-without-explicitly-setting-focus.html @@ -0,0 +1,17 @@ + + + + + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/designMode-document-will-be-blurred-by-focus-event-listener.html b/tests/wpt/web-platform-tests/editing/crashtests/designMode-document-will-be-blurred-by-focus-event-listener.html new file mode 100644 index 00000000000..3cd6509c4b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/designMode-document-will-be-blurred-by-focus-event-listener.html @@ -0,0 +1,18 @@ + + + + +
    + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/execCommand-without-selection-ranges.html b/tests/wpt/web-platform-tests/editing/crashtests/execCommand-without-selection-ranges.html new file mode 100644 index 00000000000..04913664e6d --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/execCommand-without-selection-ranges.html @@ -0,0 +1,65 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-at-empty-text-node-in-body.html b/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-at-empty-text-node-in-body.html new file mode 100644 index 00000000000..4fba13d5d8e --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-at-empty-text-node-in-body.html @@ -0,0 +1,8 @@ +x y + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-delete-after-justifyleft-indent.html b/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-delete-after-justifyleft-indent.html new file mode 100644 index 00000000000..0b0e1887327 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-delete-after-justifyleft-indent.html @@ -0,0 +1,20 @@ + + + +
    + +here is fieldset +
    +
    + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-in-list-editing-host-after-selectall-with-focus.html b/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-in-list-editing-host-after-selectall-with-focus.html new file mode 100644 index 00000000000..266cc4fb600 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-in-list-editing-host-after-selectall-with-focus.html @@ -0,0 +1,15 @@ + +
      +
    1. +
    2. a
    3. diff --git a/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-in-list-editing-host-after-selectall-without-focus.html b/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-in-list-editing-host-after-selectall-without-focus.html new file mode 100644 index 00000000000..de10e8b8a97 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-in-list-editing-host-after-selectall-without-focus.html @@ -0,0 +1,15 @@ + +
        +
      1. +
      2. a
      3. diff --git a/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-in-text-in-span-in-editable-documentElement.html b/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-in-text-in-span-in-editable-documentElement.html new file mode 100644 index 00000000000..26f2f64b81f --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/forwarddelete-in-text-in-span-in-editable-documentElement.html @@ -0,0 +1,15 @@ + + + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/indent-outdent-after-closing-editable-dialog-element.html b/tests/wpt/web-platform-tests/editing/crashtests/indent-outdent-after-closing-editable-dialog-element.html new file mode 100644 index 00000000000..7f73de048d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/indent-outdent-after-closing-editable-dialog-element.html @@ -0,0 +1,31 @@ + + +a + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/editing/crashtests/insertText-at-end-of-text-in-body.html b/tests/wpt/web-platform-tests/editing/crashtests/insertText-at-end-of-text-in-body.html new file mode 100644 index 00000000000..763697314be --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/insertText-at-end-of-text-in-body.html @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/inserthorizontalrule-in-textarea-in-editor-and-undo-on-error-events.html b/tests/wpt/web-platform-tests/editing/crashtests/inserthorizontalrule-in-textarea-in-editor-and-undo-on-error-events.html new file mode 100644 index 00000000000..204f75a89fb --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/inserthorizontalrule-in-textarea-in-editor-and-undo-on-error-events.html @@ -0,0 +1,31 @@ + + + + + + + + +
        +# + + +
        + + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/inserthorizontalrule-with-2-selection-ranges-and-one-is-outside-body.html b/tests/wpt/web-platform-tests/editing/crashtests/inserthorizontalrule-with-2-selection-ranges-and-one-is-outside-body.html new file mode 100644 index 00000000000..d248c333d94 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/inserthorizontalrule-with-2-selection-ranges-and-one-is-outside-body.html @@ -0,0 +1,19 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/insertlinebreak-around-comment-node.html b/tests/wpt/web-platform-tests/editing/crashtests/insertlinebreak-around-comment-node.html new file mode 100644 index 00000000000..dc2d5e2bd4b --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/insertlinebreak-around-comment-node.html @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/inserttext-at-start-with-different-style.html b/tests/wpt/web-platform-tests/editing/crashtests/inserttext-at-start-with-different-style.html new file mode 100644 index 00000000000..ddd19aafd4c --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/inserttext-at-start-with-different-style.html @@ -0,0 +1,20 @@ + + + + + + + +
          +
        • a
        • +a +
        + + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/move-editing-host-to-subdocument-when-textarea-has-focus.html b/tests/wpt/web-platform-tests/editing/crashtests/move-editing-host-to-subdocument-when-textarea-has-focus.html new file mode 100644 index 00000000000..b7d2e2f9027 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/move-editing-host-to-subdocument-when-textarea-has-focus.html @@ -0,0 +1,15 @@ + +
        + + + +
        +
    + diff --git a/tests/wpt/web-platform-tests/editing/crashtests/update-dom-during-undoing-in-textarea.html b/tests/wpt/web-platform-tests/editing/crashtests/update-dom-during-undoing-in-textarea.html new file mode 100644 index 00000000000..56f7f82a210 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/crashtests/update-dom-during-undoing-in-textarea.html @@ -0,0 +1,32 @@ + + + + +Test for updating the DOM tree while execCommand("undo") is running in the textarea + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/editing/data/delete.js b/tests/wpt/web-platform-tests/editing/data/delete.js index 3c3d1ef703b..26858d17197 100644 --- a/tests/wpt/web-platform-tests/editing/data/delete.js +++ b/tests/wpt/web-platform-tests/editing/data/delete.js @@ -1,3 +1,5 @@ +class MyCustomElement extends HTMLElement {}; +customElements.define("custom-element", MyCustomElement); // For documentation of the format, see README in this directory. var browserTests = [ ["foo[]bar", @@ -2746,4 +2748,62 @@ var browserTests = [ "

    ", [true], {"delete":[false,false,"",false,false,""]}], +["

    [ab

    c]d

    ", + [["delete",""]], + ["

    d

    ", + "

    d

    "], + [true], + {"delete":[false,false,"",false,false,""]}], +["

    a[b

    cd]

    ", + [["delete",""]], + ["

    a

    ", + "

    a

    "], + [true], + {"delete":[false,false,"",false,false,""]}], +["

    [ab

    c]d

    ", + [["delete",""]], + ["

    d

    ", + "

    d

    "], + [true], + {"delete":[false,false,"",false,false,""]}], +["

    a[b

    cd]

    ", + [["delete",""]], + ["

    a

    ", + "

    a

    "], + [true], + {"delete":[false,false,"",false,false,""]}], + +// Non-editable elements in editable content should be removed by hitting the +// Backspace key. Delete the non-editable things, then, blocks should be +// merged. +["

    abc

    • def

    []ghi

    ", + [["delete",""]], + ["

    abcghi

    ", + "

    abcghi

    "], + [true], + {"delete":[false,false,"",false,false,""]}], +["

    abc

    • def

    []ghi

    ", + [["delete",""]], + ["

    abcghi

    ", + "

    abcghi

    "], + [true], + {"delete":[false,false,"",false,false,""]}], +["

    abc

    • def
    • []ghi
    ", + [["delete",""]], + ["

    abcghi

    ", + "

    abcghi

    "], + [true], + {"delete":[false,false,"",false,false,""]}], +["
    • abc
    • def
    • []ghi
    ", + [["delete",""]], + ["
    • abcghi
    ", + "
    • abcghi
    "], + [true], + {"delete":[false,false,"",false,false,""]}], +["
    • abc
    • def

    []ghi

    ", + [["delete",""]], + ["
    • abcghi
    ", + "
    • abcghi
    "], + [true], + {"delete":[false,false,"",false,false,""]}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/forwarddelete.js b/tests/wpt/web-platform-tests/editing/data/forwarddelete.js index 52152327f21..323d2b81b9f 100644 --- a/tests/wpt/web-platform-tests/editing/data/forwarddelete.js +++ b/tests/wpt/web-platform-tests/editing/data/forwarddelete.js @@ -1,3 +1,5 @@ +class MyCustomElement extends HTMLElement {}; +customElements.define("custom-element", MyCustomElement); // For documentation of the format, see README in this directory. var browserTests = [ ["foo[]", @@ -2627,4 +2629,61 @@ var browserTests = [ "

    ", [true], {"forwarddelete":[false,false,"",false,false,""]}], +["

    [ab

    c]d

    ", + [["forwarddelete",""]], + ["

    d

    ", + "

    d

    "], + [true], + {"forwarddelete":[false,false,"",false,false,""]}], +["

    a[b

    cd]

    ", + [["forwarddelete",""]], + ["

    a

    ", + "

    a

    "], + [true], + {"forwarddelete":[false,false,"",false,false,""]}], +["

    [ab

    c]d

    ", + [["forwarddelete",""]], + ["

    d

    ", + "

    d

    "], + [true], + {"forwarddelete":[false,false,"",false,false,""]}], +["

    a[b

    cd]

    ", + [["forwarddelete",""]], + ["

    a

    ", + "

    a

    "], + [true], + {"forwarddelete":[false,false,"",false,false,""]}], + +// Non-editable elements in editable content should be removed by hitting the +// Delete key. Delete the non-editable things, then, blocks should be merged. +["

    abc[]

    • def

    ghi

    ", + [["forwarddelete",""]], + ["

    abcghi

    ", + "

    abcghi

    "], + [true], + {"forwarddelete":[false,false,"",false,false,""]}], +["

    abc[]

    • def

    ghi

    ", + [["forwarddelete",""]], + ["

    abcghi

    ", + "

    abcghi

    "], + [true], + {"forwarddelete":[false,false,"",false,false,""]}], +["
    • abc[]
    • def
    • ghi
    ", + [["forwarddelete",""]], + ["
    • abcghi
    ", + "
    • abcghi
    "], + [true], + {"forwarddelete":[false,false,"",false,false,""]}], +["

    abc[]

    • def
    • ghi
    ", + [["forwarddelete",""]], + ["

    abcghi

    ", + "

    abcghi

    "], + [true], + {"forwarddelete":[false,false,"",false,false,""]}], +["
    • abc[]
    • def

    ghi

    ", + [["forwarddelete",""]], + ["
    • abcghi
    ", + "
    • abcghi
    "], + [true], + {"forwarddelete":[false,false,"",false,false,""]}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/inserthtml.js b/tests/wpt/web-platform-tests/editing/data/inserthtml.js index 1f0a8f588dd..841f5493c90 100644 --- a/tests/wpt/web-platform-tests/editing/data/inserthtml.js +++ b/tests/wpt/web-platform-tests/editing/data/inserthtml.js @@ -585,4 +585,9 @@ var browserTests = [ "
    abc
    "], [true], {"inserthtml":[false,false,"",false,false,""]}], +["{}", + [["inserthtml","
    some text
    "]], + "
    some text
    ", + [true], + {"inserthtml":[false,false,"",false,false,""]}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js b/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js index b4f11ecae30..78cdbfeb328 100644 --- a/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js +++ b/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js @@ -690,4 +690,34 @@ var browserTests = [ "
    1. bar
    2. [baz]
    ", [true], {"insertorderedlist":[false,false,"false",false,true,"true"]}], +["{}", + [["insertorderedlist",""],["inserttext","abc"]], + ["
    1. abc
    ", + "
    1. abc
    "], + [true,true], + {"insertorderedlist":[false,false,"false",false,true,"true"]}], +["
    {}
    ", + [["insertorderedlist",""],["inserttext","abc"]], + ["
    1. abc
    ", + "
    1. abc
    "], + [true,true], + {"insertorderedlist":[false,false,"false",false,true,"true"]}], +["
    {}
    ", + [["insertorderedlist",""],["inserttext","abc"]], + ["
    1. abc
    ", + "
    1. abc
    "], + [true,true], + {"insertorderedlist":[false,false,"false",false,true,"true"]}], +["

    {}

    ", + [["insertorderedlist",""],["inserttext","abc"]], + ["
    1. abc
    ", + "
    1. abc
    "], + [true,true], + {"insertorderedlist":[false,false,"false",false,true,"true"]}], +["

    {}

    ", + [["insertorderedlist",""],["inserttext","abc"]], + ["
    1. abc
    ", + "
    1. abc
    "], + [true,true], + {"insertorderedlist":[false,false,"false",false,true,"true"]}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/insertparagraph.js b/tests/wpt/web-platform-tests/editing/data/insertparagraph.js index 78467816124..608b7cecceb 100644 --- a/tests/wpt/web-platform-tests/editing/data/insertparagraph.js +++ b/tests/wpt/web-platform-tests/editing/data/insertparagraph.js @@ -1930,18 +1930,8 @@ var browserTests = [ "

    abc
    "], [true,true], {"insertparagraph":[false,false,"",false,false,""]}], -["
    ab[]cd
    ", - [["defaultparagraphseparator","div"],["insertparagraph",""]], - ["
    ab
    cd
    ", - "
    ab
    cd
    "], - [true,true], - {"insertparagraph":[false,false,"",false,false,""]}], -["

    ab[]cd

    ", - [["defaultparagraphseparator","div"],["insertparagraph",""]], - ["

    ab
    cd

    ", - "

    ab
    cd

    "], - [true,true], - {"insertparagraph":[false,false,"",false,false,""]}], + +// TODO: Move the following tests into insertparagraph-or-insertlinebreak-in-inline-editing-host.tentative.html ["

    ab[]cd

    ", [["defaultparagraphseparator","div"],["insertparagraph",""]], ["

    ab
    cd

    ", @@ -2095,4 +2085,329 @@ var browserTests = [ "
    a  
      b
    "], [true,true], {"insertparagraph":[false,false,"",false,false,""]}], + +// insertparagraph with selecting all text in a
    which is the only +// block in the editing host. +// In this case, the
    should be unwrapped and a
    element should be +// put there, then, new paragraph should be created after it. +["
    [abc]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "

    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    [abc]
    ", + [["defaultparagraphseparator","p"],["insertparagraph",""]], + "


    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], + +// insertparagraph with selecting all text in a

    which is the only block in +// the editing host. +// In this case, the

    element should become empty but stay here, and new

    +// element should be created. +["

    [abc]

    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "



    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["

    [abc]

    ", + [["defaultparagraphseparator","p"],["insertparagraph",""]], + "



    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], + +// insertparagraph with selecting all text in a paragraph which is not only +// block in the editing host. +// In this case, new same element should be created rather than respecting the +// default paragraph separator, and caret should be moved to the new paragraph. +["
    abc
    [def]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "
    abc


    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    abc

    [def]

    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "
    abc



    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    abc
    [def]
    ", + [["defaultparagraphseparator","p"],["insertparagraph",""]], + "
    abc


    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    abc

    [def]

    ", + [["defaultparagraphseparator","p"],["insertparagraph",""]], + "
    abc



    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    abc
    [def]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""],["inserttext","d"]], + ["
    abc

    d
    ", + "
    abc

    d
    "], + [true,true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    abc

    [def]

    ", + [["defaultparagraphseparator","div"],["insertparagraph",""],["inserttext","d"]], + ["
    abc


    d

    ", + "
    abc


    d

    "], + [true,true,true], + {"insertparagraph":[false,false,"",false,false,""]}], + +// insertparagraph with selecting all text in a list-item which is only one of +// the list. +// In this case, the list and list-item elements should be unwrapped and create +// a new paragraph whose type conforms to the default paragraph separator. +["
    1. [abc]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "

    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    1. [abc]
    ", + [["defaultparagraphseparator","p"],["insertparagraph",""]], + "


    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    1. [abc]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""],["inserttext","d"]], + ["
    d
    ", + "
    d
    "], + [true,true,true], + {"insertparagraph":[false,false,"",false,false,""]}], + +// insertparagraph with selecting all text in a list-item which is the last +// list item in the list. +// In this case, the last list item should be deleted and new paragraph should +// be created after the list element. +["
    1. abc
    2. [def]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "
    1. abc

    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    1. abc
    2. [def]
    ", + [["defaultparagraphseparator","p"],["insertparagraph",""]], + "
    1. abc


    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    1. abc
    2. [def]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""],["inserttext","d"]], + ["
    1. abc
    d
    ", + "
    1. abc
    d
    "], + [true,true,true], + {"insertparagraph":[false,false,"",false,false,""]}], + +// insertparagraph with selecting all text in a list-item which is not a middle +// list item in the list. +// In this case, the list should be split at the list item, and new paragraph +// should be created between the list elements. +["
    1. abc
    2. [def]
    3. ghi
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "
    1. abc

    1. ghi
    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    1. abc
    2. [def]
    3. ghi
    ", + [["defaultparagraphseparator","p"],["insertparagraph",""]], + "
    1. abc


    1. ghi
    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    1. abc
    2. [def]
    3. ghi
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""],["inserttext","d"]], + ["
    1. abc
    d
    1. ghi
    ", + "
    1. abc
    d
    1. ghi
    "], + [true,true,true], + {"insertparagraph":[false,false,"",false,false,""]}], + +// insertparagraph with selecting all text in a list-item which is the first +// list item in the list. +// In this case, the first list item should be deleted and new paragraph should +// be created before the list element. +["
    1. [abc]
    2. def
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "

    1. def
    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    1. [abc]
    2. def
    ", + [["defaultparagraphseparator","p"],["insertparagraph",""]], + "


    1. def
    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    1. [abc]
    2. def
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""],["inserttext","a"]], + ["
    a
    1. def
    ", + "
    a
    1. def
    "], + [true,true,true], + {"insertparagraph":[false,false,"",false,false,""]}], + +// insertparagraph with selecting all text in a heading element. +// In this case, the heading element should become empty, but stay there, and +// a new paragraph should be created after it. +["

    [abc]

    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "



    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["

    [abc]

    ", + [["defaultparagraphseparator","p"],["insertparagraph",""]], + "



    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["

    [abc]

    ", + [["defaultparagraphseparator","div"],["insertparagraph",""],["inserttext","a"]], + ["


    a
    ", + "


    a
    "], + [true,true,true], + {"insertparagraph":[false,false,"",false,false,""]}], + +// insertparagraph with selecting all text in a heading element which is +// followed by a paragraph. +// In this case, the heading element should become empty, but stay there, and +// insert a new paragraph immediately after the heading element. +["

    [abc]

    def
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "



    def
    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["

    [abc]

    def
    ", + [["defaultparagraphseparator","p"],["insertparagraph",""]], + "



    def
    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["

    [abc]

    def

    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "



    def

    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["

    [abc]

    def

    ", + [["defaultparagraphseparator","p"],["insertparagraph",""]], + "



    def

    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], + +// Preserve inline elements at splitting the elements at end. It's out of scope +// of these tests that how to treat the
    element in the left paragraph. +["
    foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "
    foo

    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "
    foo

    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "
    foo

    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    foo

    ", + "
    foo

    ", + "
    foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    foo

    ", + "
    foo

    ", + "
    foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    foo

    ", + "
    foo

    ", + "
    foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    foo

    ", + "
    foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    foo

    ", + "
    foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    foo

    ", + "
    foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    foo

    ", + "
    foo

    ", + "
    foo

    ", + "
    foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], + +// Same things for list-item +["
    • foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "
    • foo

    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    • foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "
    • foo

    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    • foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + "
    • foo

    ", + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    • foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    • foo

    ", + "
    • foo

    ", + "
    • foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    • foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    • foo

    ", + "
    • foo

    ", + "
    • foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    • foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    • foo

    ", + "
    • foo

    ", + "
    • foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    • foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    • foo

    ", + "
    • foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    • foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    • foo

    ", + "
    • foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    • foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    • foo

    ", + "
    • foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], +["
    • foo[]
    ", + [["defaultparagraphseparator","div"],["insertparagraph",""]], + ["
    • foo

    ", + "
    • foo

    ", + "
    • foo

    ", + "
    • foo

    "], + [true,true], + {"insertparagraph":[false,false,"",false,false,""]}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/inserttext.js b/tests/wpt/web-platform-tests/editing/data/inserttext.js index 59057d03c91..ca90b9ae9ca 100644 --- a/tests/wpt/web-platform-tests/editing/data/inserttext.js +++ b/tests/wpt/web-platform-tests/editing/data/inserttext.js @@ -1374,4 +1374,10 @@ var browserTests = [ "
    a

    bc

    ", [true], {"inserttext":[false,false,"",false,false,""]}], +// https://bugzilla.mozilla.org/show_bug.cgi?id=1785801 +["
    abc{
    }efg
    ", + [["inserttext", "d"]], + "
    abcdefg
    ", + [true], + {"inserttext":[false,false,"",false,false,""]}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js b/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js index c7b6bf52e33..6a9a9021fdf 100644 --- a/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js +++ b/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js @@ -739,5 +739,35 @@ var browserTests = [ [["defaultparagraphseparator","p"],["insertunorderedlist",""]], "
      {
    • 1
    • 2
    • }
    ", [true,true], - {"defaultparagraphseparator":[false,false,"div",false,false,"p"],"insertunorderedlist":[false,false,"",false,true,""]}] + {"defaultparagraphseparator":[false,false,"div",false,false,"p"],"insertunorderedlist":[false,false,"",false,true,""]}], +["{}", + [["insertunorderedlist",""],["inserttext","abc"]], + ["
    • abc
    ", + "
    • abc
    "], + [true,true], + {"insertunorderedlist":[false,false,"false",false,true,"true"]}], +["
    {}
    ", + [["insertunorderedlist",""],["inserttext","abc"]], + ["
    • abc
    ", + "
    • abc
    "], + [true,true], + {"insertunorderedlist":[false,false,"false",false,true,"true"]}], +["
    {}
    ", + [["insertunorderedlist",""],["inserttext","abc"]], + ["
    • abc
    ", + "
    • abc
    "], + [true,true], + {"insertunorderedlist":[false,false,"false",false,true,"true"]}], +["

    {}

    ", + [["insertunorderedlist",""],["inserttext","abc"]], + ["
    • abc
    ", + "
    • abc
    "], + [true,true], + {"insertunorderedlist":[false,false,"false",false,true,"true"]}], +["

    {}

    ", + [["insertunorderedlist",""],["inserttext","abc"]], + ["
    • abc
    ", + "
    • abc
    "], + [true,true], + {"insertunorderedlist":[false,false,"false",false,true,"true"]}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/multitest.js b/tests/wpt/web-platform-tests/editing/data/multitest.js index 47e5849fece..b872b0df029 100644 --- a/tests/wpt/web-platform-tests/editing/data/multitest.js +++ b/tests/wpt/web-platform-tests/editing/data/multitest.js @@ -2417,20 +2417,20 @@ var browserTests = [ {"delete":[false,false,"",false,false,""],"inserttext":[false,false,"",false,false,""]}], ["
    [abc]
    ", [["styleWithCSS", "false"],["delete",""],["inserttext","a"]], - ["
    a
    ", - "
    a
    "], + ["a", + "a
    "], // The
    should be deleted by "delete" [true,true,true], {"bold":[false,true,"",false,true,""]}], ["
    abc[def]
    ", - [["styleWithCSS", "false"],["delete",""],["inserttext","d"]], + [["styleWithCSS","false"],["delete",""],["inserttext","d"]], ["
    abcd
    ", "
    abcd
    "], [true,true,true], {"bold":[false,true,"",false,true,""]}], ["
    [abc]
    ", [["styleWithCSS", "false"],["delete",""],["insertparagraph",""],["inserttext","a"]], - ["

    a
    ", - "

    a
    "], + ["
    a
    ", + "
    a
    "], // The
    should be deleted by "delete", but new text should be in new
    [true,true,true,true], {"bold":[false,true,"",false,true,""]}], ["
    abc[def]
    ", @@ -2443,8 +2443,8 @@ var browserTests = [ {"bold":[false,true,"",false,true,""]}], ["
    [abc]
    ", [["styleWithCSS", "false"],["insertparagraph",""],["inserttext","a"]], - ["

    a
    ", - "

    a
    "], + ["
    a
    ", + "
    a
    "], // The
    should be deleted by "insertparagraph", but new text should be in new
    [true,true,true], {"bold":[false,true,"",false,true,""]}], ["
    abc[def]
    ", @@ -2455,4 +2455,86 @@ var browserTests = [ "
    abc
    d
    "], [true,true,true], {"bold":[false,true,"",false,true,""]}], + +// Clearing style at end shouldn't leave empty inline element when there is +//
    element in inline element +["
    abc[]
    ", + [["styleWithCSS", "false"],["bold",""],["inserttext","d"]], + ["
    abcd
    ", + "
    abcd
    "], + [true,true,true], + {"bold":[false,true,"",false,false,""]}], +["
    abc[]
    ", + [["styleWithCSS", "false"],["bold",""],["inserttext","d"]], + ["
    abcd
    ", + "
    abcd
    ", + "
    abcd
    "], + [true,true,true], + {"bold":[false,true,"",false,false,""]}], +["
    abc[]
    ", + [["styleWithCSS", "false"],["bold",""],["inserttext","d"]], + ["
    abcd
    ", + "
    abcd
    "], + [true,true,true], + {"bold":[false,true,"",false,false,""]}], +["
    abc[]
    ", + [["styleWithCSS", "false"],["bold",""],["inserttext","d"]], + ["
    abcd
    ", + "
    abcd
    ", + "
    abcd
    ", + "
    abcd
    ", + "
    abcd
    ", + "
    abcd
    "], + [true,true,true], + {"bold":[false,true,"",false,false,""]}], +["
    abc[]
    ", + [["styleWithCSS", "false"],["bold",""],["inserttext","d"]], + ["
    abcd
    ", + "
    abcd
    ", + "
    abcd
    ", + "
    abcd
    ", + "
    abcd
    ", + "
    abcd
    "], + [true,true,true], + {"bold":[false,true,"",false,false,""]}], +// In this case, second line text should be keep bold style. +["
    abc[]

    ", + [["styleWithCSS", "false"],["bold",""],["inserttext","d"]], + ["
    abcd

    ", + "
    abcd

    "], + [true,true,true], + {"bold":[false,true,"",false,false,""]}], +// Tests putting caret to right paragraph at insert paragraph, and preserve +// the style. +["abc[def]ghi", + [["insertparagraph", ""],["inserttext","d"],["inserttext","e"],["inserttext","f"]], + ["
    abc
    defghi
    ", + "abc
    defghi
    "], + [true,true,true,true], + {}], +["abc[def]ghi", + [["insertparagraph", ""],["inserttext","d"],["inserttext","e"],["inserttext","f"]], + ["
    abc
    defghi
    ", + "abc
    defghi
    "], + [true,true,true,true], + {}], +["abc[def]ghi", + [["insertparagraph", ""],["inserttext","d"],["inserttext","e"],["inserttext","f"]], + ["
    abc
    defghi
    ", + "abc
    defghi
    "], + [true,true,true,true], + {}], +["abc{def}ghi", + [["insertparagraph", ""],["inserttext","d"],["inserttext","e"],["inserttext","f"]], + ["
    abc
    defghi
    ", + "abc
    defghi
    "], + [true,true,true,true], + {}], +["abc{def}ghi", + [["insertparagraph", ""],["inserttext","d"],["inserttext","e"],["inserttext","f"]], + ["
    abc
    defghi
    ", + "abc
    defghi
    "], + [true,true,true,true], + {}], + ] diff --git a/tests/wpt/web-platform-tests/editing/include/editor-test-utils.js b/tests/wpt/web-platform-tests/editing/include/editor-test-utils.js index abf89d7e9ed..8d8e778836a 100644 --- a/tests/wpt/web-platform-tests/editing/include/editor-test-utils.js +++ b/tests/wpt/web-platform-tests/editing/include/editor-test-utils.js @@ -75,6 +75,11 @@ class EditorTestUtils { return this.sendKey(kEnd, modifier); } + sendEnterKey(modifier) { + const kEnter = "\uE007"; + return this.sendKey(kEnter, modifier); + } + sendSelectAllShortcutKey() { return this.sendKey( "a", @@ -118,6 +123,9 @@ class EditorTestUtils { if (node.hasChildNodes()) { return inclusiveDeepestFirstChildNode(node); } + if (node === this.editingHost) { + return null; + } if (node.nextSibling) { return inclusiveDeepestFirstChildNode(node.nextSibling); } @@ -352,4 +360,28 @@ class EditorTestUtils { throw `Failed to set selection to the given ranges whose length is ${ranges.length}, but only ${this.selection.rangeCount} ranges are added`; } } + + // Originated from normalizeSerializedStyle in include/tests.js + normalizeStyleAttributeValues() { + for (const element of Array.from( + this.editingHost.querySelectorAll("[style]") + )) { + element.setAttribute( + "style", + element + .getAttribute("style") + // Random spacing differences + .replace(/; ?$/, "") + .replace(/: /g, ":") + // Gecko likes "transparent" + .replace(/transparent/g, "rgba(0, 0, 0, 0)") + // WebKit likes to look overly precise + .replace(/, 0.496094\)/g, ", 0.5)") + // Gecko converts anything with full alpha to "transparent" which + // then becomes "rgba(0, 0, 0, 0)", so we have to make other + // browsers match + .replace(/rgba\([0-9]+, [0-9]+, [0-9]+, 0\)/g, "rgba(0, 0, 0, 0)") + ); + } + } } diff --git a/tests/wpt/web-platform-tests/editing/other/cloning-attributes-at-splitting-element.tentative.html b/tests/wpt/web-platform-tests/editing/other/cloning-attributes-at-splitting-element.tentative.html new file mode 100644 index 00000000000..3c0b1c9344e --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/cloning-attributes-at-splitting-element.tentative.html @@ -0,0 +1,522 @@ + + + +Cloning attributes at splitting an element in contenteditable + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/editing/other/delete-in-child-of-head.tentative.html b/tests/wpt/web-platform-tests/editing/other/delete-in-child-of-head.tentative.html new file mode 100644 index 00000000000..978cf83d47a --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/delete-in-child-of-head.tentative.html @@ -0,0 +1,418 @@ + + + + + + + + + +Join paragraphs in the head element + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/editing/other/delete-in-child-of-html.tentative.html b/tests/wpt/web-platform-tests/editing/other/delete-in-child-of-html.tentative.html new file mode 100644 index 00000000000..4ae5446d1b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/delete-in-child-of-html.tentative.html @@ -0,0 +1,449 @@ + + + + + + + + + +Join paragraphs outside the body + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/editing/other/formatblock-preserving-selection.tentative.html b/tests/wpt/web-platform-tests/editing/other/formatblock-preserving-selection.tentative.html new file mode 100644 index 00000000000..d10e80b4ea6 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/formatblock-preserving-selection.tentative.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + +Test preserving selection after formatBlock + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/editing/other/indent-preserving-selection.tentative.html b/tests/wpt/web-platform-tests/editing/other/indent-preserving-selection.tentative.html new file mode 100644 index 00000000000..b3fae41faf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/indent-preserving-selection.tentative.html @@ -0,0 +1,103 @@ + + + + + + + +Test preserving selection after indent + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/editing/other/insert-list-preserving-selection.tentative.html b/tests/wpt/web-platform-tests/editing/other/insert-list-preserving-selection.tentative.html new file mode 100644 index 00000000000..b7faf4f27ae --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/insert-list-preserving-selection.tentative.html @@ -0,0 +1,155 @@ + + + + + + + + + +Test preserving selection after insert*List + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-child-of-head.tentative.html b/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-child-of-head.tentative.html new file mode 100644 index 00000000000..2ee8a4b33b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-child-of-head.tentative.html @@ -0,0 +1,367 @@ + + + + + + + + + + + + + +Insert paragraph in a block element in the head element + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-child-of-html.tentative.html b/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-child-of-html.tentative.html new file mode 100644 index 00000000000..a82da32df17 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-child-of-html.tentative.html @@ -0,0 +1,344 @@ + + + + + + + + + + + + +Insert paragraph in a child of the html element + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-inline-editing-host.tentative.html b/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-inline-editing-host.tentative.html new file mode 100644 index 00000000000..0df107c0804 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-inline-editing-host.tentative.html @@ -0,0 +1,416 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Line breaking in inline editing host + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-non-splittable-element.html b/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-non-splittable-element.html new file mode 100644 index 00000000000..21aa495bd67 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/insertparagraph-in-non-splittable-element.html @@ -0,0 +1,145 @@ + + + +Test for inserting paragraph in non-splittable elements + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/editing/other/join-different-white-space-style-left-line-and-right-paragraph.html b/tests/wpt/web-platform-tests/editing/other/join-different-white-space-style-left-line-and-right-paragraph.html new file mode 100644 index 00000000000..48fa5811152 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/join-different-white-space-style-left-line-and-right-paragraph.html @@ -0,0 +1,899 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Tests for joining first line of right paragraph with its preceding line + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/editing/other/join-different-white-space-style-left-paragraph-and-right-line.html b/tests/wpt/web-platform-tests/editing/other/join-different-white-space-style-left-paragraph-and-right-line.html new file mode 100644 index 00000000000..b55cacc44ba --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/join-different-white-space-style-left-paragraph-and-right-line.html @@ -0,0 +1,493 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Tests for joining left paragraph and its following line + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/editing/other/join-different-white-space-style-paragraphs.html b/tests/wpt/web-platform-tests/editing/other/join-different-white-space-style-paragraphs.html new file mode 100644 index 00000000000..605f2a4483b --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/join-different-white-space-style-paragraphs.html @@ -0,0 +1,499 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Tests for joining paragraphs which have different white-space styles + + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/editing/other/join-pre-and-other-block.html b/tests/wpt/web-platform-tests/editing/other/join-pre-and-other-block.html new file mode 100644 index 00000000000..39e455a8484 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/join-pre-and-other-block.html @@ -0,0 +1,329 @@ + + + + + + + + + + + + + +Tests for joining pre and other block element + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/editing/other/justify-preserving-selection.tentative.html b/tests/wpt/web-platform-tests/editing/other/justify-preserving-selection.tentative.html new file mode 100644 index 00000000000..94a63e8505b --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/justify-preserving-selection.tentative.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + +Test preserving selection after justifying selected content + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/editing/other/keeping-attributes-at-joining-elements.tentative.html b/tests/wpt/web-platform-tests/editing/other/keeping-attributes-at-joining-elements.tentative.html new file mode 100644 index 00000000000..99a0dab56ab --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/keeping-attributes-at-joining-elements.tentative.html @@ -0,0 +1,1167 @@ + + + + + +Not merging attributes at joining elements in contenteditable + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/editing/other/outdent-preserving-selection.tentative.html b/tests/wpt/web-platform-tests/editing/other/outdent-preserving-selection.tentative.html new file mode 100644 index 00000000000..9f299bda493 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/outdent-preserving-selection.tentative.html @@ -0,0 +1,192 @@ + + + + + + + +Test preserving selection after outdent + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/editing/other/selectall-in-editinghost.html b/tests/wpt/web-platform-tests/editing/other/selectall-in-editinghost.html new file mode 100644 index 00000000000..680817a7714 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/selectall-in-editinghost.html @@ -0,0 +1,125 @@ + + + + +Select All in focused editor + + + + + +

    preceding text

    +
    editable text
    +

    following text

    + + diff --git a/tests/wpt/web-platform-tests/editing/other/selectall-without-focus.html b/tests/wpt/web-platform-tests/editing/other/selectall-without-focus.html new file mode 100644 index 00000000000..508fdc47a2f --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/selectall-without-focus.html @@ -0,0 +1,73 @@ + + + +Select All without focus should select not select only in the editing host + + + + +

    preceding text

    +
    editable text diff --git a/tests/wpt/web-platform-tests/editing/other/undo-insertparagraph-after-moving-split-nodes.html b/tests/wpt/web-platform-tests/editing/other/undo-insertparagraph-after-moving-split-nodes.html new file mode 100644 index 00000000000..c61bcff9e92 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/undo-insertparagraph-after-moving-split-nodes.html @@ -0,0 +1,109 @@ + + + + + +Undo after splitting nodes are moved + + + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/encoding/encodeInto.any.js.headers b/tests/wpt/web-platform-tests/encoding/encodeInto.any.js.headers new file mode 100644 index 00000000000..4fff9d9fba4 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding/encodeInto.any.js.headers @@ -0,0 +1,2 @@ +Cross-Origin-Opener-Policy: same-origin +Cross-Origin-Embedder-Policy: require-corp \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encoding/idlharness-shadowrealm.window.js b/tests/wpt/web-platform-tests/encoding/idlharness-shadowrealm.window.js new file mode 100644 index 00000000000..baf3efcbb02 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding/idlharness-shadowrealm.window.js @@ -0,0 +1,2 @@ +// META: script=/resources/idlharness-shadowrealm.js +idl_test_shadowrealm(["encoding"], ["streams"]); diff --git a/tests/wpt/web-platform-tests/encoding/streams/decode-utf8.any.js.headers b/tests/wpt/web-platform-tests/encoding/streams/decode-utf8.any.js.headers new file mode 100644 index 00000000000..4fff9d9fba4 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding/streams/decode-utf8.any.js.headers @@ -0,0 +1,2 @@ +Cross-Origin-Opener-Policy: same-origin +Cross-Origin-Embedder-Policy: require-corp \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encoding/textdecoder-copy.any.js.headers b/tests/wpt/web-platform-tests/encoding/textdecoder-copy.any.js.headers new file mode 100644 index 00000000000..4fff9d9fba4 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding/textdecoder-copy.any.js.headers @@ -0,0 +1,2 @@ +Cross-Origin-Opener-Policy: same-origin +Cross-Origin-Embedder-Policy: require-corp \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encoding/textdecoder-streaming.any.js.headers b/tests/wpt/web-platform-tests/encoding/textdecoder-streaming.any.js.headers new file mode 100644 index 00000000000..4fff9d9fba4 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding/textdecoder-streaming.any.js.headers @@ -0,0 +1,2 @@ +Cross-Origin-Opener-Policy: same-origin +Cross-Origin-Embedder-Policy: require-corp \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encoding/unsupported-labels.window.js b/tests/wpt/web-platform-tests/encoding/unsupported-labels.window.js new file mode 100644 index 00000000000..1668a36f234 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding/unsupported-labels.window.js @@ -0,0 +1,178 @@ +// This list was inspired by these sources: +// - https://annevankesteren.nl/2010/8-bit-labels +// - http://l0.cm/encodings/table/ + +[ + "437", + "adobe-standard-encoding", + "armscii-8", + "bocu-1", + "cesu-8", + "cp1025", + "cp437", + "cp737", + "cp851", + "cp858", + "cp862", + "cp864", + "cp869", + "cp875", + "cp950", + "csiso103t618bit", + "csiso111ecmacyrillic", + "cspc8codepage437", + "csviscii", + "dos-720", + "dos-862", + "ecma-cyrillic", + "euc-tw", + "german", + "geostd8", + "hp-roman8", + "ibm-thai", + "ibm00858", + "ibm00924", + "ibm01047", + "ibm01140", + "ibm01141", + "ibm01142", + "ibm01143", + "ibm01144", + "ibm01145", + "ibm01146", + "ibm01147", + "ibm01148", + "ibm01149", + "ibm037", + "ibm1026", + "ibm1047", + "ibm273", + "ibm277", + "ibm278", + "ibm280", + "ibm284", + "ibm285", + "ibm290", + "ibm297", + "ibm367", + "ibm420", + "ibm423", + "ibm424", + "ibm437", + "ibm500", + "ibm737", + "ibm775", + "ibm850", + "ibm852", + "ibm855", + "ibm857", + "ibm860", + "ibm861", + "ibm862", + "ibm863", + "ibm864", + "ibm864i", + "ibm865", + "ibm868", + "ibm869", + "ibm870", + "ibm871", + "ibm880", + "ibm905", + "ibm918", + "iso-2022-jp-1", + "iso-2022-jp-2", + "iso-2022-jp-3", + "iso-8859-8 visual", + "jis_c6226-1978", + "jis_x0208-1983", + "jis_x0208-1990", + "jis_x0212-1990", + "johab", + "latin9", + "norwegian", + "sami-ws2", + "scsu", + "shift_jis_x0213-2000", + "swedish", + "tcvn", + "tis-620-2533", + "utf-7", + "utf-32", + "viscii", + "windows-936-2000", + "windows-sami-2", + "ws2", + "x-chinese-cns", + "x-chinese-eten", + "x-cp20001", + "x-cp20003", + "x-cp20004", + "x-cp20005", + "x-cp20261", + "x-cp20269", + "x-cp20936", + "x-cp20949", + "x-cp21027", + "x-cp50227", + "x-cp50229", + "x-ebcdic-koreanextended", + "x-europa", + "x-ia5", + "x-ia5-german", + "x-ia5-norwegian", + "x-ia5-swedish", + "x-iscii-as", + "x-iscii-be", + "x-iscii-de", + "x-iscii-gu", + "x-iscii-ka", + "x-iscii-ma", + "x-iscii-or", + "x-iscii-pa", + "x-iscii-t", + "x-iscii-ta", + "x-iscii-te", + "x-mac-arabic", + "x-mac-ce", + "x-mac-centraleurroman", + "x-mac-chinesesimp", + "x-mac-chinesetrad", + "x-mac-croatian", + "x-mac-devanagari", + "x-mac-dingbats", + "x-mac-farsi", + "x-mac-greek", + "x-mac-gujarati", + "x-mac-gurmukhi", + "x-mac-hebrew", + "x-mac-icelandic", + "x-mac-japanese", + "x-mac-korean", + "x-mac-roman-latin1", + "x-mac-romanian", + "x-mac-symbol", + "x-mac-thai", + "x-mac-tibetan", + "x-mac-turkish", + "x-mac-vt100", + "x-nextstep", + "x-vps", + "_autodetect", + "_autodetect_all", + "_autodetect_kr" +].forEach(label => { + async_test(t => { + const frame = document.createElement("iframe"); + t.add_cleanup(() => { + frame.remove(); + }); + frame.src = "resources/text-plain-charset.py?label=" + label; + frame.onload = t.step_func_done(() => { + // If we ever change this default this needs adjusting accordingly. + assert_equals(frame.contentDocument.characterSet, "windows-1252"); + assert_equals(frame.contentDocument.inputEncoding, "windows-1252"); + }); + document.body.append(frame); + }, `${label} is not supported by the Encoding Standard`); +}); diff --git a/tests/wpt/web-platform-tests/entries-api/README.md b/tests/wpt/web-platform-tests/entries-api/README.md index 2f54d8bf891..7c08ba837ba 100644 --- a/tests/wpt/web-platform-tests/entries-api/README.md +++ b/tests/wpt/web-platform-tests/entries-api/README.md @@ -5,5 +5,5 @@ Tests for the [Files and Directory Entries API](https://github.com/wicg/entries- Unfortunately, most of the tests are **manual** and require drag-and-drop of test data files, which can be found in the `entries-api/support` directory. The tests -can be run via [w3c-test.org](http://w3c-test.org/entries-api/), but a local clone +can be run via [wpt.live](http://wpt.live/entries-api/), but a local clone of the repo is required for access to the test data files. diff --git a/tests/wpt/web-platform-tests/event-timing/click-interactionid.html b/tests/wpt/web-platform-tests/event-timing/click-interactionid.html deleted file mode 100644 index 3f1cd3725b5..00000000000 --- a/tests/wpt/web-platform-tests/event-timing/click-interactionid.html +++ /dev/null @@ -1,50 +0,0 @@ - - - -Event Timing: interactionId. - - - - - - - - diff --git a/tests/wpt/web-platform-tests/event-timing/duration-with-target-low.html b/tests/wpt/web-platform-tests/event-timing/duration-with-target-low.html new file mode 100644 index 00000000000..11a8c3ae47a --- /dev/null +++ b/tests/wpt/web-platform-tests/event-timing/duration-with-target-low.html @@ -0,0 +1,16 @@ + + + +Event Timing: PerformanceObserver with a durationThreshold way smaller than processingDelay + + + + + +
    Click me
    + + diff --git a/tests/wpt/web-platform-tests/event-timing/first-input-interactionid-click.html b/tests/wpt/web-platform-tests/event-timing/first-input-interactionid-click.html new file mode 100644 index 00000000000..bcd4079256d --- /dev/null +++ b/tests/wpt/web-platform-tests/event-timing/first-input-interactionid-click.html @@ -0,0 +1,51 @@ + + + +First Input: interactionId-click. + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/event-timing/first-input-interactionid-tap.html b/tests/wpt/web-platform-tests/event-timing/first-input-interactionid-tap.html new file mode 100644 index 00000000000..f5e080eb165 --- /dev/null +++ b/tests/wpt/web-platform-tests/event-timing/first-input-interactionid-tap.html @@ -0,0 +1,52 @@ + + + +First Input: interactionId-tap. + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/event-timing/idlharness.any.js b/tests/wpt/web-platform-tests/event-timing/idlharness.any.js index 5ee98548fb6..b1b57a4bb17 100644 --- a/tests/wpt/web-platform-tests/event-timing/idlharness.any.js +++ b/tests/wpt/web-platform-tests/event-timing/idlharness.any.js @@ -12,6 +12,8 @@ idl_test( idl_array => { idl_array.add_objects({ Performance: ['performance'], + EventCounts: ['performance.eventCounts'], + InteractionCounts: ['performance.interactionCounts'], // PerformanceEventTiming: [ TODO ] }); } diff --git a/tests/wpt/web-platform-tests/event-timing/interactionid-click.html b/tests/wpt/web-platform-tests/event-timing/interactionid-click.html new file mode 100644 index 00000000000..1506e31e1d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/event-timing/interactionid-click.html @@ -0,0 +1,42 @@ + + + +Event Timing: interactionId-click. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/event-timing/interactionid-press-key-as-input.html b/tests/wpt/web-platform-tests/event-timing/interactionid-press-key-as-input.html new file mode 100644 index 00000000000..b1e725b5c6f --- /dev/null +++ b/tests/wpt/web-platform-tests/event-timing/interactionid-press-key-as-input.html @@ -0,0 +1,38 @@ + + + + +Event Timing: interactionId-press-key-as-input. + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/event-timing/interactionid-press-key-no-effect.html b/tests/wpt/web-platform-tests/event-timing/interactionid-press-key-no-effect.html new file mode 100644 index 00000000000..ad4dc2595cb --- /dev/null +++ b/tests/wpt/web-platform-tests/event-timing/interactionid-press-key-no-effect.html @@ -0,0 +1,43 @@ + + + + +Event Timing: interactionId-press-key-no-effect. + + + + + + + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tempus + lacinia nisi, eget tempor orci. Nullam congue pharetra arcu, et consectetur + massa mollis tincidunt. Quisque odio sapien, viverra finibus lectus ac, + consectetur ornare quam. In hac habitasse platea dictumst. Morbi cursus est + odio, non fermentum ligula posuere vitae. Sed ullamcorper convallis rhoncus. + In condimentum neque nec metus hendrerit, et cursus ipsum aliquet. +

    + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/event-timing/interactionid-tap.html b/tests/wpt/web-platform-tests/event-timing/interactionid-tap.html new file mode 100644 index 00000000000..65453690886 --- /dev/null +++ b/tests/wpt/web-platform-tests/event-timing/interactionid-tap.html @@ -0,0 +1,31 @@ + + + +Event Timing: interactionId-tap. + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/event-timing/keydown.html b/tests/wpt/web-platform-tests/event-timing/keydown.html new file mode 100644 index 00000000000..fd814e12b49 --- /dev/null +++ b/tests/wpt/web-platform-tests/event-timing/keydown.html @@ -0,0 +1,17 @@ + + + +Event Timing Keydown. + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/event-timing/keyup.html b/tests/wpt/web-platform-tests/event-timing/keyup.html new file mode 100644 index 00000000000..0ec3670de01 --- /dev/null +++ b/tests/wpt/web-platform-tests/event-timing/keyup.html @@ -0,0 +1,17 @@ + + + +Event Timing Keyup. + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/event-timing/large-duration-threshold.html b/tests/wpt/web-platform-tests/event-timing/large-duration-threshold.html index 5665d42d334..4eed8d97565 100644 --- a/tests/wpt/web-platform-tests/event-timing/large-duration-threshold.html +++ b/tests/wpt/web-platform-tests/event-timing/large-duration-threshold.html @@ -10,7 +10,7 @@
    Click me
    diff --git a/tests/wpt/web-platform-tests/event-timing/medium-duration-threshold.html b/tests/wpt/web-platform-tests/event-timing/medium-duration-threshold.html index a827f2211b1..a2f79cf6feb 100644 --- a/tests/wpt/web-platform-tests/event-timing/medium-duration-threshold.html +++ b/tests/wpt/web-platform-tests/event-timing/medium-duration-threshold.html @@ -10,7 +10,7 @@
    Click me
    diff --git a/tests/wpt/web-platform-tests/event-timing/min-duration-threshold.html b/tests/wpt/web-platform-tests/event-timing/min-duration-threshold.html index 443b38a2783..b7382f94579 100644 --- a/tests/wpt/web-platform-tests/event-timing/min-duration-threshold.html +++ b/tests/wpt/web-platform-tests/event-timing/min-duration-threshold.html @@ -10,7 +10,7 @@
    Click me
    diff --git a/tests/wpt/web-platform-tests/event-timing/resources/event-timing-test-utils.js b/tests/wpt/web-platform-tests/event-timing/resources/event-timing-test-utils.js index 32ff2b23c02..fc4d1aee726 100644 --- a/tests/wpt/web-platform-tests/event-timing/resources/event-timing-test-utils.js +++ b/tests/wpt/web-platform-tests/event-timing/resources/event-timing-test-utils.js @@ -5,10 +5,12 @@ async function clickOnElementAndDelay(id, delay, callback) { const element = document.getElementById(id); const clickHandler = () => { mainThreadBusy(delay); - if (callback) + if (callback) { callback(); + } element.removeEventListener("pointerdown", clickHandler); }; + element.addEventListener("pointerdown", clickHandler); await test_driver.click(element); } @@ -81,17 +83,15 @@ function waitForTick() { // attempt to check that the duration is appropriately checked by: // * Asserting that entries received have a duration which is the smallest multiple of 8 // that is greater than or equal to |dur|. - // * Issuing |numEntries| entries that are fast, of duration |slowDur|. - // * Issuing |numEntries| entries that are slow, of duration |fastDur|. - // * Asserting that at least |numEntries| entries are received (at least the slow ones). + // * Issuing |numEntries| entries that has duration greater than |slowDur|. + // * Asserting that exactly |numEntries| entries are received. // Parameters: // |t| - the test harness. // |dur| - the durationThreshold for the PerformanceObserver. // |id| - the ID of the element to be clicked. - // |numEntries| - the number of slow and number of fast entries. + // |numEntries| - the number of entries. // |slowDur| - the min duration of a slow entry. - // |fastDur| - the min duration of a fast entry. -async function testDuration(t, id, numEntries, dur, fastDur, slowDur) { +async function testDuration(t, id, numEntries, dur, slowDur) { assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.'); const observerPromise = new Promise(async resolve => { let minDuration = Math.ceil(dur / 8) * 8; @@ -106,29 +106,62 @@ async function testDuration(t, id, numEntries, dur, fastDur, slowDur) { }); }); numEntriesReceived += pointerDowns.length; - // Note that we may receive more entries if the 'fast' click events turn out slower - // than expected. - if (numEntriesReceived >= numEntries) + // All the entries should be received since the slowDur is higher + // than the duration threshold. + if (numEntriesReceived === numEntries) resolve(); }).observe({type: "event", durationThreshold: dur}); }); const clicksPromise = new Promise(async resolve => { for (let index = 0; index < numEntries; index++) { - // Add some fast click events. + // Add some click events that has at least slowDur for duration. await clickOnElementAndDelay(id, slowDur); - // Add some slow click events. - if (fastDur > 0) { - await clickOnElementAndDelay(id, fastDur); - } else { - // We can just directly call test_driver when |fastDur| is 0. - await test_driver.click(document.getElementById(id)); - } } resolve(); }); return Promise.all([observerPromise, clicksPromise]); } + // Add a PerformanceObserver and observe with a durationThreshold of |durThreshold|. This test will + // attempt to check that the duration is appropriately checked by: + // * Asserting that entries received have a duration which is the smallest multiple of 8 + // that is greater than or equal to |durThreshold|. + // * Issuing |numEntries| entries that have at least |processingDelay| as duration. + // * Asserting that the entries we receive has duration greater than or equals to the + // duration threshold we setup + // Parameters: + // |t| - the test harness. + // |id| - the ID of the element to be clicked. + // |durThreshold| - the durationThreshold for the PerformanceObserver. + // |numEntries| - the number of slow and number of fast entries. + // |processingDelay| - the event duration we add on each event. + async function testDurationWithDurationThreshold(t, id, numEntries, durThreshold, processingDelay) { + assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.'); + const observerPromise = new Promise(async resolve => { + let minDuration = Math.ceil(durThreshold / 8) * 8; + // Exposed events must always have a minimum duration of 16. + minDuration = Math.max(minDuration, 16); + new PerformanceObserver(t.step_func(list => { + const pointerDowns = list.getEntriesByName('pointerdown'); + pointerDowns.forEach(p => { + assert_greater_than_equal(p.duration, minDuration, + "The entry's duration should be greater than or equal to " + minDuration + " ms."); + }); + resolve(); + })).observe({type: "event", durationThreshold: durThreshold}); + }); + for (let index = 0; index < numEntries; index++) { + // These clicks are expected to be ignored, unless the test has some extra delays. + // In that case, the test will verify the event duration to ensure the event duration is + // greater than the duration threshold + await clickOnElementAndDelay(id, processingDelay); + } + // Send click with event duration equals to or greater than |durThreshold|, so the + // observer promise can be resolved + await clickOnElementAndDelay(id, durThreshold); + return observerPromise; + } + // Apply events that trigger an event of the given |eventType| to be dispatched to the // |target|. Some of these assume that the target is not on the top left corner of the // screen, which means that (0, 0) of the viewport is outside of the |target|. @@ -168,6 +201,13 @@ function applyAction(eventType, target) { || eventType === 'pointerleave' || eventType === 'pointerout') { actions.pointerMove(0, 0, {origin: target}) .pointerMove(0, 0); + } else if (eventType === 'keyup' || eventType === 'keydown') { + // Any key here as an input should work. + // TODO: Switch this to use test_driver.Actions.key{up,down} + // when test driver supports it. + // Please check crbug.com/893480. + const key = 'k'; + return test_driver.send_keys(target, key); } else { assert_unreached('The event type ' + eventType + ' is not supported.'); } @@ -182,7 +222,9 @@ function requiresListener(eventType) { 'pointerleave', 'pointerout', 'pointerover', - 'pointerup' + 'pointerup', + 'keyup', + 'keydown' ].includes(eventType); } @@ -275,3 +317,81 @@ async function testEventType(t, eventType, looseCount=false) { await observerPromise; } + +function addListeners(element, events) { + const clickHandler = (e) => { + mainThreadBusy(200); + }; + events.forEach(e => { element.addEventListener(e, clickHandler); }); +} + +// The testdriver.js, testdriver-vendor.js and testdriver-actions.js need to be +// included to use this function. +function tap(element) { + return new test_driver.Actions() + .addPointer("touchPointer", "touch") + .pointerMove(0, 0, { origin: element }) + .pointerDown() + .pointerUp() + .send(); +} + +// The testdriver.js, testdriver-vendor.js need to be included to use this +// function. +async function pressKey(element, key) { + await test_driver.send_keys(element, key); +} + +// The testdriver.js, testdriver-vendor.js need to be included to use this +// function. +async function addListenersAndPress(element, key, events) { + addListeners(element, events); + return pressKey(element, key); +} + +// The testdriver.js, testdriver-vendor.js need to be included to use this +// function. +function addListenersAndClick(element) { + addListeners(element, ['mousedown', 'mouseup', 'pointerdown', 'pointerup', 'click']); + return test_driver.click(element); +} + +function filterAndAddToMap(events, map) { + return function (entry) { + if (events.includes(entry.name)) { + map.set(entry.name, entry.interactionId); + return true; + } + return false; + } +} + +function createPerformanceObserverPromise(observeTypes, callback, readyToResolve) { + return new Promise(resolve => { + new PerformanceObserver(entryList => { + callback(entryList); + + if (readyToResolve()) + resolve(); + }).observe({ entryTypes: observeTypes }); + }); +} + +// The testdriver.js, testdriver-vendor.js need to be included to use this +// function. +function interactAndObserve(interactionType, element, observerPromise) { + let interactionPromise; + switch (interactionType) { + case 'tap': { + addListeners(element, ['pointerdown', 'pointerup']); + interactionPromise = tap(element); + break; + } + case 'click': { + addListeners(element, ['mousedown', 'mouseup', 'pointerdown', 'pointerup', 'click']); + interactionPromise = test_driver.click(element); + break; + } + } + return Promise.all([interactionPromise, observerPromise]); +} diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html index bfbdd6a20c9..a036859451e 100644 --- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html @@ -28,22 +28,34 @@ // Test that fullscreen is not allowed on cross-origin subframes without an // allow attribute. test_disallowed_feature_for_subframe( - header_policy + ' -- test fullscreen is allowed on cross-origin subframe', + header_policy + ' -- test fullscreen is disallowed on cross-origin subframe', 'fullscreen', cross_origin_src); - // Dynamically update sub frame's container policy + // Dynamically update sub frame's container policy to self var allow = "fullscreen 'self';" test_allowed_feature_for_subframe( header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is allowed on same-origin subframe', 'fullscreen', same_origin_src, allow); - test_disallowed_feature_for_subframe( header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on cross-origin subframe', 'fullscreen', cross_origin_src, allow); + + // Dynamically update sub frame's container policy to src + var allow = "fullscreen 'src';" + test_allowed_feature_for_subframe( + header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is allowed on same-origin subframe', + 'fullscreen', + same_origin_src, + allow); + test_allowed_feature_for_subframe( + header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is allowed on cross-origin subframe', + 'fullscreen', + cross_origin_src, + allow); diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-self.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-self.https.sub.html index 8641746ec8f..b6fbdd2cc24 100644 --- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-self.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-self.https.sub.html @@ -36,11 +36,10 @@ 'fullscreen', same_origin_src, allow); - - test_allowed_feature_for_subframe( - header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is allowed on cross-origin subframe', + test_disallowed_feature_for_subframe( + header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on cross-origin subframe', 'fullscreen', - same_origin_src, + cross_origin_src, allow); diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-some.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-some.https.sub.html index d89ccef5c90..5eda8baa084 100644 --- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-some.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-allowed-for-some.https.sub.html @@ -8,8 +8,10 @@ 'use strict'; var same_origin = 'https://{{domains[]}}:{{ports[https][0]}}'; var cross_origin = 'https://{{domains[www]}}:{{ports[https][0]}}'; + var cross_origin1 = 'https://{{domains[www1]}}:{{ports[https][0]}}'; var same_origin_src = '/feature-policy/resources/feature-policy-allowedfeatures.html'; var cross_origin_src = cross_origin + same_origin_src; + var cross_origin_src1 = cross_origin1 + same_origin_src; var header_policy = 'Feature-Policy: fullscreen \'self\' ' + cross_origin + ' https://www.example.com;'; @@ -27,27 +29,48 @@ 'fullscreen', same_origin_src); test_disallowed_feature_for_subframe( - header_policy + ' -- test fullscreen is allowed on cross-origin ' + cross_origin_src + ' subframe', + header_policy + ' -- test fullscreen is disallowed on cross-origin ' + cross_origin_src + ' subframe', 'fullscreen', cross_origin_src); - var cross_origin_src1 = 'https://{{domains[www1]}}:{{ports[https][0]}}' + same_origin_src; test_disallowed_feature_for_subframe( header_policy + ' -- test fullscreen is disallowed on cross-origin ' + cross_origin_src1 + ' subframe', 'fullscreen', cross_origin_src1); - // dynamically update sub frame's container policy + // dynamically update sub frame's container policy to none var allow = "fullscreen 'none';" test_disallowed_feature_for_subframe( header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on same-origin subframe', 'fullscreen', same_origin_src, allow); - test_disallowed_feature_for_subframe( header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is disallowed on cross-origin subframe', 'fullscreen', cross_origin_src, allow); + test_disallowed_feature_for_subframe( + header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is disallowed on another cross-origin subframe', + 'fullscreen', + cross_origin_src1, + allow); + + // dynamically update sub frame's container policy to src + var allow = "fullscreen 'src';" + test_allowed_feature_for_subframe( + header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is allowed on same-origin subframe', + 'fullscreen', + same_origin_src, + allow); + test_allowed_feature_for_subframe( + header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is allowed on cross-origin subframe', + 'fullscreen', + cross_origin_src, + allow); + test_disallowed_feature_for_subframe( + header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is disallowed on another cross-origin subframe', + 'fullscreen', + cross_origin_src1, + allow); diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-declined.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-declined.https.sub.html index ebe09ec9873..17378e3e13f 100644 --- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-declined.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-declined.https.sub.html @@ -8,8 +8,10 @@ 'use strict'; var same_origin = 'https://{{domains[]}}:{{ports[https][0]}}'; var cross_origin = 'https://{{domains[www]}}:{{ports[https][0]}}'; + var cross_origin1 = 'https://{{domains[www1]}}:{{ports[https][0]}}'; var same_origin_src = '/feature-policy/resources/feature-policy-allowedfeatures.html'; var cross_origin_src = cross_origin + same_origin_src; + var cross_origin_src1 = cross_origin1 + same_origin_src; var header_policy = 'Feature-Policy: fullscreen \'self\' ' + cross_origin + ' https://www.example.com;'; @@ -22,45 +24,52 @@ // Test that fullscreen is disallowed everywhere. test_disallowed_feature_for_subframe( - header_policy + ' -- test fullscreen is allowed on same-origin subframe', + header_policy + ' -- test fullscreen is disallowed on same-origin subframe', 'fullscreen', same_origin_src); test_disallowed_feature_for_subframe( - header_policy + ' -- test fullscreen is allowed on cross-origin ' + cross_origin_src + ' subframe', + header_policy + ' -- test fullscreen is disallowed on cross-origin ' + cross_origin_src + ' subframe', 'fullscreen', cross_origin_src); - var cross_origin_src1 = 'https://{{domains[www1]}}:{{ports[https][0]}}' + same_origin_src; test_disallowed_feature_for_subframe( header_policy + ' -- test fullscreen is disallowed on cross-origin ' + cross_origin_src1 + ' subframe', 'fullscreen', cross_origin_src1); - // dynamically update sub frame's container policy; fullscreen will still not - // be allowed. + // dynamically update sub frame's container policy to none var disallow = "fullscreen 'none';" test_disallowed_feature_for_subframe( header_policy + ', iframe.allow = ' + disallow + ' -- test fullscreen is disallowed on same-origin subframe', 'fullscreen', same_origin_src, disallow); - test_disallowed_feature_for_subframe( - header_policy + 'iframe.allow = ' + disallow + ' -- test fullscreen is allowed on specific cross-origin subframe', + header_policy + 'iframe.allow = ' + disallow + ' -- test fullscreen is disallowed on specific cross-origin subframe', 'fullscreen', cross_origin_src, disallow); + test_disallowed_feature_for_subframe( + header_policy + 'iframe.allow = ' + disallow + ' -- test fullscreen is disallowed on another cross-origin subframe', + 'fullscreen', + cross_origin_src1, + disallow); + // dynamically update sub frame's container policy to cross_origin var allow = "fullscreen " + cross_origin; test_disallowed_feature_for_subframe( header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on same-origin subframe', 'fullscreen', same_origin_src, allow); - test_disallowed_feature_for_subframe( - header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is allowed on specific cross-origin subframe', + header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is disallowed on specific cross-origin subframe', 'fullscreen', cross_origin_src, allow); + test_disallowed_feature_for_subframe( + header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is disallowed on another cross-origin subframe', + 'fullscreen', + cross_origin_src1, + allow); diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-disallowed-for-all.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-disallowed-for-all.https.sub.html index 971af0fa070..936f2619378 100644 --- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-disallowed-for-all.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-header-policy-disallowed-for-all.https.sub.html @@ -37,7 +37,6 @@ 'fullscreen', same_origin_src, allow); - test_disallowed_feature_for_subframe( header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on cross-origin subframe', 'fullscreen', diff --git a/tests/wpt/web-platform-tests/feature-policy/permissions-policy-header-policy-allowed-for-self.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/permissions-policy-header-policy-allowed-for-self.https.sub.html index 5c4c6568f2f..32df2b71c32 100644 --- a/tests/wpt/web-platform-tests/feature-policy/permissions-policy-header-policy-allowed-for-self.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/permissions-policy-header-policy-allowed-for-self.https.sub.html @@ -36,11 +36,10 @@ 'fullscreen', same_origin_src, allow); - - test_allowed_feature_for_subframe( - header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is allowed on cross-origin subframe', + test_disallowed_feature_for_subframe( + header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on cross-origin subframe', 'fullscreen', - same_origin_src, + cross_origin_src, allow); diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html index fcd0156a3c6..3c04db864d5 100644 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html +++ b/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html @@ -27,7 +27,7 @@ new ReportingObserver(t.step_func_done(check_report_format), t.step_func(() => { assert_throws_dom('SecurityError', () => new PaymentRequest( - [{ supportedMethods: 'basic-card' }], + [{ supportedMethods: 'https://example.com/pay' }], { total: { label: 'Total', amount: { currency: 'USD', value: 0 }}}, {}).show(), "PaymentRequest API should not be allowed in this document."); diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/screen-wake-lock-reporting.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/screen-wake-lock-reporting.https.html.headers deleted file mode 100644 index 5d910ce6df8..00000000000 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/screen-wake-lock-reporting.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Feature-Policy: screen-wake-lock 'none' diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-geolocation.html b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-geolocation.html new file mode 100644 index 00000000000..81943845447 --- /dev/null +++ b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-geolocation.html @@ -0,0 +1,21 @@ + + + diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-screen-wakelock.html b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-screen-wakelock.html deleted file mode 100644 index 6feed51d498..00000000000 --- a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-screen-wakelock.html +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/tests/wpt/web-platform-tests/fetch/META.yml b/tests/wpt/web-platform-tests/fetch/META.yml index 43f9dc51cfd..81432ff5f5c 100644 --- a/tests/wpt/web-platform-tests/fetch/META.yml +++ b/tests/wpt/web-platform-tests/fetch/META.yml @@ -5,4 +5,3 @@ suggested_reviewers: - annevk - mnot - yutakahirano - - domfarolino diff --git a/tests/wpt/web-platform-tests/fetch/api/abort/general.any.js b/tests/wpt/web-platform-tests/fetch/api/abort/general.any.js index 472d50507f6..e9e8e93d30f 100644 --- a/tests/wpt/web-platform-tests/fetch/api/abort/general.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/abort/general.any.js @@ -6,6 +6,9 @@ const BODY_METHODS = ['arrayBuffer', 'blob', 'formData', 'json', 'text']; +const error1 = new Error('error1'); +error1.name = 'error1'; + // This is used to close connections that weren't correctly closed during the tests, // otherwise you can end up running out of HTTP connections. let requestAbortKeys = []; @@ -31,6 +34,16 @@ promise_test(async t => { await promise_rejects_dom(t, "AbortError", fetchPromise); }, "Aborting rejects with AbortError"); +promise_test(async t => { + const controller = new AbortController(); + const signal = controller.signal; + controller.abort(error1); + + const fetchPromise = fetch('../resources/data.json', { signal }); + + await promise_rejects_exactly(t, error1, fetchPromise, 'fetch() should reject with abort reason'); +}, "Aborting rejects with abort reason"); + promise_test(async t => { const controller = new AbortController(); const signal = controller.signal; @@ -91,6 +104,22 @@ promise_test(async t => { await promise_rejects_dom(t, "AbortError", fetchPromise); }, "Signal on request object"); +promise_test(async t => { + const controller = new AbortController(); + const signal = controller.signal; + controller.abort(error1); + + const request = new Request('../resources/data.json', { signal }); + + assert_not_equals(request.signal, signal, 'Request has a new signal, not a reference'); + assert_true(request.signal.aborted, `Request's signal has aborted`); + assert_equals(request.signal.reason, error1, `Request's signal's abort reason is error1`); + + const fetchPromise = fetch(request); + + await promise_rejects_exactly(t, error1, fetchPromise, "fetch() should reject with abort reason"); +}, "Signal on request object should also have abort reason"); + promise_test(async t => { const controller = new AbortController(); const signal = controller.signal; diff --git a/tests/wpt/web-platform-tests/fetch/api/abort/request.any.js b/tests/wpt/web-platform-tests/fetch/api/abort/request.any.js new file mode 100644 index 00000000000..dcc7803abe5 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/abort/request.any.js @@ -0,0 +1,85 @@ +// META: timeout=long +// META: global=window,worker + +const BODY_FUNCTION_AND_DATA = { + arrayBuffer: null, + blob: null, + formData: new FormData(), + json: new Blob(["{}"]), + text: null, +}; + +for (const [bodyFunction, body] of Object.entries(BODY_FUNCTION_AND_DATA)) { + promise_test(async () => { + const controller = new AbortController(); + const signal = controller.signal; + const request = new Request("../resources/data.json", { + method: "post", + signal, + body, + }); + + controller.abort(); + await request[bodyFunction](); + assert_true( + true, + `An aborted request should still be able to run ${bodyFunction}()` + ); + }, `Calling ${bodyFunction}() on an aborted request`); + + promise_test(async () => { + const controller = new AbortController(); + const signal = controller.signal; + const request = new Request("../resources/data.json", { + method: "post", + signal, + body, + }); + + const p = request[bodyFunction](); + controller.abort(); + await p; + assert_true( + true, + `An aborted request should still be able to run ${bodyFunction}()` + ); + }, `Aborting a request after calling ${bodyFunction}()`); + + if (!body) { + promise_test(async () => { + const controller = new AbortController(); + const signal = controller.signal; + const request = new Request("../resources/data.json", { + method: "post", + signal, + body, + }); + + // consuming happens synchronously, so don't wait + fetch(request).catch(() => {}); + + controller.abort(); + await request[bodyFunction](); + assert_true( + true, + `An aborted consumed request should still be able to run ${bodyFunction}() when empty` + ); + }, `Calling ${bodyFunction}() on an aborted consumed empty request`); + } + + promise_test(async t => { + const controller = new AbortController(); + const signal = controller.signal; + const request = new Request("../resources/data.json", { + method: "post", + signal, + body: body || new Blob(["foo"]), + }); + + // consuming happens synchronously, so don't wait + fetch(request).catch(() => {}); + + controller.abort(); + await promise_rejects_js(t, TypeError, request[bodyFunction]()); + }, `Calling ${bodyFunction}() on an aborted consumed nonempty request`); +} diff --git a/tests/wpt/web-platform-tests/fetch/api/abort/serviceworker-intercepted.https.html b/tests/wpt/web-platform-tests/fetch/api/abort/serviceworker-intercepted.https.html index 603f29eac98..ed9bc973e80 100644 --- a/tests/wpt/web-platform-tests/fetch/api/abort/serviceworker-intercepted.https.html +++ b/tests/wpt/web-platform-tests/fetch/api/abort/serviceworker-intercepted.https.html @@ -13,8 +13,11 @@ const SCOPE = '../resources/basic.html'; const BODY_METHODS = ['arrayBuffer', 'blob', 'formData', 'json', 'text']; - async function setupRegistration(t, scope) { - const reg = await navigator.serviceWorker.register('../resources/sw-intercept.js', { scope }); + const error1 = new Error('error1'); + error1.name = 'error1'; + + async function setupRegistration(t, scope, service_worker) { + const reg = await navigator.serviceWorker.register(service_worker, { scope }); await wait_for_state(t, reg.installing, 'activated'); add_completion_callback(_ => reg.unregister()); return reg; @@ -23,7 +26,7 @@ promise_test(async t => { const suffix = "?q=aborted-not-intercepted"; const scope = SCOPE + suffix; - await setupRegistration(t, scope); + await setupRegistration(t, scope, '../resources/sw-intercept.js'); const iframe = await with_iframe(scope); add_completion_callback(_ => iframe.remove()); const w = iframe.contentWindow; @@ -56,7 +59,7 @@ for (const bodyMethod of BODY_METHODS) { promise_test(async t => { const scope = SCOPE + "?q=aborted-" + bodyMethod + "-rejects"; - await setupRegistration(t, scope); + await setupRegistration(t, scope, '../resources/sw-intercept.js'); const iframe = await with_iframe(scope); add_completion_callback(_ => iframe.remove()); const w = iframe.contentWindow; @@ -84,7 +87,7 @@ promise_test(async t => { const scope = SCOPE + "?q=aborted-stream-errors"; - await setupRegistration(t, scope); + await setupRegistration(t, scope, '../resources/sw-intercept.js'); const iframe = await with_iframe(scope); add_completion_callback(_ => iframe.remove()); const w = iframe.contentWindow; @@ -100,6 +103,110 @@ await promise_rejects_dom(t, "AbortError", w.DOMException, reader.read()); await promise_rejects_dom(t, "AbortError", w.DOMException, reader.closed); }, "Stream errors once aborted."); + + promise_test(async t => { + const scope = SCOPE + "?q=aborted-with-abort-reason"; + await setupRegistration(t, scope, '../resources/sw-intercept.js'); + const iframe = await with_iframe(scope); + add_completion_callback(_ => iframe.remove()); + const w = iframe.contentWindow; + + const controller = new w.AbortController(); + const signal = controller.signal; + + const fetchPromise = w.fetch('data.json', { signal }); + + controller.abort(error1); + + await promise_rejects_exactly(t, error1, fetchPromise); + }, "fetch() rejects with abort reason"); + + + promise_test(async t => { + const scope = SCOPE + "?q=aborted-with-abort-reason-in-body"; + await setupRegistration(t, scope, '../resources/sw-intercept.js'); + const iframe = await with_iframe(scope); + add_completion_callback(_ => iframe.remove()); + const w = iframe.contentWindow; + + const controller = new w.AbortController(); + const signal = controller.signal; + + const fetchResponse = await w.fetch('data.json', { signal }); + const bodyPromise = fetchResponse.body.getReader().read(); + controller.abort(error1); + + await promise_rejects_exactly(t, error1, bodyPromise); + }, "fetch() response body has abort reason"); + + promise_test(async t => { + const scope = SCOPE + "?q=service-worker-observes-abort-reason"; + await setupRegistration(t, scope, '../resources/sw-intercept-abort.js'); + const iframe = await with_iframe(scope); + add_completion_callback(_ => iframe.remove()); + const w = iframe.contentWindow; + + const controller = new w.AbortController(); + const signal = controller.signal; + + const fetchPromise = w.fetch('data.json', { signal }); + + await new Promise(resolve => { + w.navigator.serviceWorker.addEventListener('message', t.step_func(event => { + assert_equals(event.data, "fetch event has arrived"); + resolve(); + }), {once: true}); + }); + + controller.abort(error1); + + await new Promise(resolve => { + w.navigator.serviceWorker.addEventListener('message', t.step_func(event => { + assert_equals(event.data.message, error1.message); + resolve(); + }), {once: true}); + }); + + await promise_rejects_exactly(t, error1, fetchPromise); + }, "Service Worker can observe the fetch abort and associated abort reason"); + + promise_test(async t => { + let incrementing_error = new Error('error1'); + incrementing_error.name = 'error1'; + + const scope = SCOPE + "?q=serialization-on-abort"; + await setupRegistration(t, scope, '../resources/sw-intercept-abort.js'); + const iframe = await with_iframe(scope); + add_completion_callback(_ => iframe.remove()); + const w = iframe.contentWindow; + + const controller = new w.AbortController(); + const signal = controller.signal; + + const fetchPromise = w.fetch('data.json', { signal }); + + await new Promise(resolve => { + w.navigator.serviceWorker.addEventListener('message', t.step_func(event => { + assert_equals(event.data, "fetch event has arrived"); + resolve(); + }), {once: true}); + }); + + controller.abort(incrementing_error); + + const original_error_name = incrementing_error.name; + + incrementing_error.name = 'error2'; + + await new Promise(resolve => { + w.navigator.serviceWorker.addEventListener('message', t.step_func(event => { + assert_equals(event.data.name, original_error_name); + resolve(); + }), {once: true}); + }); + + await promise_rejects_exactly(t, incrementing_error, fetchPromise); + }, "Abort reason serialization happens on abort"); diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.js b/tests/wpt/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.js index 5d85c4e62d3..fa5e277abe2 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.js @@ -16,6 +16,21 @@ function requestForbiddenHeaders(desc, forbiddenHeaders) { }, desc); } +function requestValidOverrideHeaders(desc, validHeaders) { + var url = RESOURCES_DIR + "inspect-headers.py"; + var requestInit = {"headers": validHeaders} + var urlParameters = "?headers=" + Object.keys(validHeaders).join("|"); + + promise_test(function(test){ + return fetch(url + urlParameters, requestInit).then(function(resp) { + assert_equals(resp.status, 200, "HTTP status is 200"); + assert_equals(resp.type , "basic", "Response's type is basic"); + for (var header in validHeaders) + assert_equals(resp.headers.get("x-request-" + header), validHeaders[header], header + "is not skipped for non-forbidden methods"); + }); + }, desc); +} + requestForbiddenHeaders("Accept-Charset is a forbidden request header", {"Accept-Charset": "utf-8"}); requestForbiddenHeaders("Accept-Encoding is a forbidden request header", {"Accept-Encoding": ""}); @@ -41,3 +56,42 @@ requestForbiddenHeaders("Proxy- is a forbidden request header", {"Proxy-": "valu requestForbiddenHeaders("Proxy-Test is a forbidden request header", {"Proxy-Test": "value"}); requestForbiddenHeaders("Sec- is a forbidden request header", {"Sec-": "value"}); requestForbiddenHeaders("Sec-Test is a forbidden request header", {"Sec-Test": "value"}); + +let forbiddenMethods = [ + "TRACE", + "TRACK", + "CONNECT", + "trace", + "track", + "connect", + "trace,", + "GET,track ", + " connect", +]; + +let overrideHeaders = [ + "x-http-method-override", + "x-http-method", + "x-method-override", + "X-HTTP-METHOD-OVERRIDE", + "X-HTTP-METHOD", + "X-METHOD-OVERRIDE", +]; + +for (forbiddenMethod of forbiddenMethods) { + for (overrideHeader of overrideHeaders) { + requestForbiddenHeaders(`header ${overrideHeader} is forbidden to use value ${forbiddenMethod}`, {[overrideHeader]: forbiddenMethod}); + } +} + +let permittedValues = [ + "GETTRACE", + "GET", + "\",TRACE\",", +]; + +for (permittedValue of permittedValues) { + for (overrideHeader of overrideHeaders) { + requestValidOverrideHeaders(`header ${overrideHeader} is allowed to use value ${permittedValue}`, {[overrideHeader]: permittedValue}); + } +} diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/request-upload.any.js b/tests/wpt/web-platform-tests/fetch/api/basic/request-upload.any.js index 6da2c8a38c3..9168aa11541 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/request-upload.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/basic/request-upload.any.js @@ -9,6 +9,7 @@ function testUpload(desc, url, method, createBody, expectedBody) { const body = createBody(); if (body) { requestInit["body"] = body; + requestInit.duplex = "half"; } return fetch(url, requestInit).then(function(resp) { return resp.text().then((text)=> { @@ -129,44 +130,6 @@ promise_test(async (test) => { }, "Fetch with POST with text body on 421 response should be retried once on new connection."); promise_test(async (test) => { - const body = new ReadableStream({start: controller => { - const encoder = new TextEncoder(); - controller.enqueue(encoder.encode("Test")); - controller.close(); - }}); - const resp = await fetch( - "/fetch/connection-pool/resources/network-partition-key.py?" - + `status=421&uuid=${token()}&partition_id=${get_host_info().ORIGIN}` - + `&dispatch=check_partition&addcounter=true`, - {method: "POST", body: body}); - assert_equals(resp.status, 421); - const text = await resp.text(); - assert_equals(text, "ok. Request was sent 1 times. 1 connections were created."); -}, "Fetch with POST with ReadableStream on 421 response should return the response and not retry."); - -promise_test(async (test) => { - const request = new Request('', { - body: new ReadableStream(), - method: 'POST', - }); - - assert_equals(request.headers.get('Content-Type'), null, `Request should not have a content-type set`); - - const response = await fetch('data:a/a;charset=utf-8,test', { - method: 'POST', - body: new ReadableStream(), - }); - - assert_equals(await response.text(), 'test', `Response has correct body`); -}, "Feature detect for POST with ReadableStream"); - -promise_test(async (test) => { - const request = new Request('data:a/a;charset=utf-8,test', { - body: new ReadableStream(), - method: 'POST', - }); - - assert_equals(request.headers.get('Content-Type'), null, `Request should not have a content-type set`); - const response = await fetch(request); - assert_equals(await response.text(), 'test', `Response has correct body`); -}, "Feature detect for POST with ReadableStream, using request object"); + const body = new ReadableStream({start: c => c.close()}); + await promise_rejects_js(test, TypeError, fetch('/', {method: 'POST', body})); +}, "Streaming upload shouldn't work on Http/1.1."); diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/request-upload.h2.any.js b/tests/wpt/web-platform-tests/fetch/api/basic/request-upload.h2.any.js index 00b54150d6f..eedc2bf6a76 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/request-upload.h2.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/basic/request-upload.h2.any.js @@ -3,19 +3,37 @@ // META: script=/common/utils.js // META: script=/common/get-host-info.sub.js -function testUpload(desc, url, method, createBody, expectedBody) { +const duplex = "half"; + +async function assertUpload(url, method, createBody, expectedBody) { const requestInit = {method}; - promise_test(async function(){ - const body = createBody(); - if (body) { - requestInit["body"] = body; - } - const resp = await fetch(url, requestInit); - const text = await resp.text(); - assert_equals(text, expectedBody); + const body = createBody(); + if (body) { + requestInit["body"] = body; + requestInit.duplex = "half"; + } + const resp = await fetch(url, requestInit); + const text = await resp.text(); + assert_equals(text, expectedBody); +} + +function testUpload(desc, url, method, createBody, expectedBody) { + promise_test(async () => { + await assertUpload(url, method, createBody, expectedBody); }, desc); } +function createStream(chunks) { + return new ReadableStream({ + start: (controller) => { + for (const chunk of chunks) { + controller.enqueue(chunk); + } + controller.close(); + } + }); +} + const url = RESOURCES_DIR + "echo-content.h2.py" testUpload("Fetch with POST with empty ReadableStream", url, @@ -37,3 +55,132 @@ testUpload("Fetch with POST with ReadableStream", url, }}) }, "Test"); + +promise_test(async (test) => { + const body = new ReadableStream({start: controller => { + const encoder = new TextEncoder(); + controller.enqueue(encoder.encode("Test")); + controller.close(); + }}); + const resp = await fetch( + "/fetch/connection-pool/resources/network-partition-key.py?" + + `status=421&uuid=${token()}&partition_id=${self.origin}` + + `&dispatch=check_partition&addcounter=true`, + {method: "POST", body: body, duplex}); + assert_equals(resp.status, 421); + const text = await resp.text(); + assert_equals(text, "ok. Request was sent 1 times. 1 connections were created."); +}, "Fetch with POST with ReadableStream on 421 response should return the response and not retry."); + +promise_test(async (test) => { + const request = new Request('', { + body: new ReadableStream(), + method: 'POST', + duplex, + }); + + assert_equals(request.headers.get('Content-Type'), null, `Request should not have a content-type set`); + + const response = await fetch('data:a/a;charset=utf-8,test', { + method: 'POST', + body: new ReadableStream(), + duplex, + }); + + assert_equals(await response.text(), 'test', `Response has correct body`); +}, "Feature detect for POST with ReadableStream"); + +promise_test(async (test) => { + const request = new Request('data:a/a;charset=utf-8,test', { + body: new ReadableStream(), + method: 'POST', + duplex, + }); + + assert_equals(request.headers.get('Content-Type'), null, `Request should not have a content-type set`); + const response = await fetch(request); + assert_equals(await response.text(), 'test', `Response has correct body`); +}, "Feature detect for POST with ReadableStream, using request object"); + +test(() => { + let duplexAccessed = false; + + const request = new Request("", { + body: new ReadableStream(), + method: "POST", + get duplex() { + duplexAccessed = true; + return "half"; + }, + }); + + assert_equals( + request.headers.get("Content-Type"), + null, + `Request should not have a content-type set` + ); + assert_true(duplexAccessed, `duplex dictionary property should be accessed`); +}, "Synchronous feature detect"); + +// The asserts the synchronousFeatureDetect isn't broken by a partial implementation. +// An earlier feature detect was broken by Safari implementing streaming bodies as part of Request, +// but it failed when passed to fetch(). +// This tests ensures that UAs must not implement RequestInit.duplex and streaming request bodies without also implementing the fetch() parts. +promise_test(async () => { + let duplexAccessed = false; + + const request = new Request("", { + body: new ReadableStream(), + method: "POST", + get duplex() { + duplexAccessed = true; + return "half"; + }, + }); + + const supported = + request.headers.get("Content-Type") === null && duplexAccessed; + + // If the feature detect fails, assume the browser is being truthful (other tests pick up broken cases here) + if (!supported) return false; + + await assertUpload( + url, + "POST", + () => + new ReadableStream({ + start: (controller) => { + const encoder = new TextEncoder(); + controller.enqueue(encoder.encode("Test")); + controller.close(); + }, + }), + "Test" + ); +}, "Synchronous feature detect fails if feature unsupported"); + +promise_test(async (t) => { + const body = createStream(["hello"]); + const method = "POST"; + await promise_rejects_js(t, TypeError, fetch(url, { method, body, duplex })); +}, "Streaming upload with body containing a String"); + +promise_test(async (t) => { + const body = createStream([null]); + const method = "POST"; + await promise_rejects_js(t, TypeError, fetch(url, { method, body, duplex })); +}, "Streaming upload with body containing null"); + +promise_test(async (t) => { + const body = createStream([33]); + const method = "POST"; + await promise_rejects_js(t, TypeError, fetch(url, { method, body, duplex })); +}, "Streaming upload with body containing a number"); + +promise_test(async (t) => { + const url = "/fetch/api/resources/authentication.py?realm=test"; + const body = createStream([]); + const method = "POST"; + await promise_rejects_js(t, TypeError, fetch(url, { method, body, duplex })); +}, "Streaming upload should fail on a 401 response"); + diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/response-null-body.any.js b/tests/wpt/web-platform-tests/fetch/api/basic/response-null-body.any.js new file mode 100644 index 00000000000..7824a200067 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/response-null-body.any.js @@ -0,0 +1,31 @@ +// META: global=window,worker +// META: script=../resources/utils.js + +const nullBodyStatus = [204, 205, 304]; +const methods = ["GET", "POST", "OPTIONS"]; + +for (const status of nullBodyStatus) { + for (const method of methods) { + promise_test( + async () => { + const url = + `${RESOURCES_DIR}status.py?code=${status}&content=hello-world`; + const resp = await fetch(url, { method }); + assert_equals(resp.status, status); + assert_equals(resp.body, null, "the body should be null"); + const text = await resp.text(); + assert_equals(text, "", "null bodies result in empty text"); + }, + `Response.body is null for responses with status=${status} (method=${method})`, + ); + } +} + +promise_test(async () => { + const url = `${RESOURCES_DIR}status.py?code=200&content=hello-world`; + const resp = await fetch(url, { method: "HEAD" }); + assert_equals(resp.status, 200); + assert_equals(resp.body, null, "the body should be null"); + const text = await resp.text(); + assert_equals(text, "", "null bodies result in empty text"); +}, `Response.body is null for responses with method=HEAD`); diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.any.js b/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.any.js index 4329bd07032..9ef44183c17 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.any.js @@ -16,3 +16,11 @@ checkNetworkError("about:blank", "POST"); checkNetworkError("about:invalid.com"); checkNetworkError("about:config"); checkNetworkError("about:unicorn"); + +promise_test(function(test) { + var promise = fetch("about:blank", { + "method": "GET", + "Range": "bytes=1-10" + }); + return promise_rejects_js(test, TypeError, promise); +}, "Fetching about:blank with range header does not affect behavior"); diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/scheme-blob.sub.any.js b/tests/wpt/web-platform-tests/fetch/api/basic/scheme-blob.sub.any.js index 6e63cbecaa5..a6059ea93d9 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/scheme-blob.sub.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/basic/scheme-blob.sub.any.js @@ -42,4 +42,80 @@ invalidRequestMethods.forEach(function(method) { checkKoUrl(URL.createObjectURL(blob2), method, "Fetching [" + method + "] URL.createObjectURL(blob) is KO"); }); +checkKoUrl("blob:not-backed-by-a-blob/", "GET", + "Fetching [GET] blob:not-backed-by-a-blob/ is KO"); + +let empty_blob = new Blob([]); +checkFetchResponse(URL.createObjectURL(empty_blob), "", "", 0, + "Fetching URL.createObjectURL(empty_blob) is OK"); + +let empty_type_blob = new Blob([], {type: ""}); +checkFetchResponse(URL.createObjectURL(empty_type_blob), "", "", 0, + "Fetching URL.createObjectURL(empty_type_blob) is OK"); + +let empty_data_blob = new Blob([], {type: "text/plain"}); +checkFetchResponse(URL.createObjectURL(empty_data_blob), "", "text/plain", 0, + "Fetching URL.createObjectURL(empty_data_blob) is OK"); + +promise_test(function(test) { + return fetch("/images/blue.png").then(function(resp) { + return resp.arrayBuffer(); + }).then(function(image_buffer) { + let blob = new Blob([image_buffer]); + return fetch(URL.createObjectURL(blob)).then(function(resp) { + assert_equals(resp.status, 200, "HTTP status is 200"); + assert_equals(resp.type, "basic", "response type is basic"); + assert_equals(resp.headers.get("Content-Type"), "", "Content-Type is " + resp.headers.get("Content-Type")); + }) + }); +}, "Blob content is not sniffed for a content type [image/png]"); + +let simple_xml_string = ''; +let xml_blob_no_type = new Blob([simple_xml_string]); +checkFetchResponse(URL.createObjectURL(xml_blob_no_type), simple_xml_string, "", 45, + "Blob content is not sniffed for a content type [text/xml]"); + +let simple_text_string = 'Hello, World!'; +promise_test(function(test) { + let blob = new Blob([simple_text_string], {"type": "text/plain"}); + let slice = blob.slice(7, simple_text_string.length, "\0"); + return fetch(URL.createObjectURL(slice)).then(function (resp) { + assert_equals(resp.status, 200, "HTTP status is 200"); + assert_equals(resp.type, "basic", "response type is basic"); + assert_equals(resp.headers.get("Content-Type"), ""); + assert_equals(resp.headers.get("Content-Length"), "6"); + return resp.text(); + }).then(function(bodyAsText) { + assert_equals(bodyAsText, "World!"); + }); +}, "Set content type to the empty string for slice with invalid content type"); + +promise_test(function(test) { + let blob = new Blob([simple_text_string], {"type": "text/plain"}); + let slice = blob.slice(7, simple_text_string.length, "\0"); + return fetch(URL.createObjectURL(slice)).then(function (resp) { + assert_equals(resp.status, 200, "HTTP status is 200"); + assert_equals(resp.type, "basic", "response type is basic"); + assert_equals(resp.headers.get("Content-Type"), ""); + assert_equals(resp.headers.get("Content-Length"), "6"); + return resp.text(); + }).then(function(bodyAsText) { + assert_equals(bodyAsText, "World!"); + }); +}, "Set content type to the empty string for slice with no content type "); + +promise_test(function(test) { + let blob = new Blob([simple_xml_string]); + let slice = blob.slice(0, 38); + return fetch(URL.createObjectURL(slice)).then(function (resp) { + assert_equals(resp.status, 200, "HTTP status is 200"); + assert_equals(resp.type, "basic", "response type is basic"); + assert_equals(resp.headers.get("Content-Type"), ""); + assert_equals(resp.headers.get("Content-Length"), "38"); + return resp.text(); + }).then(function(bodyAsText) { + assert_equals(bodyAsText, ''); + }); +}, "Blob.slice should not sniff the content for a content type"); + done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/crashtests/request.html b/tests/wpt/web-platform-tests/fetch/api/crashtests/request.html new file mode 100644 index 00000000000..2d21930c3bb --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/crashtests/request.html @@ -0,0 +1,8 @@ + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.any.js b/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.any.js index 398ddcfd3d6..ead1047645a 100644 --- a/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.any.js @@ -218,3 +218,58 @@ test(function() { }); assert_true(reference.next().done); }, "Check forEach method"); + +test(() => { + const headers = new Headers({"foo": "2", "baz": "1", "BAR": "0"}); + const actualKeys = []; + const actualValues = []; + for (const [header, value] of headers) { + actualKeys.push(header); + actualValues.push(value); + headers.delete("foo"); + } + assert_array_equals(actualKeys, ["bar", "baz"]); + assert_array_equals(actualValues, ["0", "1"]); +}, "Iteration skips elements removed while iterating"); + +test(() => { + const headers = new Headers({"foo": "2", "baz": "1", "BAR": "0", "quux": "3"}); + const actualKeys = []; + const actualValues = []; + for (const [header, value] of headers) { + actualKeys.push(header); + actualValues.push(value); + if (header === "baz") + headers.delete("bar"); + } + assert_array_equals(actualKeys, ["bar", "baz", "quux"]); + assert_array_equals(actualValues, ["0", "1", "3"]); +}, "Removing elements already iterated over causes an element to be skipped during iteration"); + +test(() => { + const headers = new Headers({"foo": "2", "baz": "1", "BAR": "0", "quux": "3"}); + const actualKeys = []; + const actualValues = []; + for (const [header, value] of headers) { + actualKeys.push(header); + actualValues.push(value); + if (header === "baz") + headers.append("X-yZ", "4"); + } + assert_array_equals(actualKeys, ["bar", "baz", "foo", "quux", "x-yz"]); + assert_array_equals(actualValues, ["0", "1", "2", "3", "4"]); +}, "Appending a value pair during iteration causes it to be reached during iteration"); + +test(() => { + const headers = new Headers({"foo": "2", "baz": "1", "BAR": "0", "quux": "3"}); + const actualKeys = []; + const actualValues = []; + for (const [header, value] of headers) { + actualKeys.push(header); + actualValues.push(value); + if (header === "baz") + headers.append("abc", "-1"); + } + assert_array_equals(actualKeys, ["bar", "baz", "baz", "foo", "quux"]); + assert_array_equals(actualValues, ["0", "1", "1", "2", "3"]); +}, "Prepending a value pair before the current element position causes it to be skipped during iteration and adds the current element a second time"); diff --git a/tests/wpt/web-platform-tests/fetch/api/headers/headers-no-cors.any.js b/tests/wpt/web-platform-tests/fetch/api/headers/headers-no-cors.any.js index de30124c505..60dbb9ef67a 100644 --- a/tests/wpt/web-platform-tests/fetch/api/headers/headers-no-cors.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/headers/headers-no-cors.any.js @@ -38,7 +38,9 @@ const longValue = "s".repeat(127); function runTests(testArray) { testArray = testArray.concat([ ["dpr", "2"], - ["downlink", "1"], + ["rtt", "1.0"], + ["downlink", "-1.0"], + ["ect", "6g"], ["save-data", "on"], ["viewport-width", "100"], ["width", "100"], diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.js b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.js index 82ec43b64e9..521bd3adc28 100644 --- a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.js @@ -15,6 +15,7 @@ async function fetchStreamRedirect(statusCode) { controller.enqueue(encoder.encode("Test")); controller.close(); }}); + requestInit.duplex = "half"; return fetch(url, requestInit); } diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-error.any.js b/tests/wpt/web-platform-tests/fetch/api/request/request-error.any.js index 67ed70c5db2..9ec8015198d 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-error.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-error.any.js @@ -13,6 +13,14 @@ for (const { args, testName } of badRequestArgTests) { }, testName); } +test(function() { + assert_throws_js( + TypeError, + () => Request("about:blank"), + "Calling Request constructor without 'new' must throw" + ); +}); + test(function() { var initialHeaders = new Headers([["Content-Type", "potato"]]); var initialRequest = new Request("", {"headers" : initialHeaders}); diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-headers.any.js b/tests/wpt/web-platform-tests/fetch/api/request/request-headers.any.js index c48e24e5bc6..cb34e5a790a 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-headers.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-headers.any.js @@ -8,6 +8,7 @@ var validRequestHeaders = [ ["proxya", "OK"], ["sec", "OK"], ["secb", "OK"], + ["Set-Cookie2", "OK"], ]; var invalidRequestHeaders = [ ["Accept-Charset", "KO"], @@ -27,6 +28,7 @@ var invalidRequestHeaders = [ ["Keep-Alive", "KO"], ["Origin", "KO"], ["Referer", "KO"], + ["Set-Cookie", "KO"], ["TE", "KO"], ["Trailer", "KO"], ["Transfer-Encoding", "KO"], diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-init-contenttype.any.js b/tests/wpt/web-platform-tests/fetch/api/request/request-init-contenttype.any.js index d8e048c4fc9..18a6969d4f8 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-init-contenttype.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-init-contenttype.any.js @@ -4,6 +4,7 @@ function requestFromBody(body) { { method: "POST", body, + duplex: "half", }, ); } @@ -82,6 +83,7 @@ function requestFromBodyWithOverrideMime(body) { method: "POST", body, headers: { "Content-Type": OVERRIDE_MIME }, + duplex: "half", }, ); } diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-init-stream.any.js b/tests/wpt/web-platform-tests/fetch/api/request/request-init-stream.any.js index 8c50c4929e7..f0ae441a002 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-init-stream.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-init-stream.any.js @@ -2,56 +2,146 @@ "use strict"; +const duplex = "half"; +const method = "POST"; + test(() => { - const stream = new ReadableStream(); - const request = new Request("...", { method:"POST", body: stream }); - assert_equals(request.body, stream); + const body = new ReadableStream(); + const request = new Request("...", { method, body, duplex }); + assert_equals(request.body, body); }, "Constructing a Request with a stream holds the original object."); -async function assert_request(test, input, init) { - assert_throws_js(TypeError, () => new Request(input, init), "new Request()"); - await promise_rejects_js(test, TypeError, fetch(input, init), "fetch()"); -} - -promise_test(async (t) => { - const stream = new ReadableStream(); - stream.getReader(); - await assert_request(t, "...", { method:"POST", body: stream }); +test((t) => { + const body = new ReadableStream(); + body.getReader(); + assert_throws_js(TypeError, + () => new Request("...", { method, body, duplex })); }, "Constructing a Request with a stream on which getReader() is called"); -promise_test(async (t) => { - const stream = new ReadableStream(); - stream.getReader().read(); - await assert_request(t, "...", { method:"POST", body: stream }); +test((t) => { + const body = new ReadableStream(); + body.getReader().read(); + assert_throws_js(TypeError, + () => new Request("...", { method, body, duplex })); }, "Constructing a Request with a stream on which read() is called"); promise_test(async (t) => { - const stream = new ReadableStream({ pull: c => c.enqueue(new Uint8Array()) }), - reader = stream.getReader(); + const body = new ReadableStream({ pull: c => c.enqueue(new Uint8Array()) }); + const reader = body.getReader(); await reader.read(); reader.releaseLock(); - await assert_request(t, "...", { method:"POST", body: stream }); + assert_throws_js(TypeError, + () => new Request("...", { method, body, duplex })); }, "Constructing a Request with a stream on which read() and releaseLock() are called"); -promise_test(async (t) => { +test((t) => { const request = new Request("...", { method: "POST", body: "..." }); request.body.getReader(); - await assert_request(t, request); - assert_class_string(new Request(request, { body: "..." }), "Request"); + assert_throws_js(TypeError, () => new Request(request)); + // This doesn't throw. + new Request(request, { body: "..." }); }, "Constructing a Request with a Request on which body.getReader() is called"); -promise_test(async (t) => { +test((t) => { const request = new Request("...", { method: "POST", body: "..." }); request.body.getReader().read(); - await assert_request(t, request); - assert_class_string(new Request(request, { body: "..." }), "Request"); + assert_throws_js(TypeError, () => new Request(request)); + // This doesn't throw. + new Request(request, { body: "..." }); }, "Constructing a Request with a Request on which body.getReader().read() is called"); promise_test(async (t) => { - const request = new Request("...", { method: "POST", body: "..." }), - reader = request.body.getReader(); + const request = new Request("...", { method: "POST", body: "..." }); + const reader = request.body.getReader(); await reader.read(); reader.releaseLock(); - await assert_request(t, request); - assert_class_string(new Request(request, { body: "..." }), "Request"); + assert_throws_js(TypeError, () => new Request(request)); + // This doesn't throw. + new Request(request, { body: "..." }); }, "Constructing a Request with a Request on which read() and releaseLock() are called"); + +test((t) => { + new Request("...", { method, body: null }); +}, "It is OK to omit .duplex when the body is null."); + +test((t) => { + new Request("...", { method, body: "..." }); +}, "It is OK to omit .duplex when the body is a string."); + +test((t) => { + new Request("...", { method, body: new Uint8Array(3) }); +}, "It is OK to omit .duplex when the body is a Uint8Array."); + +test((t) => { + new Request("...", { method, body: new Blob([]) }); +}, "It is OK to omit .duplex when the body is a Blob."); + +test((t) => { + const body = new ReadableStream(); + assert_throws_js(TypeError, + () => new Request("...", { method, body })); +}, "It is error to omit .duplex when the body is a ReadableStream."); + +test((t) => { + new Request("...", { method, body: null, duplex: "half" }); +}, "It is OK to set .duplex = 'half' when the body is null."); + +test((t) => { + new Request("...", { method, body: "...", duplex: "half" }); +}, "It is OK to set .duplex = 'half' when the body is a string."); + +test((t) => { + new Request("...", { method, body: new Uint8Array(3), duplex: "half" }); +}, "It is OK to set .duplex = 'half' when the body is a Uint8Array."); + +test((t) => { + new Request("...", { method, body: new Blob([]), duplex: "half" }); +}, "It is OK to set .duplex = 'half' when the body is a Blob."); + +test((t) => { + const body = new ReadableStream(); + new Request("...", { method, body, duplex: "half" }); +}, "It is OK to set .duplex = 'half' when the body is a ReadableStream."); + +test((t) => { + const body = null; + const duplex = "full"; + assert_throws_js(TypeError, + () => new Request("...", { method, body, duplex })); +}, "It is error to set .duplex = 'full' when the body is null."); + +test((t) => { + const body = "..."; + const duplex = "full"; + assert_throws_js(TypeError, + () => new Request("...", { method, body, duplex })); +}, "It is error to set .duplex = 'full' when the body is a string."); + +test((t) => { + const body = new Uint8Array(3); + const duplex = "full"; + assert_throws_js(TypeError, + () => new Request("...", { method, body, duplex })); +}, "It is error to set .duplex = 'full' when the body is a Uint8Array."); + +test((t) => { + const body = new Blob([]); + const duplex = "full"; + assert_throws_js(TypeError, + () => new Request("...", { method, body, duplex })); +}, "It is error to set .duplex = 'full' when the body is a Blob."); + +test((t) => { + const body = new ReadableStream(); + const duplex = "full"; + assert_throws_js(TypeError, + () => new Request("...", { method, body, duplex })); +}, "It is error to set .duplex = 'full' when the body is a ReadableStream."); + +test((t) => { + const body = new ReadableStream(); + const duplex = "half"; + const req1 = new Request("...", { method, body, duplex }); + const req2 = new Request(req1); +}, "It is OK to omit duplex when init.body is not given and input.body is given."); + diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-structure.any.js b/tests/wpt/web-platform-tests/fetch/api/request/request-structure.any.js index 65f1b96b2b9..3d55c70ac1e 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-structure.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-structure.any.js @@ -23,11 +23,12 @@ var attributes = ["method", "integrity", "isReloadNavigation", "isHistoryNavigation", + "duplex", //Request implements Body "bodyUsed" ]; -function IsreadOnly(request, attributeToCheck) { +function isReadOnly(request, attributeToCheck) { var defaultValue = undefined; var newValue = undefined; switch (attributeToCheck) { @@ -46,7 +47,6 @@ function IsreadOnly(request, attributeToCheck) { request.headers = new Headers ({"name":"value"}); assert_false(request.headers.has("name"), "Headers attribute is read only"); return; - break; case "destination": defaultValue = ""; @@ -102,6 +102,11 @@ function IsreadOnly(request, attributeToCheck) { newValue = true; break; + case "duplex": + defaultValue = "half"; + newValue = "full"; + break; + default: return; } @@ -123,6 +128,6 @@ for (var idx in methods) { for (var idx in attributes) { test(function() { assert_true(attributes[idx] in request, "request has " + attributes[idx] + " attribute"); - IsreadOnly(request, attributes[idx]); + isReadOnly(request, attributes[idx]); }, "Check " + attributes[idx] + " attribute"); } diff --git a/tests/wpt/web-platform-tests/fetch/api/resources/echo-content.h2.py b/tests/wpt/web-platform-tests/fetch/api/resources/echo-content.h2.py index d3dcf596bae..0be3ece4a5f 100644 --- a/tests/wpt/web-platform-tests/fetch/api/resources/echo-content.h2.py +++ b/tests/wpt/web-platform-tests/fetch/api/resources/echo-content.h2.py @@ -1,5 +1,3 @@ -from wptserve.utils import isomorphic_encode - def handle_headers(frame, request, response): response.status = 200 response.headers.update([('Content-Type', 'text/plain')]) diff --git a/tests/wpt/web-platform-tests/fetch/api/resources/redirect.py b/tests/wpt/web-platform-tests/fetch/api/resources/redirect.py index 2ff8b78f095..d52ab5f3eee 100644 --- a/tests/wpt/web-platform-tests/fetch/api/resources/redirect.py +++ b/tests/wpt/web-platform-tests/fetch/api/resources/redirect.py @@ -35,6 +35,8 @@ def main(request, response): if b"redirect_status" in request.GET: status = int(request.GET[b'redirect_status']) + elif b"redirect_status" in request.POST: + status = int(request.POST[b'redirect_status']) stashed_data[b'count'] += 1 diff --git a/tests/wpt/web-platform-tests/fetch/api/resources/sw-intercept-abort.js b/tests/wpt/web-platform-tests/fetch/api/resources/sw-intercept-abort.js new file mode 100644 index 00000000000..19d4b189d85 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/resources/sw-intercept-abort.js @@ -0,0 +1,19 @@ +async function messageClient(clientId, message) { + const client = await clients.get(clientId); + client.postMessage(message); +} + +addEventListener('fetch', event => { + let resolve; + const promise = new Promise(r => resolve = r); + + function onAborted() { + messageClient(event.clientId, event.request.signal.reason); + resolve(); + } + + messageClient(event.clientId, 'fetch event has arrived'); + + event.respondWith(promise.then(() => new Response('hello'))); + event.request.signal.addEventListener('abort', onAborted); +}); diff --git a/tests/wpt/web-platform-tests/fetch/api/response/response-static-json.any.js b/tests/wpt/web-platform-tests/fetch/api/response/response-static-json.any.js new file mode 100644 index 00000000000..3c8a2b637f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/response/response-static-json.any.js @@ -0,0 +1,81 @@ +// META: global=window,worker +// META: title=Response: json static method + +const APPLICATION_JSON = "application/json"; +const FOO_BAR = "foo/bar"; + +const INIT_TESTS = [ + [undefined, 200, "", APPLICATION_JSON, {}], + [{ status: 400 }, 400, "", APPLICATION_JSON, {}], + [{ statusText: "foo" }, 200, "foo", APPLICATION_JSON, {}], + [{ headers: {} }, 200, "", APPLICATION_JSON, {}], + [{ headers: { "content-type": FOO_BAR } }, 200, "", FOO_BAR, {}], + [{ headers: { "x-foo": "bar" } }, 200, "", APPLICATION_JSON, { "x-foo": "bar" }], +]; + +for (const [init, expectedStatus, expectedStatusText, expectedContentType, expectedHeaders] of INIT_TESTS) { + promise_test(async function () { + const response = Response.json("hello world", init); + assert_equals(response.type, "default", "Response's type is default"); + assert_equals(response.status, expectedStatus, "Response's status is " + expectedStatus); + assert_equals(response.statusText, expectedStatusText, "Response's statusText is " + JSON.stringify(expectedStatusText)); + assert_equals(response.headers.get("content-type"), expectedContentType, "Response's content-type is " + expectedContentType); + for (const key in expectedHeaders) { + assert_equals(response.headers.get(key), expectedHeaders[key], "Response's header " + key + " is " + JSON.stringify(expectedHeaders[key])); + } + + const data = await response.json(); + assert_equals(data, "hello world", "Response's body is 'hello world'"); + }, `Check response returned by static json() with init ${JSON.stringify(init)}`); +} + +const nullBodyStatus = [204, 205, 304]; +for (const status of nullBodyStatus) { + test(function () { + assert_throws_js( + TypeError, + function () { + Response.json("hello world", { status: status }); + }, + ); + }, `Throws TypeError when calling static json() with a status of ${status}`); +} + +promise_test(async function () { + const response = Response.json({ foo: "bar" }); + const data = await response.json(); + assert_equals(typeof data, "object", "Response's json body is an object"); + assert_equals(data.foo, "bar", "Response's json body is { foo: 'bar' }"); +}, "Check static json() encodes JSON objects correctly"); + +test(function () { + assert_throws_js( + TypeError, + function () { + Response.json(Symbol("foo")); + }, + ); +}, "Check static json() throws when data is not encodable"); + +test(function () { + const a = { b: 1 }; + a.a = a; + assert_throws_js( + TypeError, + function () { + Response.json(a); + }, + ); +}, "Check static json() throws when data is circular"); + +promise_test(async function () { + class CustomError extends Error { + name = "CustomError"; + } + assert_throws_js( + CustomError, + function () { + Response.json({ get foo() { throw new CustomError("bar") }}); + } + ) +}, "Check static json() propagates JSON serializer errors"); diff --git a/tests/wpt/web-platform-tests/fetch/api/response/response-stream-bad-chunk.any.js b/tests/wpt/web-platform-tests/fetch/api/response/response-stream-bad-chunk.any.js new file mode 100644 index 00000000000..d3d92e16772 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/response/response-stream-bad-chunk.any.js @@ -0,0 +1,24 @@ +// META: global=window,worker +// META: title=Response causes TypeError from bad chunk type + +function runChunkTest(responseReaderMethod, testDescription) { + promise_test(test => { + let stream = new ReadableStream({ + start(controller) { + controller.enqueue("not Uint8Array"); + controller.close(); + } + }); + + return promise_rejects_js(test, TypeError, + new Response(stream)[responseReaderMethod](), + 'TypeError should propagate' + ) + }, testDescription) +} + +runChunkTest('arrayBuffer', 'ReadableStream with non-Uint8Array chunk passed to Response.arrayBuffer() causes TypeError'); +runChunkTest('blob', 'ReadableStream with non-Uint8Array chunk passed to Response.blob() causes TypeError'); +runChunkTest('formData', 'ReadableStream with non-Uint8Array chunk passed to Response.formData() causes TypeError'); +runChunkTest('json', 'ReadableStream with non-Uint8Array chunk passed to Response.json() causes TypeError'); +runChunkTest('text', 'ReadableStream with non-Uint8Array chunk passed to Response.text() causes TypeError'); diff --git a/tests/wpt/web-platform-tests/fetch/content-type/multipart.window.js b/tests/wpt/web-platform-tests/fetch/content-type/multipart.window.js new file mode 100644 index 00000000000..03b037a0e62 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/content-type/multipart.window.js @@ -0,0 +1,33 @@ +// META: title=Ensure capital letters can be used in the boundary value. +setup({ single_test: true }); +(async () => { + const form_string = + "--Boundary_with_capital_letters\r\n" + + "Content-Type: application/json\r\n" + + 'Content-Disposition: form-data; name="does_this_work"\r\n' + + "\r\n" + + 'YES\r\n' + + "--Boundary_with_capital_letters--\r\n"; + + const r = new Response(new Blob([form_string]), { + headers: [ + [ + "Content-Type", + "multipart/form-data; boundary=Boundary_with_capital_letters", + ], + ], + }); + + var s = ""; + try { + const fd = await r.formData(); + for (const [key, value] of fd.entries()) { + s += (`${key} = ${value}`); + } + } catch (ex) { + s = ex; + } + + assert_equals(s, "does_this_work = YES"); + done(); +})(); diff --git a/tests/wpt/web-platform-tests/fetch/content-type/script.window.js b/tests/wpt/web-platform-tests/fetch/content-type/script.window.js index 88584ce9c21..31598957ef2 100644 --- a/tests/wpt/web-platform-tests/fetch/content-type/script.window.js +++ b/tests/wpt/web-platform-tests/fetch/content-type/script.window.js @@ -26,10 +26,10 @@ function runScriptTest(testData, singleHeader) { script.onload = t.step_func_done(() => { assert_equals(self.stringFromExecutedScript, testData.encoding === "windows-1252" ? "€" : "€"); }); - script.onerror = t.unreached_func(); + script.onerror = t.unreached_func("onerror"); } else { script.onerror = t.step_func_done(); - script.onload = t.unreached_func(); + script.onload = t.unreached_func("onload"); } }, (singleHeader ? "combined" : "separate") + " " + testData.contentType.join(" ")); } diff --git a/tests/wpt/web-platform-tests/fetch/corb/README.md b/tests/wpt/web-platform-tests/fetch/corb/README.md index f131b5a1da9..f29562b0606 100644 --- a/tests/wpt/web-platform-tests/fetch/corb/README.md +++ b/tests/wpt/web-platform-tests/fetch/corb/README.md @@ -3,7 +3,7 @@ ### Summary This directory contains tests related to the -[Cross-Origin Resource Blocking (CORB)](https://chromium.googlesource.com/chromium/src/+/master/services/network/cross_origin_read_blocking_explainer.md) +[Cross-Origin Resource Blocking (CORB)](https://chromium.googlesource.com/chromium/src/+/main/services/network/cross_origin_read_blocking_explainer.md) algorithm. The tests in this directory interact with various, random features, diff --git a/tests/wpt/web-platform-tests/fetch/corb/img-svg-doctype-html-mimetype-empty.sub.html b/tests/wpt/web-platform-tests/fetch/corb/img-svg-doctype-html-mimetype-empty.sub.html new file mode 100644 index 00000000000..3219feda171 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/img-svg-doctype-html-mimetype-empty.sub.html @@ -0,0 +1,7 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/img-svg-doctype-html-mimetype-svg.sub.html b/tests/wpt/web-platform-tests/fetch/corb/img-svg-doctype-html-mimetype-svg.sub.html new file mode 100644 index 00000000000..efcfaa27374 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/img-svg-doctype-html-mimetype-svg.sub.html @@ -0,0 +1,11 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/img-svg-invalid.sub-ref.html b/tests/wpt/web-platform-tests/fetch/corb/img-svg-invalid.sub-ref.html new file mode 100644 index 00000000000..484cd0a4fde --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/img-svg-invalid.sub-ref.html @@ -0,0 +1,5 @@ + + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/img-svg-labeled-as-dash.sub.html b/tests/wpt/web-platform-tests/fetch/corb/img-svg-labeled-as-dash.sub.html new file mode 100644 index 00000000000..0578b835fe5 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/img-svg-labeled-as-dash.sub.html @@ -0,0 +1,6 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/img-svg-labeled-as-svg-xml.sub.html b/tests/wpt/web-platform-tests/fetch/corb/img-svg-labeled-as-svg-xml.sub.html new file mode 100644 index 00000000000..30a2eb3246c --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/img-svg-labeled-as-svg-xml.sub.html @@ -0,0 +1,6 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/img-svg-xml-decl.sub.html b/tests/wpt/web-platform-tests/fetch/corb/img-svg-xml-decl.sub.html new file mode 100644 index 00000000000..0d3aeafb258 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/img-svg-xml-decl.sub.html @@ -0,0 +1,6 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/img-svg.sub-ref.html b/tests/wpt/web-platform-tests/fetch/corb/img-svg.sub-ref.html new file mode 100644 index 00000000000..5462f685a0e --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/img-svg.sub-ref.html @@ -0,0 +1,5 @@ + + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/response_block_probe.js b/tests/wpt/web-platform-tests/fetch/corb/resources/response_block_probe.js new file mode 100644 index 00000000000..d23ad488af2 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/response_block_probe.js @@ -0,0 +1 @@ +window.script_callback(); diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/response_block_probe.js.headers b/tests/wpt/web-platform-tests/fetch/corb/resources/response_block_probe.js.headers new file mode 100644 index 00000000000..0d848b02c2e --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/response_block_probe.js.headers @@ -0,0 +1 @@ +Content-Type: text/csv diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-empty.svg b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-empty.svg new file mode 100644 index 00000000000..fa2d29b3b0f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-empty.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-empty.svg.headers b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-empty.svg.headers new file mode 100644 index 00000000000..29515ee7d4a --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-empty.svg.headers @@ -0,0 +1 @@ +Content-Type: diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-svg.svg b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-svg.svg new file mode 100644 index 00000000000..fa2d29b3b0f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-svg.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-svg.svg.headers b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-svg.svg.headers new file mode 100644 index 00000000000..070de35fbe9 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-doctype-html-mimetype-svg.svg.headers @@ -0,0 +1 @@ +Content-Type: image/svg+xml diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-dash.svg b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-dash.svg new file mode 100644 index 00000000000..2b7d1016b1e --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-dash.svg @@ -0,0 +1,3 @@ + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-dash.svg.headers b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-dash.svg.headers new file mode 100644 index 00000000000..43ce612c9fd --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-dash.svg.headers @@ -0,0 +1 @@ +Content-Type: application/dash+xml diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-svg-xml.svg b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-svg-xml.svg new file mode 100644 index 00000000000..2b7d1016b1e --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-svg-xml.svg @@ -0,0 +1,3 @@ + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-svg-xml.svg.headers b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-svg-xml.svg.headers new file mode 100644 index 00000000000..070de35fbe9 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-labeled-as-svg-xml.svg.headers @@ -0,0 +1 @@ +Content-Type: image/svg+xml diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/svg-xml-decl.svg b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-xml-decl.svg new file mode 100644 index 00000000000..3b39aff8e5c --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/svg-xml-decl.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/svg.svg b/tests/wpt/web-platform-tests/fetch/corb/resources/svg.svg new file mode 100644 index 00000000000..2b7d1016b1e --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/svg.svg @@ -0,0 +1,3 @@ + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/resources/svg.svg.headers b/tests/wpt/web-platform-tests/fetch/corb/resources/svg.svg.headers new file mode 100644 index 00000000000..070de35fbe9 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/resources/svg.svg.headers @@ -0,0 +1 @@ +Content-Type: image/svg+xml diff --git a/tests/wpt/web-platform-tests/fetch/corb/response_block.tentative.sub.https.html b/tests/wpt/web-platform-tests/fetch/corb/response_block.tentative.sub.https.html new file mode 100644 index 00000000000..860e0d3b93c --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/corb/response_block.tentative.sub.https.html @@ -0,0 +1,44 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/corb/script-html-correctly-labeled.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/corb/script-html-correctly-labeled.tentative.sub.html index 8f4d7679e3d..6d1947cea7d 100644 --- a/tests/wpt/web-platform-tests/fetch/corb/script-html-correctly-labeled.tentative.sub.html +++ b/tests/wpt/web-platform-tests/fetch/corb/script-html-correctly-labeled.tentative.sub.html @@ -14,11 +14,13 @@ async_test(function(t) { // Without CORB, the html document would cause a syntax error when parsed as // JavaScript, but with CORB there should be no errors (because CORB will - // replace the response body with an empty body). - script.onload = t.step_func_done(function(){}) + // replace the response body with an empty body). With ORB, the script loading + // itself will error out. + script.onload = t.step_func_done(); + script.onerror = t.step_func_done(); addEventListener("error",function(e) { t.step(function() { - assert_unreached("Empty body of a CORS-blocked response shouldn't trigger syntax errors."); + assert_unreached("Empty body of a CORB-blocked response shouldn't trigger syntax errors."); t.done(); }) }); diff --git a/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-json-parser-breaker.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-json-parser-breaker.tentative.sub.html index 1a8095ec658..f0eb1f0ab1f 100644 --- a/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-json-parser-breaker.tentative.sub.html +++ b/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-json-parser-breaker.tentative.sub.html @@ -7,7 +7,7 @@ prevent cross-site script inclusion (XSSI) and similar attacks. For example, it may be included in JSON files to prevent them from leaking data via a - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/favicon.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/favicon.https.sub.html deleted file mode 100644 index 50ea5b27415..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/favicon.https.sub.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/fetch/metadata/fetch-via-serviceworker--fallback.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/fetch-via-serviceworker--fallback.https.sub.html deleted file mode 100644 index 9f494461372..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/fetch-via-serviceworker--fallback.https.sub.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/fetch-via-serviceworker--respondWith.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/fetch-via-serviceworker--respondWith.https.sub.html deleted file mode 100644 index 03d5fd1cc31..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/fetch-via-serviceworker--respondWith.https.sub.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/fetch.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/fetch.sub.html deleted file mode 100644 index 1659a9fb6bf..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/fetch.sub.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/font.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/font.https.sub.html deleted file mode 100644 index 2c705085d6a..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/font.https.sub.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - -
    1
    -
    2
    -
    3
    - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/form.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/form.https.sub.html deleted file mode 100644 index 2e6332c747f..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/form.https.sub.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/appcache-manifest.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/appcache-manifest.https.sub.html new file mode 100644 index 00000000000..cf322fd34bc --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/appcache-manifest.https.sub.html @@ -0,0 +1,341 @@ + + + + + HTTP headers on request for Appcache manifest + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/audioworklet.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/audioworklet.https.sub.html new file mode 100644 index 00000000000..64fb7607e26 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/audioworklet.https.sub.html @@ -0,0 +1,271 @@ + + + + + HTTP headers on request for AudioWorklet module + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/css-font-face.https.sub.tentative.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/css-font-face.https.sub.tentative.html new file mode 100644 index 00000000000..332effeb1f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/css-font-face.https.sub.tentative.html @@ -0,0 +1,230 @@ + + + + + HTTP headers on request for CSS font-face + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/css-font-face.sub.tentative.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/css-font-face.sub.tentative.html new file mode 100644 index 00000000000..8a0b90cee10 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/css-font-face.sub.tentative.html @@ -0,0 +1,196 @@ + + + + + HTTP headers on request for CSS font-face + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/css-images.https.sub.tentative.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/css-images.https.sub.tentative.html new file mode 100644 index 00000000000..3fa24019289 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/css-images.https.sub.tentative.html @@ -0,0 +1,1384 @@ + + + + + + HTTP headers on request for CSS image-accepting properties + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/css-images.sub.tentative.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/css-images.sub.tentative.html new file mode 100644 index 00000000000..f1ef27cf087 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/css-images.sub.tentative.html @@ -0,0 +1,1099 @@ + + + + + + HTTP headers on request for CSS image-accepting properties + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-a.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-a.https.sub.html new file mode 100644 index 00000000000..dffd36c73ee --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-a.https.sub.html @@ -0,0 +1,482 @@ + + + + + + HTTP headers on request for HTML "a" element navigation + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-a.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-a.sub.html new file mode 100644 index 00000000000..0661de3c871 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-a.sub.html @@ -0,0 +1,342 @@ + + + + + + HTTP headers on request for HTML "a" element navigation + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-area.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-area.https.sub.html new file mode 100644 index 00000000000..be3f5f9b621 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-area.https.sub.html @@ -0,0 +1,482 @@ + + + + + + HTTP headers on request for HTML "area" element navigation + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-area.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-area.sub.html new file mode 100644 index 00000000000..5f5c338324f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-area.sub.html @@ -0,0 +1,342 @@ + + + + + + HTTP headers on request for HTML "area" element navigation + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-audio.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-audio.https.sub.html new file mode 100644 index 00000000000..a9d951233e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-audio.https.sub.html @@ -0,0 +1,325 @@ + + + + + HTTP headers on request for HTML "audio" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-audio.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-audio.sub.html new file mode 100644 index 00000000000..2b62632ac2e --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-audio.sub.html @@ -0,0 +1,229 @@ + + + + + HTTP headers on request for HTML "audio" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-embed.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-embed.https.sub.html new file mode 100644 index 00000000000..819bed888ee --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-embed.https.sub.html @@ -0,0 +1,224 @@ + + + + + HTTP headers on request for HTML "embed" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-embed.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-embed.sub.html new file mode 100644 index 00000000000..b6e14a55e4a --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-embed.sub.html @@ -0,0 +1,190 @@ + + + + + HTTP headers on request for HTML "embed" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-frame.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-frame.https.sub.html new file mode 100644 index 00000000000..17504ff5635 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-frame.https.sub.html @@ -0,0 +1,309 @@ + + + + + HTTP headers on request for HTML "frame" element source + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-frame.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-frame.sub.html new file mode 100644 index 00000000000..2d9a7ec97d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-frame.sub.html @@ -0,0 +1,250 @@ + + + + + HTTP headers on request for HTML "frame" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-iframe.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-iframe.https.sub.html new file mode 100644 index 00000000000..fba1c8b9e02 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-iframe.https.sub.html @@ -0,0 +1,309 @@ + + + + + HTTP headers on request for HTML "frame" element source + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-iframe.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-iframe.sub.html new file mode 100644 index 00000000000..6f71cc0d254 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-iframe.sub.html @@ -0,0 +1,250 @@ + + + + + HTTP headers on request for HTML "frame" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img-environment-change.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img-environment-change.https.sub.html new file mode 100644 index 00000000000..a19aa117c4f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img-environment-change.https.sub.html @@ -0,0 +1,357 @@ + + + + + HTTP headers on image request triggered by change to environment + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img-environment-change.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img-environment-change.sub.html new file mode 100644 index 00000000000..96658726ba0 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img-environment-change.sub.html @@ -0,0 +1,270 @@ + + + + + HTTP headers on image request triggered by change to environment + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img.https.sub.html new file mode 100644 index 00000000000..51d6e082b0e --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img.https.sub.html @@ -0,0 +1,645 @@ + + + + + HTTP headers on request for HTML "img" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img.sub.html new file mode 100644 index 00000000000..5a4b152c552 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-img.sub.html @@ -0,0 +1,456 @@ + + + + + HTTP headers on request for HTML "img" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-input-image.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-input-image.https.sub.html new file mode 100644 index 00000000000..7fa674043e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-input-image.https.sub.html @@ -0,0 +1,229 @@ + + + + + HTTP headers on request for HTML "input" element with type="button" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-input-image.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-input-image.sub.html new file mode 100644 index 00000000000..fb2a146b199 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-input-image.sub.html @@ -0,0 +1,184 @@ + + + + + HTTP headers on request for HTML "input" element with type="button" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-icon.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-icon.https.sub.html new file mode 100644 index 00000000000..b2449607553 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-icon.https.sub.html @@ -0,0 +1,371 @@ + + + + + + HTTP headers on request for HTML "link" element with rel="icon" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-icon.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-icon.sub.html new file mode 100644 index 00000000000..e9226c190a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-icon.sub.html @@ -0,0 +1,279 @@ + + + + + + HTTP headers on request for HTML "link" element with rel="icon" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-prefetch.https.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-prefetch.https.optional.sub.html new file mode 100644 index 00000000000..bdd684a2679 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-prefetch.https.optional.sub.html @@ -0,0 +1,559 @@ + + + + + + HTTP headers on request for HTML "link" element with rel="prefetch" + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-prefetch.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-prefetch.optional.sub.html new file mode 100644 index 00000000000..c2244883cc9 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-link-prefetch.optional.sub.html @@ -0,0 +1,275 @@ + + + + + + HTTP headers on request for HTML "link" element with rel="prefetch" + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-meta-refresh.https.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-meta-refresh.https.optional.sub.html new file mode 100644 index 00000000000..3a1a8eb49af --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-meta-refresh.https.optional.sub.html @@ -0,0 +1,276 @@ + + + + + HTTP headers on request for HTML "meta" element with http-equiv="refresh" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-meta-refresh.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-meta-refresh.optional.sub.html new file mode 100644 index 00000000000..df3e92e2c8f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-meta-refresh.optional.sub.html @@ -0,0 +1,225 @@ + + + + + HTTP headers on request for HTML "meta" element with http-equiv="refresh" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-picture.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-picture.https.sub.html new file mode 100644 index 00000000000..ba6636a019a --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-picture.https.sub.html @@ -0,0 +1,997 @@ + + + + + HTTP headers on request for HTML "picture" element source + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-picture.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-picture.sub.html new file mode 100644 index 00000000000..64f851c682b --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-picture.sub.html @@ -0,0 +1,721 @@ + + + + + HTTP headers on request for HTML "picture" element source + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-script.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-script.https.sub.html new file mode 100644 index 00000000000..dcdcba2792d --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-script.https.sub.html @@ -0,0 +1,593 @@ + + + + + HTTP headers on request for HTML "script" element source + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-script.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-script.sub.html new file mode 100644 index 00000000000..a2526698fbd --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-script.sub.html @@ -0,0 +1,488 @@ + + + + + HTTP headers on request for HTML "script" element source + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video-poster.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video-poster.https.sub.html new file mode 100644 index 00000000000..5805b46bd0c --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video-poster.https.sub.html @@ -0,0 +1,243 @@ + + + + + HTTP headers on request for HTML "video" element "poster" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video-poster.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video-poster.sub.html new file mode 100644 index 00000000000..e6cc5ee7e06 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video-poster.sub.html @@ -0,0 +1,198 @@ + + + + + HTTP headers on request for HTML "video" element "poster" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video.https.sub.html new file mode 100644 index 00000000000..971360dceea --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video.https.sub.html @@ -0,0 +1,325 @@ + + + + + HTTP headers on request for HTML "video" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video.sub.html new file mode 100644 index 00000000000..9707413ab68 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/element-video.sub.html @@ -0,0 +1,229 @@ + + + + + HTTP headers on request for HTML "video" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/fetch-via-serviceworker.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/fetch-via-serviceworker.https.sub.html new file mode 100644 index 00000000000..22f930960d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/fetch-via-serviceworker.https.sub.html @@ -0,0 +1,683 @@ + + + + + + HTTP headers on request using the "fetch" API and passing through a Serive Worker + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/fetch.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/fetch.https.sub.html new file mode 100644 index 00000000000..dde1daede4e --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/fetch.https.sub.html @@ -0,0 +1,302 @@ + + + + + HTTP headers on request using the "fetch" API + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/fetch.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/fetch.sub.html new file mode 100644 index 00000000000..d28ea9bb900 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/fetch.sub.html @@ -0,0 +1,220 @@ + + + + + HTTP headers on request using the "fetch" API + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/form-submission.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/form-submission.https.sub.html new file mode 100644 index 00000000000..988b07c74a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/form-submission.https.sub.html @@ -0,0 +1,522 @@ + + + + + + HTTP headers on request for HTML form navigation + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/form-submission.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/form-submission.sub.html new file mode 100644 index 00000000000..f862062aebc --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/form-submission.sub.html @@ -0,0 +1,400 @@ + + + + + + HTTP headers on request for HTML form navigation + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/header-link.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/header-link.https.sub.html new file mode 100644 index 00000000000..09f01138955 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/header-link.https.sub.html @@ -0,0 +1,529 @@ + + + + + HTTP headers on request for HTTP "Link" header + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/header-link.https.sub.tentative.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/header-link.https.sub.tentative.html new file mode 100644 index 00000000000..307c37fbf77 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/header-link.https.sub.tentative.html @@ -0,0 +1,51 @@ + + + + + HTTP headers on request for HTTP "Link" header + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/header-link.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/header-link.sub.html new file mode 100644 index 00000000000..8b6cdae0eda --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/header-link.sub.html @@ -0,0 +1,460 @@ + + + + + HTTP headers on request for HTTP "Link" header + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/header-refresh.https.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/header-refresh.https.optional.sub.html new file mode 100644 index 00000000000..e63ee423cd7 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/header-refresh.https.optional.sub.html @@ -0,0 +1,273 @@ + + + + + + HTTP headers on request for HTTP "Refresh" header + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/header-refresh.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/header-refresh.optional.sub.html new file mode 100644 index 00000000000..4674ada9c6d --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/header-refresh.optional.sub.html @@ -0,0 +1,222 @@ + + + + + + HTTP headers on request for HTTP "Refresh" header + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-dynamic.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-dynamic.https.sub.html new file mode 100644 index 00000000000..72d60fc30cb --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-dynamic.https.sub.html @@ -0,0 +1,254 @@ + + + + + HTTP headers on request for dynamic ECMAScript module import + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-dynamic.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-dynamic.sub.html new file mode 100644 index 00000000000..088720c23e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-dynamic.sub.html @@ -0,0 +1,214 @@ + + + + + HTTP headers on request for dynamic ECMAScript module import + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-static.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-static.https.sub.html new file mode 100644 index 00000000000..cea3464f807 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-static.https.sub.html @@ -0,0 +1,288 @@ + + + + + HTTP headers on request for static ECMAScript module import + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-static.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-static.sub.html new file mode 100644 index 00000000000..0f94f71cf6f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/script-module-import-static.sub.html @@ -0,0 +1,246 @@ + + + + + HTTP headers on request for static ECMAScript module import + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/serviceworker.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/serviceworker.https.sub.html new file mode 100644 index 00000000000..12e37369a42 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/serviceworker.https.sub.html @@ -0,0 +1,170 @@ + + + + + + HTTP headers on request for Service Workers + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/svg-image.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/svg-image.https.sub.html new file mode 100644 index 00000000000..b059eb31456 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/svg-image.https.sub.html @@ -0,0 +1,367 @@ + + + + + + HTTP headers on request for SVG "image" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/svg-image.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/svg-image.sub.html new file mode 100644 index 00000000000..a28bbb12eb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/svg-image.sub.html @@ -0,0 +1,265 @@ + + + + + + HTTP headers on request for SVG "image" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/window-history.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/window-history.https.sub.html new file mode 100644 index 00000000000..c2b3079a6d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/window-history.https.sub.html @@ -0,0 +1,237 @@ + + + + + HTTP headers on request for navigation via the HTML History API + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/window-history.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/window-history.sub.html new file mode 100644 index 00000000000..333d90c2860 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/window-history.sub.html @@ -0,0 +1,360 @@ + + + + + + HTTP headers on request for navigation via the HTML History API + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/window-location.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/window-location.https.sub.html new file mode 100644 index 00000000000..4a0d2fdc068 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/window-location.https.sub.html @@ -0,0 +1,1184 @@ + + + + + + HTTP headers on request for navigation via the HTML Location API + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/window-location.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/window-location.sub.html new file mode 100644 index 00000000000..bb3e6805cb0 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/window-location.sub.html @@ -0,0 +1,894 @@ + + + + + + HTTP headers on request for navigation via the HTML Location API + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-constructor.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-constructor.https.sub.html new file mode 100644 index 00000000000..86f17607554 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-constructor.https.sub.html @@ -0,0 +1,118 @@ + + + + + HTTP headers on request for dedicated worker via the "Worker" constructor + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-constructor.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-constructor.sub.html new file mode 100644 index 00000000000..69ac7682a5c --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-constructor.sub.html @@ -0,0 +1,204 @@ + + + + + HTTP headers on request for dedicated worker via the "Worker" constructor + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-importscripts.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-importscripts.https.sub.html new file mode 100644 index 00000000000..0cd9f35d582 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-importscripts.https.sub.html @@ -0,0 +1,268 @@ + + + + + HTTP headers on request for dedicated worker via the "importScripts" API + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-importscripts.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-importscripts.sub.html new file mode 100644 index 00000000000..0555bbaf432 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/generated/worker-dedicated-importscripts.sub.html @@ -0,0 +1,228 @@ + + + + + HTTP headers on request for dedicated worker via the "importScripts" API + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/history.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/history.https.sub.html deleted file mode 100644 index f0119e6c754..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/history.https.sub.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/iframe.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/iframe.https.sub.html deleted file mode 100644 index 1c793fd7e45..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/iframe.https.sub.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/iframe.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/iframe.sub.html deleted file mode 100644 index e0d5b0b8cb8..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/iframe.sub.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/img.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/img.https.sub.html deleted file mode 100644 index 93acffef11a..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/img.https.sub.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/prefetch.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/prefetch.https.sub.html deleted file mode 100644 index a0ff73c0d08..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/prefetch.https.sub.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/cross-site-redirect.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/cross-site-redirect.https.sub.html deleted file mode 100644 index 827eb982e47..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/cross-site-redirect.https.sub.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-cross-site.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-cross-site.https.sub.html deleted file mode 100644 index fc986aaf4fd..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-cross-site.https.sub.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.sub.html deleted file mode 100644 index 970eb3373a0..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.sub.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.sub.html index 907cf5c617d..0f8f3200165 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.sub.html +++ b/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.sub.html @@ -6,68 +6,13 @@ - -
    Downgraded then upgraded font
    - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-same-site.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-same-site.https.sub.html deleted file mode 100644 index f5483ac3fa2..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-same-site.https.sub.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.sub.html deleted file mode 100644 index c69f0e92592..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.sub.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade.sub.html index 133576cb0d7..fa765b66d03 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade.sub.html +++ b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade.sub.html @@ -6,62 +6,12 @@ - -
    Upgraded font
    - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.sub.html deleted file mode 100644 index a446cbad840..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.sub.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-https-downgrade.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-https-downgrade.sub.html index 9eb04822b68..4e5a48e6f6e 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-https-downgrade.sub.html +++ b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-https-downgrade.sub.html @@ -6,64 +6,12 @@ - -
    Downgraded font
    - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/same-origin-redirect.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/same-origin-redirect.https.sub.html deleted file mode 100644 index 38921a71314..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/same-origin-redirect.https.sub.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/same-site-redirect.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/same-site-redirect.https.sub.html deleted file mode 100644 index f8709a14c0f..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/same-site-redirect.https.sub.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/report.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/report.https.sub.html index 1041094cd88..b65f7c0a244 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/report.https.sub.html +++ b/tests/wpt/web-platform-tests/fetch/metadata/report.https.sub.html @@ -3,11 +3,6 @@ - - - - - + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/appcache-iframe.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/resources/appcache-iframe.sub.html new file mode 100644 index 00000000000..cea9a4feaec --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/appcache-iframe.sub.html @@ -0,0 +1,15 @@ + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/es-module.sub.js b/tests/wpt/web-platform-tests/fetch/metadata/resources/es-module.sub.js new file mode 100644 index 00000000000..f9668a3dc67 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/es-module.sub.js @@ -0,0 +1 @@ +import '{{GET[moduleId]}}'; diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/fetch-via-serviceworker--respondWith--frame.html b/tests/wpt/web-platform-tests/fetch/metadata/resources/fetch-via-serviceworker--respondWith--frame.html deleted file mode 100644 index 98798025005..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/resources/fetch-via-serviceworker--respondWith--frame.html +++ /dev/null @@ -1,3 +0,0 @@ - - -Page Title diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/fetch-via-serviceworker--fallback--frame.html b/tests/wpt/web-platform-tests/fetch/metadata/resources/fetch-via-serviceworker-frame.html similarity index 100% rename from tests/wpt/web-platform-tests/fetch/metadata/resources/fetch-via-serviceworker--fallback--frame.html rename to tests/wpt/web-platform-tests/fetch/metadata/resources/fetch-via-serviceworker-frame.html diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/go-back.html b/tests/wpt/web-platform-tests/fetch/metadata/resources/go-back.html deleted file mode 100644 index 002c4cea473..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/resources/go-back.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/header-link.py b/tests/wpt/web-platform-tests/fetch/metadata/resources/header-link.py new file mode 100644 index 00000000000..de891163a33 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/header-link.py @@ -0,0 +1,15 @@ +def main(request, response): + """ + Respond with a blank HTML document and a `Link` header which describes + a link relation specified by the requests `location` and `rel` query string + parameters + """ + headers = [ + (b'Content-Type', b'text/html'), + ( + b'Link', + b'<' + request.GET.first(b'location') + b'>; rel=' + request.GET.first(b'rel') + ) + ] + return (200, headers, b'') + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/helper.js b/tests/wpt/web-platform-tests/fetch/metadata/resources/helper.js index 608a5297881..725f9a7e43b 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/resources/helper.js +++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/helper.js @@ -40,20 +40,3 @@ function assert_header_equals(value, expected, tag) { test(t => assert_equals(value.site, expected.site), `${tag}: sec-fetch-site`); test(t => assert_equals(value.user, expected.user), `${tag}: sec-fetch-user`); } - -/** - * @param {object} value - * @param {string} tag - **/ -function assert_no_headers(value, tag) { - if (typeof(value) === "string"){ - if (value == "No header has been recorded") return; - value = JSON.parse(value); - } - - test(t => assert_equals(value.mode, ""), `${tag}: sec-fetch-mode`); - test(t => assert_equals(value.site, ""), `${tag}: sec-fetch-site`); - if (expected.hasOwnProperty("user")) - test(t => assert_equals(value.user, ""), `${tag}: sec-fetch-user`); - test(t => assert_equals(value.dest, ""), `${tag}: sec-fetch-dest`); -} diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/helper.sub.js b/tests/wpt/web-platform-tests/fetch/metadata/resources/helper.sub.js new file mode 100644 index 00000000000..fd179fe6f25 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/helper.sub.js @@ -0,0 +1,67 @@ +'use strict'; + +/** + * Construct a URL which, when followed, will trigger redirection through zero + * or more specified origins and ultimately resolve in the Python handler + * `record-headers.py`. + * + * @param {string} key - the WPT server "stash" name where the request's + * headers should be stored + * @param {string[]} [origins] - zero or more origin names through which the + * request should pass; see the function + * implementation for a completel list of names + * and corresponding origins; If specified, the + * final origin will be used to access the + * `record-headers.py` hander. + * @param {object} [params] - a collection of key-value pairs to include as + * URL "search" parameters in the final request to + * `record-headers.py` + * + * @returns {string} an absolute URL + */ +function makeRequestURL(key, origins, params) { + const byName = { + httpOrigin: 'http://{{host}}:{{ports[http][0]}}', + httpSameSite: 'http://{{hosts[][www]}}:{{ports[http][0]}}', + httpCrossSite: 'http://{{hosts[alt][]}}:{{ports[http][0]}}', + httpsOrigin: 'https://{{host}}:{{ports[https][0]}}', + httpsSameSite: 'https://{{hosts[][www]}}:{{ports[https][0]}}', + httpsCrossSite: 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + }; + const redirectPath = '/fetch/api/resources/redirect.py?location='; + const path = '/fetch/metadata/resources/record-headers.py?key=' + key; + + let requestUrl = path; + if (params) { + requestUrl += '&' + new URLSearchParams(params).toString(); + } + + if (origins && origins.length) { + requestUrl = byName[origins.pop()] + requestUrl; + + while (origins.length) { + requestUrl = byName[origins.pop()] + redirectPath + + encodeURIComponent(requestUrl); + } + } else { + requestUrl = byName.httpsOrigin + requestUrl; + } + + return requestUrl; +} + +function retrieve(key, options) { + return fetch('/fetch/metadata/resources/record-headers.py?retrieve&key=' + key) + .then((response) => { + if (response.status === 204 && options && options.poll) { + return new Promise((resolve) => setTimeout(resolve, 300)) + .then(() => retrieve(key, options)); + } + + if (response.status !== 200) { + throw new Error('Failed to query for recorded headers.'); + } + + return response.text().then((text) => JSON.parse(text)); + }); +} diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/message-opener.html b/tests/wpt/web-platform-tests/fetch/metadata/resources/message-opener.html new file mode 100644 index 00000000000..eb2af7b250b --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/message-opener.html @@ -0,0 +1,17 @@ + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/post-to-owner-onload.py b/tests/wpt/web-platform-tests/fetch/metadata/resources/post-to-owner-onload.py deleted file mode 100644 index 8459edbd68a..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/resources/post-to-owner-onload.py +++ /dev/null @@ -1,34 +0,0 @@ -import json - -from wptserve.utils import isomorphic_decode - -def main(request, response): - headers = [ - (b"Content-Type", b"text/html"), - (b"Cache-Control", b"no-cache, no-store, must-revalidate") - ] - key = request.GET.first(b"key", None) - - body = u""" - - - - """ % (json.dumps({ - u"dest": isomorphic_decode(request.headers.get(b"sec-fetch-dest", b"")), - u"mode": isomorphic_decode(request.headers.get(b"sec-fetch-mode", b"")), - u"site": isomorphic_decode(request.headers.get(b"sec-fetch-site", b"")), - u"user": isomorphic_decode(request.headers.get(b"sec-fetch-user", b"")), - }), json.dumps(key)) - return headers, body diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py b/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py index f2e7273c53c..a6b52e1e4b9 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py +++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py @@ -138,3 +138,7 @@ def main(request, response): """ + + if key.startswith(b"script"): + response.headers.set(b"Content-Type", b"application/javascript") + return b"void 0;" diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/record-headers.py b/tests/wpt/web-platform-tests/fetch/metadata/resources/record-headers.py new file mode 100644 index 00000000000..0362fe228c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/record-headers.py @@ -0,0 +1,73 @@ +import os +import uuid +import hashlib +import time +import json + + +def bytes_to_strings(d): + # Recursively convert bytes to strings in `d`. + if not isinstance(d, dict): + if isinstance(d, (tuple,list,set)): + v = [bytes_to_strings(x) for x in d] + return v + else: + if isinstance(d, bytes): + d = d.decode() + return d + + result = {} + for k,v in d.items(): + if isinstance(k, bytes): + k = k.decode() + if isinstance(v, dict): + v = bytes_to_strings(v) + elif isinstance(v, (tuple,list,set)): + v = [bytes_to_strings(x) for x in v] + elif isinstance(v, bytes): + v = v.decode() + result[k] = v + return result + + +def main(request, response): + # This condition avoids false positives from CORS preflight checks, where the + # request under test may be followed immediately by a request to the same URL + # using a different HTTP method. + if b'requireOPTIONS' in request.GET and request.method != b'OPTIONS': + return + + if b'key' in request.GET: + key = request.GET[b'key'] + elif b'key' in request.POST: + key = request.POST[b'key'] + + ## Convert the key from String to UUID valid String ## + testId = hashlib.md5(key).hexdigest() + + ## Handle the header retrieval request ## + if b'retrieve' in request.GET: + recorded_headers = request.server.stash.take(testId) + + if recorded_headers is None: + return (204, [], b'') + + return (200, [], recorded_headers) + + ## Record incoming fetch metadata header value + else: + try: + request.server.stash.put(testId, json.dumps(bytes_to_strings(request.headers))) + except KeyError: + ## The header is already recorded or it doesn't exist + pass + + ## Prevent the browser from caching returned responses and allow CORS ## + response.headers.set(b"Access-Control-Allow-Origin", b"*") + response.headers.set(b"Cache-Control", b"no-cache, no-store, must-revalidate") + response.headers.set(b"Pragma", b"no-cache") + response.headers.set(b"Expires", b"0") + if b"mime" in request.GET: + response.headers.set(b"Content-Type", request.GET.first(b"mime")) + + return request.GET.first(b"body", request.POST.first(b"body", b"")) diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js b/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js index 0aec19d4ee7..1bfbbae70c2 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js +++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js @@ -38,56 +38,9 @@ function downgradeRedirectTo(partialPath) { return secureRedirectURL + encodeURIComponent(insecureTestURL + partialPath); } -// Helper to test the behavior of the `prefetch` Link type [1]. Because the the -// behavior under test is optional [2], this function should only be used in -// tests which have been denoted as "optional" [3]. -// -// [1] https://html.spec.whatwg.org/#link-type-prefetch -// [2] https://w3c.github.io/resource-hints/#load-and-error-events -// [3] https://web-platform-tests.org/writing-tests/file-names.html -function testPrefetch(nonce, testNamePrefix, urlHelperMethod, expectedResults) { - async_test(t => { - let key = 'prefetch' + nonce; - let e = document.createElement('link'); - e.rel = 'prefetch'; - e.crossOrigin = 'anonymous'; - e.href = urlHelperMethod('resources/record-header.py?file=' + key) + '&simple=true'; - e.onload = t.step_func(e => { - let expectation = { ...expectedResults }; - if (expectation['mode'] != '') - expectation['mode'] = 'cors'; - fetch('/fetch/metadata/resources/record-header.py?retrieve=true&file=' + key) - .then(t.step_func(response => response.text())) - .then(t.step_func_done(text => assert_header_equals(text, expectation, testNamePrefix + ' prefetch => No headers'))) - .catch(t.unreached_func('Fetching and verifying the results should succeed.')); - }); - e.onerror = t.unreached_func(); - document.head.appendChild(e); - }, testNamePrefix + ' prefetch => No headers'); -} - // Helper to run common redirect test cases that don't require special setup on // the test page itself. function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults) { - async_test(t => { - let i = document.createElement('iframe'); - i.src = urlHelperMethod('resources/post-to-owner.py?iframe-navigation' + nonce); - window.addEventListener('message', t.step_func(e => { - if (e.source != i.contentWindow) { - return; - } - let expectation = { ...expectedResults }; - if (expectation['mode'] != '') - expectation['mode'] = 'navigate'; - if (expectation['dest'] == 'font') - expectation['dest'] = 'iframe'; - assert_header_equals(e.data, expectation, testNamePrefix + ' iframe'); - t.done(); - })); - - document.body.appendChild(i); - }, testNamePrefix + ' iframe'); - async_test(t => { let testWindow = window.open(urlHelperMethod('resources/post-to-owner.py?top-level-navigation' + nonce)); t.add_cleanup(_ => testWindow.close()); @@ -127,18 +80,6 @@ function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults }); }, testNamePrefix + ' embed'); - promise_test(t => { - let key = 'fetch-redirect' + nonce; - let expectation = { ...expectedResults }; - if (expectation['mode'] != '') - expectation['mode'] = 'cors'; - if (expectation['dest'] == 'font') - expectation['dest'] = 'empty'; - return fetch(urlHelperMethod('resources/echo-as-json.py?' + key)) - .then(r => r.json()) - .then(j => {assert_header_equals(j, expectation, testNamePrefix + ' fetch() api');}); - }, testNamePrefix + ' fetch() api'); - promise_test(t => { return new Promise((resolve, reject) => { let key = 'object-https-redirect' + nonce; diff --git a/tests/wpt/web-platform-tests/fetch/metadata/script.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/script.https.sub.html deleted file mode 100644 index f66f6634334..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/script.https.sub.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/script.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/script.sub.html deleted file mode 100644 index 9d6059abc17..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/script.sub.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/serviceworker.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/serviceworker.https.sub.html deleted file mode 100644 index 51bc7f29e59..00000000000 --- a/tests/wpt/web-platform-tests/fetch/metadata/serviceworker.https.sub.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/README.md b/tests/wpt/web-platform-tests/fetch/metadata/tools/README.md new file mode 100644 index 00000000000..1c3bac2be5b --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/README.md @@ -0,0 +1,126 @@ +# Fetch Metadata test generation framework + +This directory defines a command-line tool for procedurally generating WPT +tests. + +## Motivation + +Many features of the web platform involve the browser making one or more HTTP +requests to remote servers. Only some aspects of these requests are specified +within the standard that defines the relevant feature. Other aspects are +specified by external standards which span the entire platform (e.g. [Fetch +Metadata Request Headers](https://w3c.github.io/webappsec-fetch-metadata/)). + +This state of affairs makes it difficult to maintain test coverage for two +reasons: + +- When a new feature introduces a new kind of web request, it must be verified + to integrate with every cross-cutting standard. +- When a new cross-cutting standard is introduced, it must be verified to + integrate with every kind of web request. + +The tool in this directory attempts to reduce this tension. It allows +maintainers to express instructions for making web requests in an abstract +sense. These generic instructions can be reused by to produce a different suite +of tests for each cross-cutting feature. + +When a new kind of request is proposed, a single generic template can be +defined here. This will provide the maintainers of all cross-cutting features +with clear instruction on how to extend their test suite with the new feature. + +Similarly, when a new cross-cutting feature is proposed, the authors can use +this tool to build a test suite which spans the entire platform. + +## Build script + +To generate the Fetch Metadata tests, run `./wpt update-built --include fetch` +in the root of the repository. + +## Configuration + +The test generation tool requires a YAML-formatted configuration file as its +input. The file should define a dictionary with the following keys: + +- `templates` - a string describing the filesystem path from which template + files should be loaded +- `output_directory` - a string describing the filesystem path where the + generated test files should be written +- `cases` - a list of dictionaries describing how the test templates should be + expanded with individual subtests; each dictionary should have the following + keys: + - `all_subtests` - properties which should be defined for every expansion + - `common_axis` - a list of dictionaries + - `template_axes` - a dictionary relating template names to properties that + should be used when expanding that particular template + +Internally, the tool creates a set of "subtests" for each template. This set is +the Cartesian product of the `common_axis` and the given template's entry in +the `template_axes` dictionary. It uses this set of subtests to expand the +template, creating an output file. Refer to the next section for a concrete +example of how the expansion is performed. + +In general, the tool will output a single file for each template. However, the +`filename_flags` attribute has special semantics. It is used to separate +subtests for the same template file. This is intended to accommodate [the +web-platform-test's filename-based +conventions](https://web-platform-tests.org/writing-tests/file-names.html). + +For instance, when `.https` is present in a test file's name, the WPT test +harness will load that test using the HTTPS protocol. Subtests which include +the value `https` in the `filename_flags` property will be expanded using the +appropriate template but written to a distinct file whose name includes +`.https`. + +The generation tool requires that the configuration file references every +template in the `templates` directory. Because templates and configuration +files may be contributed by different people, this requirement ensures that +configuration authors are aware of all available templates. Some templates may +not be relevant for some features; in those cases, the configuration file can +include an empty array for the template's entry in the `template_axes` +dictionary (as in `template3.html` in the example which follows). + +## Expansion example + +In the following example configuration file, `a`, `b`, `s`, `w`, `x`, `y`, and +`z` all represent associative arrays. + +```yaml +templates: path/to/templates +output_directory: path/to/output +cases: + - every_subtest: s + common_axis: [a, b] + template_axes: + template1.html: [w] + template2.html: [x, y, z] + template3.html: [] +``` + +When run with such a configuration file, the tool would generate two files, +expanded with data as described below (where `(a, b)` represents the union of +`a` and `b`): + + template1.html: [(a, w), (b, w)] + template2.html: [(a, x), (b, x), (a, y), (b, y), (a, z), (b, z)] + template3.html: (zero tests; not expanded) + +## Design Considerations + +**Efficiency of generated output** The tool is capable of generating a large +number of tests given a small amount of input. Naively structured, this could +result in test suites which take large amount of time and computational +resources to complete. The tool has been designed to help authors structure the +generated output to reduce these resource requirements. + +**Literalness of generated output** Because the generated output is how most +people will interact with the tests, it is important that it be approachable. +This tool avoids outputting abstractions which would frustrate attempts to read +the source code or step through its execution environment. + +**Simplicity** The test generation logic itself was written to be approachable. +This makes it easier to anticipate how the tool will behave with new input, and +it lowers the bar for others to contribute improvements. + +Non-goals include conciseness of template files (verbosity makes the potential +expansions more predictable) and conciseness of generated output (verbosity +aids in the interpretation of results). diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/fetch-metadata.conf.yml b/tests/wpt/web-platform-tests/fetch/metadata/tools/fetch-metadata.conf.yml new file mode 100644 index 00000000000..b277bcb7b53 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/fetch-metadata.conf.yml @@ -0,0 +1,806 @@ +--- +templates: templates +output_directory: ../generated +cases: + - all_subtests: + expected: NULL + filename_flags: [] + common_axis: + - headerName: sec-fetch-site + origins: [httpOrigin] + description: Not sent to non-trustworthy same-origin destination + - headerName: sec-fetch-site + origins: [httpSameSite] + description: Not sent to non-trustworthy same-site destination + - headerName: sec-fetch-site + origins: [httpCrossSite] + description: Not sent to non-trustworthy cross-site destination + - headerName: sec-fetch-mode + origins: [httpOrigin] + description: Not sent to non-trustworthy same-origin destination + - headerName: sec-fetch-mode + origins: [httpSameSite] + description: Not sent to non-trustworthy same-site destination + - headerName: sec-fetch-mode + origins: [httpCrossSite] + description: Not sent to non-trustworthy cross-site destination + - headerName: sec-fetch-dest + origins: [httpOrigin] + description: Not sent to non-trustworthy same-origin destination + - headerName: sec-fetch-dest + origins: [httpSameSite] + description: Not sent to non-trustworthy same-site destination + - headerName: sec-fetch-dest + origins: [httpCrossSite] + description: Not sent to non-trustworthy cross-site destination + - headerName: sec-fetch-user + origins: [httpOrigin] + description: Not sent to non-trustworthy same-origin destination + - headerName: sec-fetch-user + origins: [httpSameSite] + description: Not sent to non-trustworthy same-site destination + - headerName: sec-fetch-user + origins: [httpCrossSite] + description: Not sent to non-trustworthy cross-site destination + template_axes: + # Unused + appcache-manifest.sub.https.html: [] + # The `audioWorklet` interface is only available in secure contexts + # https://webaudio.github.io/web-audio-api/#BaseAudioContext + audioworklet.https.sub.html: [] + # Service workers are only available in secure context + fetch-via-serviceworker.https.sub.html: [] + # Service workers are only available in secure context + serviceworker.https.sub.html: [] + + css-images.sub.html: + - filename_flags: [tentative] + css-font-face.sub.html: + - filename_flags: [tentative] + element-a.sub.html: [{}] + element-area.sub.html: [{}] + element-audio.sub.html: [{}] + element-embed.sub.html: [{}] + element-frame.sub.html: [{}] + element-iframe.sub.html: [{}] + element-img.sub.html: + - sourceAttr: src + - sourceAttr: srcset + element-img-environment-change.sub.html: [{}] + element-input-image.sub.html: [{}] + element-link-icon.sub.html: [{}] + element-link-prefetch.optional.sub.html: [{}] + element-meta-refresh.optional.sub.html: [{}] + element-picture.sub.html: [{}] + element-script.sub.html: + - {} + - elementAttrs: { type: module } + element-video.sub.html: [{}] + element-video-poster.sub.html: [{}] + fetch.sub.html: [{}] + form-submission.sub.html: + - method: GET + - method: POST + header-link.sub.html: + - rel: icon + - rel: stylesheet + header-refresh.optional.sub.html: [{}] + window-location.sub.html: [{}] + script-module-import-dynamic.sub.html: [{}] + script-module-import-static.sub.html: [{}] + svg-image.sub.html: [{}] + window-history.sub.html: [{}] + worker-dedicated-importscripts.sub.html: [{}] + worker-dedicated-constructor.sub.html: [{}] + + # Sec-Fetch-Site - direct requests + - all_subtests: + headerName: sec-fetch-site + filename_flags: [https] + common_axis: + - description: Same origin + origins: [httpsOrigin] + expected: same-origin + - description: Cross-site + origins: [httpsCrossSite] + expected: cross-site + - description: Same site + origins: [httpsSameSite] + expected: same-site + template_axes: + # Unused + # - the request mode of all "classic" worker scripts is set to + # "same-origin" + # https://html.spec.whatwg.org/#fetch-a-classic-worker-script + # - the request mode of all "top-level "module" worker scripts is set to + # "same-origin": + # https://html.spec.whatwg.org/#fetch-a-single-module-script + worker-dedicated-constructor.sub.html: [] + + appcache-manifest.sub.https.html: [{}] + audioworklet.https.sub.html: [{}] + css-images.sub.html: + - filename_flags: [tentative] + css-font-face.sub.html: + - filename_flags: [tentative] + element-a.sub.html: [{}] + element-area.sub.html: [{}] + element-audio.sub.html: [{}] + element-embed.sub.html: [{}] + element-frame.sub.html: [{}] + element-iframe.sub.html: [{}] + element-img.sub.html: + - sourceAttr: src + - sourceAttr: srcset + element-img-environment-change.sub.html: [{}] + element-input-image.sub.html: [{}] + element-link-icon.sub.html: [{}] + element-link-prefetch.optional.sub.html: [{}] + element-meta-refresh.optional.sub.html: [{}] + element-picture.sub.html: [{}] + element-script.sub.html: + - {} + - elementAttrs: { type: module } + element-video.sub.html: [{}] + element-video-poster.sub.html: [{}] + fetch.sub.html: [{ init: { mode: no-cors } }] + fetch-via-serviceworker.https.sub.html: [{ init: { mode: no-cors } }] + form-submission.sub.html: + - method: GET + - method: POST + header-link.sub.html: + - rel: icon + - rel: stylesheet + header-refresh.optional.sub.html: [{}] + window-location.sub.html: [{}] + script-module-import-dynamic.sub.html: [{}] + script-module-import-static.sub.html: [{}] + serviceworker.https.sub.html: [{}] + svg-image.sub.html: [{}] + window-history.sub.html: [{}] + worker-dedicated-importscripts.sub.html: [{}] + + # Sec-Fetch-Site - redirection from HTTP + - all_subtests: + headerName: sec-fetch-site + filename_flags: [] + common_axis: + - description: HTTPS downgrade (header not sent) + origins: [httpsOrigin, httpOrigin] + expected: NULL + - description: HTTPS upgrade + origins: [httpOrigin, httpsOrigin] + expected: cross-site + - description: HTTPS downgrade-upgrade + origins: [httpsOrigin, httpOrigin, httpsOrigin] + expected: cross-site + template_axes: + # Unused + # The `audioWorklet` interface is only available in secure contexts + # https://webaudio.github.io/web-audio-api/#BaseAudioContext + audioworklet.https.sub.html: [] + # Service workers are only available in secure context + fetch-via-serviceworker.https.sub.html: [] + # Service workers' redirect mode is "error" + serviceworker.https.sub.html: [] + # Interstitial locations in an HTTP redirect chain are not added to the + # session history, so these requests cannot be initiated using the + # History API. + window-history.sub.html: [] + # Unused + # - the request mode of all "classic" worker scripts is set to + # "same-origin" + # https://html.spec.whatwg.org/#fetch-a-classic-worker-script + # - the request mode of all "top-level "module" worker scripts is set to + # "same-origin": + # https://html.spec.whatwg.org/#fetch-a-single-module-script + worker-dedicated-constructor.sub.html: [] + + appcache-manifest.sub.https.html: [{}] + css-images.sub.html: + - filename_flags: [tentative] + css-font-face.sub.html: + - filename_flags: [tentative] + element-a.sub.html: [{}] + element-area.sub.html: [{}] + element-audio.sub.html: [{}] + element-embed.sub.html: [{}] + element-frame.sub.html: [{}] + element-iframe.sub.html: [{}] + element-img.sub.html: + - sourceAttr: src + - sourceAttr: srcset + element-img-environment-change.sub.html: [{}] + element-input-image.sub.html: [{}] + element-link-icon.sub.html: [{}] + element-link-prefetch.optional.sub.html: [{}] + element-meta-refresh.optional.sub.html: [{}] + element-picture.sub.html: [{}] + element-script.sub.html: + - {} + - elementAttrs: { type: module } + element-video.sub.html: [{}] + element-video-poster.sub.html: [{}] + fetch.sub.html: [{}] + form-submission.sub.html: + - method: GET + - method: POST + header-link.sub.html: + - rel: icon + - rel: stylesheet + header-refresh.optional.sub.html: [{}] + window-location.sub.html: [{}] + script-module-import-dynamic.sub.html: [{}] + script-module-import-static.sub.html: [{}] + svg-image.sub.html: [{}] + worker-dedicated-importscripts.sub.html: [{}] + + # Sec-Fetch-Site - redirection from HTTPS + - all_subtests: + headerName: sec-fetch-site + filename_flags: [https] + common_axis: + - description: Same-Origin -> Cross-Site -> Same-Origin redirect + origins: [httpsOrigin, httpsCrossSite, httpsOrigin] + expected: cross-site + - description: Same-Origin -> Same-Site -> Same-Origin redirect + origins: [httpsOrigin, httpsSameSite, httpsOrigin] + expected: same-site + - description: Cross-Site -> Same Origin + origins: [httpsCrossSite, httpsOrigin] + expected: cross-site + - description: Cross-Site -> Same-Site + origins: [httpsCrossSite, httpsSameSite] + expected: cross-site + - description: Cross-Site -> Cross-Site + origins: [httpsCrossSite, httpsCrossSite] + expected: cross-site + - description: Same-Origin -> Same Origin + origins: [httpsOrigin, httpsOrigin] + expected: same-origin + - description: Same-Origin -> Same-Site + origins: [httpsOrigin, httpsSameSite] + expected: same-site + - description: Same-Origin -> Cross-Site + origins: [httpsOrigin, httpsCrossSite] + expected: cross-site + - description: Same-Site -> Same Origin + origins: [httpsSameSite, httpsOrigin] + expected: same-site + - description: Same-Site -> Same-Site + origins: [httpsSameSite, httpsSameSite] + expected: same-site + - description: Same-Site -> Cross-Site + origins: [httpsSameSite, httpsCrossSite] + expected: cross-site + template_axes: + # Service Workers' redirect mode is "error" + serviceworker.https.sub.html: [] + # Interstitial locations in an HTTP redirect chain are not added to the + # session history, so these requests cannot be initiated using the + # History API. + window-history.sub.html: [] + # Unused + # - the request mode of all "classic" worker scripts is set to + # "same-origin" + # https://html.spec.whatwg.org/#fetch-a-classic-worker-script + # - the request mode of all "top-level "module" worker scripts is set to + # "same-origin": + # https://html.spec.whatwg.org/#fetch-a-single-module-script + worker-dedicated-constructor.sub.html: [] + + appcache-manifest.sub.https.html: [{}] + audioworklet.https.sub.html: [{}] + css-images.sub.html: + - filename_flags: [tentative] + css-font-face.sub.html: + - filename_flags: [tentative] + element-a.sub.html: [{}] + element-area.sub.html: [{}] + element-audio.sub.html: [{}] + element-embed.sub.html: [{}] + element-frame.sub.html: [{}] + element-iframe.sub.html: [{}] + element-img.sub.html: + - sourceAttr: src + - sourceAttr: srcset + element-img-environment-change.sub.html: [{}] + element-input-image.sub.html: [{}] + element-link-icon.sub.html: [{}] + element-link-prefetch.optional.sub.html: [{}] + element-meta-refresh.optional.sub.html: [{}] + element-picture.sub.html: [{}] + element-script.sub.html: + - {} + - elementAttrs: { type: module } + element-video.sub.html: [{}] + element-video-poster.sub.html: [{}] + fetch.sub.html: [{ init: { mode: no-cors } }] + fetch-via-serviceworker.https.sub.html: [{ init: { mode: no-cors } }] + form-submission.sub.html: + - method: GET + - method: POST + header-link.sub.html: + - rel: icon + - rel: stylesheet + header-refresh.optional.sub.html: [{}] + window-location.sub.html: [{}] + script-module-import-dynamic.sub.html: [{}] + script-module-import-static.sub.html: [{}] + svg-image.sub.html: [{}] + worker-dedicated-importscripts.sub.html: [{}] + + # Sec-Fetch-Site - redirection with mixed content + # These tests verify the effect that redirection has on the request's "site". + # The initial request must be made to a resource that is "same-site" with its + # origin. This avoids false positives because if the request were made to a + # cross-site resource, the value of "cross-site" would be assigned regardless + # of the subseqent redirection. + # + # Because these conditions necessarily warrant mixed content, only templates + # which can be configured to allow mixed content [1] can be used. + # + # [1] https://w3c.github.io/webappsec-mixed-content/#should-block-fetch + + - common_axis: + - description: HTTPS downgrade-upgrade + headerName: sec-fetch-site + origins: [httpsOrigin, httpOrigin, httpsOrigin] + expected: cross-site + filename_flags: [https] + template_axes: + # Mixed Content considers only a small subset of requests as + # "optionally-blockable." These are the only requests that can be tested + # for the "downgrade-upgrade" scenario, so all other templates must be + # explicitly ignored. + audioworklet.https.sub.html: [] + css-font-face.sub.html: [] + element-embed.sub.html: [] + element-frame.sub.html: [] + element-iframe.sub.html: [] + element-img-environment-change.sub.html: [] + element-link-icon.sub.html: [] + element-link-prefetch.optional.sub.html: [] + element-picture.sub.html: [] + element-script.sub.html: [] + fetch.sub.html: [] + fetch-via-serviceworker.https.sub.html: [] + header-link.sub.html: [] + script-module-import-static.sub.html: [] + script-module-import-dynamic.sub.html: [] + # Service Workers' redirect mode is "error" + serviceworker.https.sub.html: [] + # Interstitial locations in an HTTP redirect chain are not added to the + # session history, so these requests cannot be initiated using the + # History API. + window-history.sub.html: [] + worker-dedicated-constructor.sub.html: [] + worker-dedicated-importscripts.sub.html: [] + # Avoid duplicate subtest for 'sec-fetch-site - HTTPS downgrade-upgrade' + appcache-manifest.sub.https.html: [] + css-images.sub.html: + - filename_flags: [tentative] + element-a.sub.html: [{}] + element-area.sub.html: [{}] + element-audio.sub.html: [{}] + element-img.sub.html: + # srcset omitted because it is not "optionally-blockable" + # https://w3c.github.io/webappsec-mixed-content/#category-optionally-blockable + - sourceAttr: src + element-input-image.sub.html: [{}] + element-meta-refresh.optional.sub.html: [{}] + element-video.sub.html: [{}] + element-video-poster.sub.html: [{}] + form-submission.sub.html: + - method: GET + - method: POST + header-refresh.optional.sub.html: [{}] + svg-image.sub.html: [{}] + window-location.sub.html: [{}] + + # Sec-Fetch-Mode + # These tests are served over HTTPS so the induced requests will be both + # same-origin with the document [1] and a potentially-trustworthy URL [2]. + # + # [1] https://html.spec.whatwg.org/multipage/origin.html#same-origin + # [2] https://w3c.github.io/webappsec-secure-contexts/#potentially-trustworthy-url + - common_axis: + - headerName: sec-fetch-mode + filename_flags: [https] + origins: [] + template_axes: + appcache-manifest.sub.https.html: + - expected: no-cors + audioworklet.https.sub.html: + # https://html.spec.whatwg.org/multipage/webappapis.html#fetch-a-single-module-script + - expected: cors + css-images.sub.html: + - expected: no-cors + filename_flags: [tentative] + css-font-face.sub.html: + - expected: cors + filename_flags: [tentative] + element-a.sub.html: + - expected: navigate + # https://html.spec.whatwg.org/multipage/links.html#downloading-hyperlinks + - elementAttrs: {download: ''} + expected: no-cors + element-area.sub.html: + - expected: navigate + # https://html.spec.whatwg.org/multipage/links.html#downloading-hyperlinks + - elementAttrs: {download: ''} + expected: no-cors + element-audio.sub.html: + - expected: no-cors + - expected: cors + elementAttrs: { crossorigin: '' } + - expected: cors + elementAttrs: { crossorigin: anonymous } + - expected: cors + elementAttrs: { crossorigin: use-credentials } + element-embed.sub.html: + - expected: no-cors + element-frame.sub.html: + - expected: navigate + element-iframe.sub.html: + - expected: navigate + element-img.sub.html: + - sourceAttr: src + expected: no-cors + - sourceAttr: src + expected: cors + elementAttrs: { crossorigin: '' } + - sourceAttr: src + expected: cors + elementAttrs: { crossorigin: anonymous } + - sourceAttr: src + expected: cors + elementAttrs: { crossorigin: use-credentials } + - sourceAttr: srcset + expected: no-cors + - sourceAttr: srcset + expected: cors + elementAttrs: { crossorigin: '' } + - sourceAttr: srcset + expected: cors + elementAttrs: { crossorigin: anonymous } + - sourceAttr: srcset + expected: cors + elementAttrs: { crossorigin: use-credentials } + element-img-environment-change.sub.html: + - expected: no-cors + - expected: cors + elementAttrs: { crossorigin: '' } + - expected: cors + elementAttrs: { crossorigin: anonymous } + - expected: cors + elementAttrs: { crossorigin: use-credentials } + element-input-image.sub.html: + - expected: no-cors + element-link-icon.sub.html: + - expected: no-cors + - expected: cors + elementAttrs: { crossorigin: '' } + - expected: cors + elementAttrs: { crossorigin: anonymous } + - expected: cors + elementAttrs: { crossorigin: use-credentials } + element-link-prefetch.optional.sub.html: + - expected: no-cors + - expected: cors + elementAttrs: { crossorigin: '' } + - expected: cors + elementAttrs: { crossorigin: anonymous } + - expected: cors + elementAttrs: { crossorigin: use-credentials } + element-meta-refresh.optional.sub.html: + - expected: navigate + element-picture.sub.html: + - expected: no-cors + - expected: cors + elementAttrs: { crossorigin: '' } + - expected: cors + elementAttrs: { crossorigin: anonymous } + - expected: cors + elementAttrs: { crossorigin: use-credentials } + element-script.sub.html: + - expected: no-cors + - expected: cors + elementAttrs: { type: module } + - expected: cors + elementAttrs: { crossorigin: '' } + - expected: cors + elementAttrs: { crossorigin: anonymous } + - expected: cors + elementAttrs: { crossorigin: use-credentials } + element-video.sub.html: + - expected: no-cors + - expected: cors + elementAttrs: { crossorigin: '' } + - expected: cors + elementAttrs: { crossorigin: anonymous } + - expected: cors + elementAttrs: { crossorigin: use-credentials } + element-video-poster.sub.html: + - expected: no-cors + fetch.sub.html: + - expected: cors + - expected: cors + init: { mode: cors } + - expected: no-cors + init: { mode: no-cors } + - expected: same-origin + init: { mode: same-origin } + fetch-via-serviceworker.https.sub.html: + - expected: cors + - expected: cors + init: { mode: cors } + - expected: no-cors + init: { mode: no-cors } + - expected: same-origin + init: { mode: same-origin } + form-submission.sub.html: + - method: GET + expected: navigate + - method: POST + expected: navigate + header-link.sub.html: + - rel: icon + expected: no-cors + - rel: stylesheet + expected: no-cors + header-refresh.optional.sub.html: + - expected: navigate + window-history.sub.html: + - expected: navigate + window-location.sub.html: + - expected: navigate + script-module-import-dynamic.sub.html: + - expected: cors + script-module-import-static.sub.html: + - expected: cors + # https://svgwg.org/svg2-draft/linking.html#processingURL-fetch + svg-image.sub.html: + - expected: no-cors + - expected: cors + elementAttrs: { crossorigin: '' } + - expected: cors + elementAttrs: { crossorigin: anonymous } + - expected: cors + elementAttrs: { crossorigin: use-credentials } + serviceworker.https.sub.html: + - expected: same-origin + options: { type: 'classic' } + # https://github.com/whatwg/html/pull/5875 + - expected: same-origin + worker-dedicated-constructor.sub.html: + - expected: same-origin + - options: { type: module } + expected: same-origin + worker-dedicated-importscripts.sub.html: + - expected: no-cors + + # Sec-Fetch-Dest + - common_axis: + - headerName: sec-fetch-dest + filename_flags: [https] + origins: [] + template_axes: + appcache-manifest.sub.https.html: + - expected: empty + audioworklet.https.sub.html: + # https://github.com/WebAudio/web-audio-api/issues/2203 + - expected: audioworklet + css-images.sub.html: + - expected: image + filename_flags: [tentative] + css-font-face.sub.html: + - expected: font + filename_flags: [tentative] + element-a.sub.html: + - expected: document + # https://html.spec.whatwg.org/multipage/links.html#downloading-hyperlinks + - elementAttrs: {download: ''} + expected: empty + element-area.sub.html: + - expected: document + # https://html.spec.whatwg.org/multipage/links.html#downloading-hyperlinks + - elementAttrs: {download: ''} + expected: empty + element-audio.sub.html: + - expected: audio + element-embed.sub.html: + - expected: embed + element-frame.sub.html: + # https://github.com/whatwg/html/pull/4976 + - expected: frame + element-iframe.sub.html: + # https://github.com/whatwg/html/pull/4976 + - expected: iframe + element-img.sub.html: + - sourceAttr: src + expected: image + - sourceAttr: srcset + expected: image + element-img-environment-change.sub.html: + - expected: image + element-input-image.sub.html: + - expected: image + element-link-icon.sub.html: + - expected: empty + element-link-prefetch.optional.sub.html: + - expected: empty + - elementAttrs: { as: audio } + expected: audio + - elementAttrs: { as: document } + expected: document + - elementAttrs: { as: embed } + expected: embed + - elementAttrs: { as: fetch } + expected: fetch + - elementAttrs: { as: font } + expected: font + - elementAttrs: { as: image } + expected: image + - elementAttrs: { as: object } + expected: object + - elementAttrs: { as: script } + expected: script + - elementAttrs: { as: style } + expected: style + - elementAttrs: { as: track } + expected: track + - elementAttrs: { as: video } + expected: video + - elementAttrs: { as: worker } + expected: worker + element-meta-refresh.optional.sub.html: + - expected: document + element-picture.sub.html: + - expected: image + element-script.sub.html: + - expected: script + element-video.sub.html: + - expected: video + element-video-poster.sub.html: + - expected: image + fetch.sub.html: + - expected: empty + fetch-via-serviceworker.https.sub.html: + - expected: empty + form-submission.sub.html: + - method: GET + expected: document + - method: POST + expected: document + header-link.sub.html: + - rel: icon + expected: empty + - rel: stylesheet + filename_flags: [tentative] + expected: style + header-refresh.optional.sub.html: + - expected: document + window-history.sub.html: + - expected: document + window-location.sub.html: + - expected: document + script-module-import-dynamic.sub.html: + - expected: script + script-module-import-static.sub.html: + - expected: script + serviceworker.https.sub.html: + - expected: serviceworker + # Implemented as "image" in Chromium and Firefox, but specified as + # "empty" + # https://github.com/w3c/svgwg/issues/782 + svg-image.sub.html: + - expected: empty + worker-dedicated-constructor.sub.html: + - expected: worker + - options: { type: module } + expected: worker + worker-dedicated-importscripts.sub.html: + - expected: script + + # Sec-Fetch-User + - common_axis: + - headerName: sec-fetch-user + filename_flags: [https] + origins: [] + template_axes: + appcache-manifest.sub.https.html: + - expected: NULL + audioworklet.https.sub.html: + - expected: NULL + css-images.sub.html: + - expected: NULL + filename_flags: [tentative] + css-font-face.sub.html: + - expected: NULL + filename_flags: [tentative] + element-a.sub.html: + - expected: NULL + - userActivated: TRUE + expected: ?1 + element-area.sub.html: + - expected: NULL + - userActivated: TRUE + expected: ?1 + element-audio.sub.html: + - expected: NULL + element-embed.sub.html: + - expected: NULL + element-frame.sub.html: + - expected: NULL + - userActivated: TRUE + expected: ?1 + element-iframe.sub.html: + - expected: NULL + - userActivated: TRUE + expected: ?1 + element-img.sub.html: + - sourceAttr: src + expected: NULL + - sourceAttr: srcset + expected: NULL + element-img-environment-change.sub.html: + - expected: NULL + element-input-image.sub.html: + - expected: NULL + element-link-icon.sub.html: + - expected: NULL + element-link-prefetch.optional.sub.html: + - expected: NULL + element-meta-refresh.optional.sub.html: + - expected: NULL + element-picture.sub.html: + - expected: NULL + element-script.sub.html: + - expected: NULL + element-video.sub.html: + - expected: NULL + element-video-poster.sub.html: + - expected: NULL + fetch.sub.html: + - expected: NULL + fetch-via-serviceworker.https.sub.html: + - expected: NULL + form-submission.sub.html: + - method: GET + expected: NULL + - method: GET + userActivated: TRUE + expected: ?1 + - method: POST + expected: NULL + - method: POST + userActivated: TRUE + expected: ?1 + header-link.sub.html: + - rel: icon + expected: NULL + - rel: stylesheet + expected: NULL + header-refresh.optional.sub.html: + - expected: NULL + window-history.sub.html: + - expected: NULL + window-location.sub.html: + - expected: NULL + - userActivated: TRUE + expected: ?1 + script-module-import-dynamic.sub.html: + - expected: NULL + script-module-import-static.sub.html: + - expected: NULL + serviceworker.https.sub.html: + - expected: NULL + svg-image.sub.html: + - expected: NULL + worker-dedicated-constructor.sub.html: + - expected: NULL + - options: { type: module } + expected: NULL + worker-dedicated-importscripts.sub.html: + - expected: NULL diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/generate.py b/tests/wpt/web-platform-tests/fetch/metadata/tools/generate.py new file mode 100755 index 00000000000..fa850c8c8a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/generate.py @@ -0,0 +1,195 @@ +#!/usr/bin/env python3 + +import itertools +import os + +import jinja2 +import yaml + +HERE = os.path.abspath(os.path.dirname(__file__)) +PROJECT_ROOT = os.path.join(HERE, '..', '..', '..') + +def find_templates(starting_directory): + for directory, subdirectories, file_names in os.walk(starting_directory): + for file_name in file_names: + if file_name.startswith('.'): + continue + yield file_name, os.path.join(directory, file_name) + +def test_name(directory, template_name, subtest_flags): + ''' + Create a test name based on a template and the WPT file name flags [1] + required for a given subtest. This name is used to determine how subtests + may be grouped together. In order to promote grouping, the combination uses + a few aspects of how file name flags are interpreted: + + - repeated flags have no effect, so duplicates are removed + - flag sequence does not matter, so flags are consistently sorted + + directory | template_name | subtest_flags | result + ----------|------------------|-----------------|------- + cors | image.html | [] | cors/image.html + cors | image.https.html | [] | cors/image.https.html + cors | image.html | [https] | cors/image.https.html + cors | image.https.html | [https] | cors/image.https.html + cors | image.https.html | [https] | cors/image.https.html + cors | image.sub.html | [https] | cors/image.https.sub.html + cors | image.https.html | [sub] | cors/image.https.sub.html + + [1] docs/writing-tests/file-names.md + ''' + template_name_parts = template_name.split('.') + flags = set(subtest_flags) | set(template_name_parts[1:-1]) + test_name_parts = ( + [template_name_parts[0]] + + sorted(flags) + + [template_name_parts[-1]] + ) + return os.path.join(directory, '.'.join(test_name_parts)) + +def merge(a, b): + if type(a) != type(b): + raise Exception('Cannot merge disparate types') + if type(a) == list: + return a + b + if type(a) == dict: + merged = {} + + for key in a: + if key in b: + merged[key] = merge(a[key], b[key]) + else: + merged[key] = a[key] + + for key in b: + if not key in a: + merged[key] = b[key] + + return merged + + raise Exception('Cannot merge {} type'.format(type(a).__name__)) + +def product(a, b): + ''' + Given two lists of objects, compute their Cartesian product by merging the + elements together. For example, + + product( + [{'a': 1}, {'b': 2}], + [{'c': 3}, {'d': 4}, {'e': 5}] + ) + + returns the following list: + + [ + {'a': 1, 'c': 3}, + {'a': 1, 'd': 4}, + {'a': 1, 'e': 5}, + {'b': 2, 'c': 3}, + {'b': 2, 'd': 4}, + {'b': 2, 'e': 5} + ] + ''' + result = [] + + for a_object in a: + for b_object in b: + result.append(merge(a_object, b_object)) + + return result + +def make_provenance(project_root, cases, template): + return '\n'.join([ + 'This test was procedurally generated. Please do not modify it directly.', + 'Sources:', + '- {}'.format(os.path.relpath(cases, project_root)), + '- {}'.format(os.path.relpath(template, project_root)) + ]) + +def collection_filter(obj, title): + if not obj: + return 'no {}'.format(title) + + members = [] + for name, value in obj.items(): + if value == '': + members.append(name) + else: + members.append('{}={}'.format(name, value)) + + return '{}: {}'.format(title, ', '.join(members)) + +def pad_filter(value, side, padding): + if not value: + return '' + if side == 'start': + return padding + value + + return value + padding + +def main(config_file): + with open(config_file, 'r') as handle: + config = yaml.safe_load(handle.read()) + + templates_directory = os.path.normpath( + os.path.join(os.path.dirname(config_file), config['templates']) + ) + + environment = jinja2.Environment( + variable_start_string='[%', + variable_end_string='%]' + ) + environment.filters['collection'] = collection_filter + environment.filters['pad'] = pad_filter + templates = {} + subtests = {} + + for template_name, path in find_templates(templates_directory): + subtests[template_name] = [] + with open(path, 'r') as handle: + templates[template_name] = environment.from_string(handle.read()) + + for case in config['cases']: + unused_templates = set(templates) - set(case['template_axes']) + + # This warning is intended to help authors avoid mistakenly omitting + # templates. It can be silenced by extending the`template_axes` + # dictionary with an empty list for templates which are intentionally + # unused. + if unused_templates: + print( + 'Warning: case does not reference the following templates:' + ) + print('\n'.join('- {}'.format(name) for name in unused_templates)) + + common_axis = product( + case['common_axis'], [case.get('all_subtests', {})] + ) + + for template_name, template_axis in case['template_axes'].items(): + subtests[template_name].extend(product(common_axis, template_axis)) + + for template_name, template in templates.items(): + provenance = make_provenance( + PROJECT_ROOT, + config_file, + os.path.join(templates_directory, template_name) + ) + get_filename = lambda subtest: test_name( + config['output_directory'], + template_name, + subtest['filename_flags'] + ) + subtests_by_filename = itertools.groupby( + sorted(subtests[template_name], key=get_filename), + key=get_filename + ) + for filename, some_subtests in subtests_by_filename: + with open(filename, 'w') as handle: + handle.write(templates[template_name].render( + subtests=list(some_subtests), + provenance=provenance + ) + '\n') + +if __name__ == '__main__': + main('fetch-metadata.conf.yml') diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/appcache-manifest.sub.https.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/appcache-manifest.sub.https.html new file mode 100644 index 00000000000..0dfc084f2e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/appcache-manifest.sub.https.html @@ -0,0 +1,63 @@ + + + + + HTTP headers on request for Appcache manifest + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/audioworklet.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/audioworklet.https.sub.html new file mode 100644 index 00000000000..7be309c5068 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/audioworklet.https.sub.html @@ -0,0 +1,53 @@ + + + + + HTTP headers on request for AudioWorklet module + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/css-font-face.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/css-font-face.sub.html new file mode 100644 index 00000000000..94b33f4e6b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/css-font-face.sub.html @@ -0,0 +1,60 @@ + + + + + HTTP headers on request for CSS font-face + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/css-images.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/css-images.sub.html new file mode 100644 index 00000000000..e394f9f5b06 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/css-images.sub.html @@ -0,0 +1,137 @@ + + + + + {%- if subtests|length > 10 %} + + {%- endif %} + HTTP headers on request for CSS image-accepting properties + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-a.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-a.sub.html new file mode 100644 index 00000000000..2bd8e8a40e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-a.sub.html @@ -0,0 +1,72 @@ + + + + + {%- if subtests|length > 10 %} + + {%- endif %} + HTTP headers on request for HTML "a" element navigation + + + {%- if subtests|selectattr('userActivated')|list %} + + + {%- endif %} + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-area.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-area.sub.html new file mode 100644 index 00000000000..0cef5b22941 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-area.sub.html @@ -0,0 +1,72 @@ + + + + + {%- if subtests|length > 10 %} + + {%- endif %} + HTTP headers on request for HTML "area" element navigation + + + {%- if subtests|selectattr('userActivated')|list %} + + + {%- endif %} + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-audio.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-audio.sub.html new file mode 100644 index 00000000000..92bc22198e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-audio.sub.html @@ -0,0 +1,51 @@ + + + + + HTTP headers on request for HTML "audio" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-embed.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-embed.sub.html new file mode 100644 index 00000000000..18ce09e5fdc --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-embed.sub.html @@ -0,0 +1,54 @@ + + + + + HTTP headers on request for HTML "embed" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-frame.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-frame.sub.html new file mode 100644 index 00000000000..ce90171779a --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-frame.sub.html @@ -0,0 +1,62 @@ + + + + + HTTP headers on request for HTML "frame" element source + + + {%- if subtests|selectattr('userActivated')|list %} + + + {%- endif %} + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-iframe.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-iframe.sub.html new file mode 100644 index 00000000000..43a632a15cd --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-iframe.sub.html @@ -0,0 +1,62 @@ + + + + + HTTP headers on request for HTML "frame" element source + + + {%- if subtests|selectattr('userActivated')|list %} + + + {%- endif %} + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-img-environment-change.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-img-environment-change.sub.html new file mode 100644 index 00000000000..5a65114f184 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-img-environment-change.sub.html @@ -0,0 +1,78 @@ + + + + + HTTP headers on image request triggered by change to environment + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-img.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-img.sub.html new file mode 100644 index 00000000000..1dac5843ecd --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-img.sub.html @@ -0,0 +1,52 @@ + + + + + HTTP headers on request for HTML "img" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-input-image.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-input-image.sub.html new file mode 100644 index 00000000000..3c50008433c --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-input-image.sub.html @@ -0,0 +1,48 @@ + + + + + HTTP headers on request for HTML "input" element with type="button" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-link-icon.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-link-icon.sub.html new file mode 100644 index 00000000000..18ce12a6898 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-link-icon.sub.html @@ -0,0 +1,75 @@ + + + + + {%- if subtests|length > 10 %} + + {%- endif %} + HTTP headers on request for HTML "link" element with rel="icon" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-link-prefetch.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-link-prefetch.optional.sub.html new file mode 100644 index 00000000000..59d677d8d67 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-link-prefetch.optional.sub.html @@ -0,0 +1,71 @@ + + + + + {%- if subtests|length > 10 %} + + {%- endif %} + HTTP headers on request for HTML "link" element with rel="prefetch" + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-meta-refresh.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-meta-refresh.optional.sub.html new file mode 100644 index 00000000000..5a8d8f8ecd2 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-meta-refresh.optional.sub.html @@ -0,0 +1,60 @@ + + + + + HTTP headers on request for HTML "meta" element with http-equiv="refresh" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-picture.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-picture.sub.html new file mode 100644 index 00000000000..903aeed1f37 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-picture.sub.html @@ -0,0 +1,101 @@ + + + + + HTTP headers on request for HTML "picture" element source + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-script.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-script.sub.html new file mode 100644 index 00000000000..4a281ae5192 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-script.sub.html @@ -0,0 +1,54 @@ + + + + + HTTP headers on request for HTML "script" element source + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-video-poster.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-video-poster.sub.html new file mode 100644 index 00000000000..9cdaf063ace --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-video-poster.sub.html @@ -0,0 +1,62 @@ + + + + + HTTP headers on request for HTML "video" element "poster" + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-video.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-video.sub.html new file mode 100644 index 00000000000..1b7b976d7c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/element-video.sub.html @@ -0,0 +1,51 @@ + + + + + HTTP headers on request for HTML "video" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/fetch-via-serviceworker.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/fetch-via-serviceworker.https.sub.html new file mode 100644 index 00000000000..eead7102008 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/fetch-via-serviceworker.https.sub.html @@ -0,0 +1,88 @@ + + + + + {%- if subtests|length > 10 %} + + {%- endif %} + HTTP headers on request using the "fetch" API and passing through a Serive Worker + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/fetch.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/fetch.sub.html new file mode 100644 index 00000000000..a8dc5368f8b --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/fetch.sub.html @@ -0,0 +1,42 @@ + + + + + HTTP headers on request using the "fetch" API + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/form-submission.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/form-submission.sub.html new file mode 100644 index 00000000000..4c9c8c50f82 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/form-submission.sub.html @@ -0,0 +1,87 @@ + + + + + + HTTP headers on request for HTML form navigation + + + {%- if subtests|selectattr('userActivated')|list %} + + + {%- endif %} + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/header-link.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/header-link.sub.html new file mode 100644 index 00000000000..2831f221d5c --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/header-link.sub.html @@ -0,0 +1,56 @@ + + + + + HTTP headers on request for HTTP "Link" header + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/header-refresh.optional.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/header-refresh.optional.sub.html new file mode 100644 index 00000000000..ec963d5cc00 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/header-refresh.optional.sub.html @@ -0,0 +1,59 @@ + + + + + {%- if subtests|length > 10 %} + + {%- endif %} + HTTP headers on request for HTTP "Refresh" header + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/script-module-import-dynamic.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/script-module-import-dynamic.sub.html new file mode 100644 index 00000000000..653d3cdec44 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/script-module-import-dynamic.sub.html @@ -0,0 +1,35 @@ + + + + + HTTP headers on request for dynamic ECMAScript module import + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/script-module-import-static.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/script-module-import-static.sub.html new file mode 100644 index 00000000000..c8d5f9532a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/script-module-import-static.sub.html @@ -0,0 +1,53 @@ + + + + + HTTP headers on request for static ECMAScript module import + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/serviceworker.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/serviceworker.https.sub.html new file mode 100644 index 00000000000..82843255469 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/serviceworker.https.sub.html @@ -0,0 +1,72 @@ + + + + + + HTTP headers on request for Service Workers + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/svg-image.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/svg-image.sub.html new file mode 100644 index 00000000000..52f7806b33c --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/svg-image.sub.html @@ -0,0 +1,75 @@ + + + + + {%- if subtests|length > 10 %} + + {%- endif %} + HTTP headers on request for SVG "image" element source + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/window-history.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/window-history.sub.html new file mode 100644 index 00000000000..286d019887d --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/window-history.sub.html @@ -0,0 +1,134 @@ + + + + + {%- if subtests|length > 10 %} + + {%- endif %} + HTTP headers on request for navigation via the HTML History API + + + {%- if subtests|selectattr('userActivated')|list %} + + + {%- endif %} + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/window-location.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/window-location.sub.html new file mode 100644 index 00000000000..96f39123616 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/window-location.sub.html @@ -0,0 +1,128 @@ + + + + + {%- if subtests|length > 10 %} + + {%- endif %} + HTTP headers on request for navigation via the HTML Location API + + + {%- if subtests|selectattr('userActivated')|list %} + + + {%- endif %} + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/worker-dedicated-constructor.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/worker-dedicated-constructor.sub.html new file mode 100644 index 00000000000..fede5965d3a --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/worker-dedicated-constructor.sub.html @@ -0,0 +1,49 @@ + + + + + HTTP headers on request for dedicated worker via the "Worker" constructor + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/worker-dedicated-importscripts.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/worker-dedicated-importscripts.sub.html new file mode 100644 index 00000000000..93e6374d54b --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/metadata/tools/templates/worker-dedicated-importscripts.sub.html @@ -0,0 +1,54 @@ + + + + + HTTP headers on request for dedicated worker via the "importScripts" API + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/nosniff/resources/x-content-type-options.json b/tests/wpt/web-platform-tests/fetch/nosniff/resources/x-content-type-options.json index 0a8c490756e..080fc1990bf 100644 --- a/tests/wpt/web-platform-tests/fetch/nosniff/resources/x-content-type-options.json +++ b/tests/wpt/web-platform-tests/fetch/nosniff/resources/x-content-type-options.json @@ -27,6 +27,10 @@ "input": "X-Content-Type-Options:\r\nX-Content-Type-Options: nosniff", "nosniff": false }, + { + "input": "X-Content-Type-Options: nosniff\r\nX-Content-Type-Options: nosniff", + "nosniff": true + }, { "input": "X-Content-Type-Options: ,nosniff", "nosniff": false diff --git a/tests/wpt/web-platform-tests/fetch/orb/resources/js-unlabeled.js b/tests/wpt/web-platform-tests/fetch/orb/resources/js-unlabeled.js new file mode 100644 index 00000000000..a880a5bc724 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/orb/resources/js-unlabeled.js @@ -0,0 +1 @@ +window.has_executed_script = true; diff --git a/tests/wpt/web-platform-tests/fetch/orb/resources/png-mislabeled-as-html.png b/tests/wpt/web-platform-tests/fetch/orb/resources/png-mislabeled-as-html.png new file mode 100644 index 00000000000..820f8cace21 Binary files /dev/null and b/tests/wpt/web-platform-tests/fetch/orb/resources/png-mislabeled-as-html.png differ diff --git a/tests/wpt/web-platform-tests/fetch/orb/resources/png-mislabeled-as-html.png.headers b/tests/wpt/web-platform-tests/fetch/orb/resources/png-mislabeled-as-html.png.headers new file mode 100644 index 00000000000..156209f9c81 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/orb/resources/png-mislabeled-as-html.png.headers @@ -0,0 +1 @@ +Content-Type: text/html diff --git a/tests/wpt/web-platform-tests/fetch/orb/resources/png-unlabeled.png b/tests/wpt/web-platform-tests/fetch/orb/resources/png-unlabeled.png new file mode 100644 index 00000000000..820f8cace21 Binary files /dev/null and b/tests/wpt/web-platform-tests/fetch/orb/resources/png-unlabeled.png differ diff --git a/tests/wpt/web-platform-tests/fetch/orb/tentative/img-mime-types-coverage.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/orb/tentative/img-mime-types-coverage.tentative.sub.html new file mode 100644 index 00000000000..5dc6c5d63af --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/orb/tentative/img-mime-types-coverage.tentative.sub.html @@ -0,0 +1,126 @@ + + + +
    + + diff --git a/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-mislabeled-as-html.sub-ref.html b/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-mislabeled-as-html.sub-ref.html new file mode 100644 index 00000000000..66462fb5e3c --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-mislabeled-as-html.sub-ref.html @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-mislabeled-as-html.sub.html b/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-mislabeled-as-html.sub.html new file mode 100644 index 00000000000..aa03f4db636 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-mislabeled-as-html.sub.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-unlabeled.sub-ref.html b/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-unlabeled.sub-ref.html new file mode 100644 index 00000000000..2d5e3bb8b58 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-unlabeled.sub-ref.html @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-unlabeled.sub.html b/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-unlabeled.sub.html new file mode 100644 index 00000000000..77415f6af1d --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/orb/tentative/img-png-unlabeled.sub.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/orb/tentative/script-unlabeled.sub.html b/tests/wpt/web-platform-tests/fetch/orb/tentative/script-unlabeled.sub.html new file mode 100644 index 00000000000..4987f1307e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/orb/tentative/script-unlabeled.sub.html @@ -0,0 +1,24 @@ + + + + + +
    + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/origin/assorted.window.js b/tests/wpt/web-platform-tests/fetch/origin/assorted.window.js index fc6dd1a0287..423790dfb1e 100644 --- a/tests/wpt/web-platform-tests/fetch/origin/assorted.window.js +++ b/tests/wpt/web-platform-tests/fetch/origin/assorted.window.js @@ -194,7 +194,7 @@ function referrerPolicyTestString(referrerPolicy, method, destination) { promise_test(fetchReferrerPolicy(testObj.policy, destination.name, "cors", - (destination.name == "same-origin") ? destination.expectedOrigin : origins.HTTP_ORIGIN, + origins.HTTP_ORIGIN, "POST"), referrerPolicyTestString(testObj.policy, "POST", destination.name + " fetch cors mode")); diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/META.yml b/tests/wpt/web-platform-tests/fetch/private-network-access/META.yml index 50fab067a43..944ce6f14a1 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/META.yml +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/META.yml @@ -1,6 +1,7 @@ spec: https://wicg.github.io/private-network-access/ suggested_reviewers: - letitz + - lyf - hemeryar - camillelamy - mikewest diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.https.window.js index 2440f2e12a8..7a3cc20c4c5 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.https.window.js @@ -78,7 +78,7 @@ subsetTestByKey("baseline", promise_test, t => fetchTest(t, { }, fetchOptions: { method: "PUT" }, expected: FetchTestResult.SUCCESS, -}), "local to public: PUT preflight success,"); +}), "local to public: PUT preflight success."); // Generates tests of preflight behavior for a single (source, target) pair. // diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.https.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.https.window.js new file mode 100644 index 00000000000..5636270ea63 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.https.window.js @@ -0,0 +1,217 @@ +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/utils.js +// META: script=resources/support.sub.js +// +// Spec: https://wicg.github.io/private-network-access/#integration-fetch +// +// These tests verify that contexts can navigate iframes to less-public address +// spaces iff the target server responds affirmatively to preflight requests. +// +// This file covers only those tests that must execute in a secure context. +// Other tests are defined in: iframe.tentative.window.js + +setup(() => { + assert_true(window.isSecureContext); +}); + +// Source: secure local context. +// +// All fetches unaffected by Private Network Access. + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTPS_LOCAL }, + target: { server: Server.HTTPS_LOCAL }, + expected: IframeTestResult.SUCCESS, +}), "local to local: no preflight required."); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTPS_LOCAL }, + target: { server: Server.HTTPS_PRIVATE }, + expected: IframeTestResult.SUCCESS, +}), "local to private: no preflight required."); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTPS_LOCAL }, + target: { server: Server.HTTPS_PUBLIC }, + expected: IframeTestResult.SUCCESS, +}), "local to public: no preflight required."); + +// Generates tests of preflight behavior for a single (source, target) pair. +// +// Scenarios: +// +// - parent navigates child: +// - preflight response has non-2xx HTTP code +// - preflight response is missing CORS headers +// - preflight response is missing the PNA-specific `Access-Control` header +// - success +// +function makePreflightTests({ + sourceName, + sourceServer, + sourceTreatAsPublic, + targetName, + targetServer, +}) { + const prefix = + `${sourceName} to ${targetName}: `; + + const source = { + server: sourceServer, + treatAsPublic: sourceTreatAsPublic, + }; + + promise_test_parallel(t => iframeTest(t, { + source, + target: { + server: targetServer, + behavior: { preflight: PreflightBehavior.failure() }, + }, + expected: IframeTestResult.FAILURE, + }), prefix + "failed preflight."); + + promise_test_parallel(t => iframeTest(t, { + source, + target: { + server: targetServer, + behavior: { preflight: PreflightBehavior.noCorsHeader(token()) }, + }, + expected: IframeTestResult.FAILURE, + }), prefix + "missing CORS headers."); + + promise_test_parallel(t => iframeTest(t, { + source, + target: { + server: targetServer, + behavior: { preflight: PreflightBehavior.noPnaHeader(token()) }, + }, + expected: IframeTestResult.FAILURE, + }), prefix + "missing PNA header."); + + promise_test_parallel(t => iframeTest(t, { + source, + target: { + server: targetServer, + behavior: { preflight: PreflightBehavior.success(token()) }, + }, + expected: IframeTestResult.SUCCESS, + }), prefix + "success."); +} + +// Source: private secure context. +// +// Fetches to the local address space require a successful preflight response +// carrying a PNA-specific header. + +makePreflightTests({ + sourceServer: Server.HTTPS_PRIVATE, + sourceName: "private", + targetServer: Server.HTTPS_LOCAL, + targetName: "local", +}); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { server: Server.HTTPS_PRIVATE }, + expected: IframeTestResult.SUCCESS, +}), "private to private: no preflight required."); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { server: Server.HTTPS_PUBLIC }, + expected: IframeTestResult.SUCCESS, +}), "private to public: no preflight required."); + +// Source: public secure context. +// +// Fetches to the local and private address spaces require a successful +// preflight response carrying a PNA-specific header. + +makePreflightTests({ + sourceServer: Server.HTTPS_PUBLIC, + sourceName: "public", + targetServer: Server.HTTPS_LOCAL, + targetName: "local", +}); + +makePreflightTests({ + sourceServer: Server.HTTPS_PUBLIC, + sourceName: "public", + targetServer: Server.HTTPS_PRIVATE, + targetName: "private", +}); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { server: Server.HTTPS_PUBLIC }, + expected: IframeTestResult.SUCCESS, +}), "public to public: no preflight required."); + +// The following tests verify that `CSP: treat-as-public-address` makes +// documents behave as if they had been served from a public IP address. + +makePreflightTests({ + sourceServer: Server.HTTPS_LOCAL, + sourceTreatAsPublic: true, + sourceName: "treat-as-public-address", + targetServer: Server.HTTPS_LOCAL, + targetName: "local", +}); + +makePreflightTests({ + sourceServer: Server.HTTPS_LOCAL, + sourceTreatAsPublic: true, + sourceName: "treat-as-public-address", + targetServer: Server.HTTPS_PRIVATE, + targetName: "private", +}); + +promise_test_parallel(t => iframeTest(t, { + source: { + server: Server.HTTPS_LOCAL, + treatAsPublic: true, + }, + target: { server: Server.HTTPS_PUBLIC }, + expected: IframeTestResult.SUCCESS, +}), "treat-as-public-address to public: no preflight required."); + +// The following tests verify that when a grandparent frame navigates its +// grandchild, the IP address space of the grandparent is compared against the +// IP address space of the response. Indeed, the navigation initiator in this +// case is the grandparent, not the parent. + +iframeGrandparentTest({ + name: "local to local, grandparent navigates: no preflight required.", + grandparentServer: Server.HTTPS_LOCAL, + child: { server: Server.HTTPS_PUBLIC }, + grandchild: { server: Server.HTTPS_LOCAL }, + expected: IframeTestResult.SUCCESS, +}); + +iframeGrandparentTest({ + name: "public to local, grandparent navigates: failure.", + grandparentServer: Server.HTTPS_PUBLIC, + child: { + server: Server.HTTPS_LOCAL, + behavior: { preflight: PreflightBehavior.success(token()) }, + }, + grandchild: { + server: Server.HTTPS_LOCAL, + behavior: { preflight: PreflightBehavior.failure() }, + }, + expected: IframeTestResult.FAILURE, +}); + +iframeGrandparentTest({ + name: "public to local, grandparent navigates: success.", + grandparentServer: Server.HTTPS_PUBLIC, + child: { + server: Server.HTTPS_LOCAL, + behavior: { preflight: PreflightBehavior.success(token()) }, + }, + grandchild: { + server: Server.HTTPS_LOCAL, + behavior: { preflight: PreflightBehavior.success(token()) }, + }, + expected: IframeTestResult.SUCCESS, +}); diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.window.js new file mode 100644 index 00000000000..e00cb202bec --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.window.js @@ -0,0 +1,110 @@ +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/utils.js +// META: script=resources/support.sub.js +// +// Spec: https://wicg.github.io/private-network-access/#integration-fetch +// +// These tests verify that non-secure contexts cannot navigate iframes to +// less-public address spaces, and can navigate them otherwise. +// +// This file covers only those tests that must execute in a non secure context. +// Other tests are defined in: iframe.https.window.js + +setup(() => { + // Making sure we are in a non secure context, as expected. + assert_false(window.isSecureContext); +}); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTP_LOCAL }, + target: { server: Server.HTTP_LOCAL }, + expected: IframeTestResult.SUCCESS, +}), "local to local: no preflight required."); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTP_LOCAL }, + target: { server: Server.HTTP_PRIVATE }, + expected: IframeTestResult.SUCCESS, +}), "local to private: no preflight required."); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTP_LOCAL }, + target: { server: Server.HTTP_PUBLIC }, + expected: IframeTestResult.SUCCESS, +}), "local to public: no preflight required."); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTP_PRIVATE }, + target: { server: Server.HTTP_LOCAL }, + expected: IframeTestResult.FAILURE, +}), "private to local: failure."); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTP_PRIVATE }, + target: { server: Server.HTTP_PRIVATE }, + expected: IframeTestResult.SUCCESS, +}), "private to private: no preflight required."); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTP_PRIVATE }, + target: { server: Server.HTTP_PUBLIC }, + expected: IframeTestResult.SUCCESS, +}), "private to public: no preflight required."); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTP_PUBLIC }, + target: { server: Server.HTTP_LOCAL }, + expected: IframeTestResult.FAILURE, +}), "public to local: failure."); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTP_PUBLIC }, + target: { server: Server.HTTP_PRIVATE }, + expected: IframeTestResult.FAILURE, +}), "public to private: failure."); + +promise_test_parallel(t => iframeTest(t, { + source: { server: Server.HTTP_PUBLIC }, + target: { server: Server.HTTP_PUBLIC }, + expected: IframeTestResult.SUCCESS, +}), "public to public: no preflight required."); + +promise_test_parallel(t => iframeTest(t, { + source: { + server: Server.HTTP_LOCAL, + treatAsPublic: true, + }, + target: { server: Server.HTTP_LOCAL }, + expected: IframeTestResult.FAILURE, +}), "treat-as-public-address to local: failure."); + +promise_test_parallel(t => iframeTest(t, { + source: { + server: Server.HTTP_LOCAL, + treatAsPublic: true, + }, + target: { server: Server.HTTP_PRIVATE }, + expected: IframeTestResult.FAILURE, +}), "treat-as-public-address to private: failure."); + +promise_test_parallel(t => iframeTest(t, { + source: { + server: Server.HTTP_LOCAL, + treatAsPublic: true, + }, + target: { server: Server.HTTP_PUBLIC }, + expected: IframeTestResult.SUCCESS, +}), "treat-as-public-address to public: no preflight required."); + +// The following test verifies that when a grandparent frame navigates its +// grandchild, the IP address space of the grandparent is compared against the +// IP address space of the response. Indeed, the navigation initiator in this +// case is the grandparent, not the parent. + +iframeGrandparentTest({ + name: "local to local, grandparent navigates: success.", + grandparentServer: Server.HTTP_LOCAL, + child: { server: Server.HTTP_PUBLIC }, + grandchild: { server: Server.HTTP_LOCAL }, + expected: IframeTestResult.SUCCESS, +}); diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js new file mode 100644 index 00000000000..fb9f6a7709a --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js @@ -0,0 +1,277 @@ +// META: script=/common/utils.js +// META: script=resources/support.sub.js +// +// Spec: https://wicg.github.io/private-network-access +// +// These tests verify that secure contexts can fetch non-secure subresources +// from more private address spaces, avoiding mixed context checks, as long as +// they specify a valid `targetAddressSpace` fetch option that matches the +// target server's address space. + +setup(() => { + // Making sure we are in a secure context, as expected. + assert_true(window.isSecureContext); +}); + +// Given `addressSpace`, returns the other three possible IP address spaces. +function otherAddressSpaces(addressSpace) { + switch (addressSpace) { + case "local": return ["unknown", "private", "public"]; + case "private": return ["unknown", "local", "public"]; + case "public": return ["unknown", "local", "private"]; + } +} + +// Generates tests of `targetAddressSpace` for the given (source, target) +// address space pair, expecting fetches to succeed iff `targetAddressSpace` is +// correct. +// +// Scenarios exercised: +// +// - cors mode: +// - missing targetAddressSpace option +// - incorrect targetAddressSpace option (x3, see `otherAddressSpaces()`) +// - failed preflight +// - success +// - success with PUT method (non-"simple" request) +// - no-cors mode: +// - success +// +function makeTests({ source, target }) { + const sourceServer = Server.get("https", source); + const targetServer = Server.get("http", target); + + const makeTest = ({ + fetchOptions, + targetBehavior, + name, + expected + }) => { + promise_test_parallel(t => fetchTest(t, { + source: { server: sourceServer }, + target: { + server: targetServer, + behavior: targetBehavior, + }, + fetchOptions, + expected, + }), `${sourceServer.name} to ${targetServer.name}: ${name}.`); + }; + + makeTest({ + name: "missing targetAddressSpace", + targetBehavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + expected: FetchTestResult.FAILURE, + }); + + const correctAddressSpace = targetServer.addressSpace; + + for (const targetAddressSpace of otherAddressSpaces(correctAddressSpace)) { + makeTest({ + name: `wrong targetAddressSpace "${targetAddressSpace}"`, + targetBehavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + fetchOptions: { targetAddressSpace }, + expected: FetchTestResult.FAILURE, + }); + } + + makeTest({ + name: "failed preflight", + targetBehavior: { + preflight: PreflightBehavior.failure(), + response: ResponseBehavior.allowCrossOrigin(), + }, + fetchOptions: { targetAddressSpace: correctAddressSpace }, + expected: FetchTestResult.FAILURE, + }); + + makeTest({ + name: "success", + targetBehavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + fetchOptions: { targetAddressSpace: correctAddressSpace }, + expected: FetchTestResult.SUCCESS, + }); + + makeTest({ + name: "PUT success", + targetBehavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + fetchOptions: { + targetAddressSpace: correctAddressSpace, + method: "PUT", + }, + expected: FetchTestResult.SUCCESS, + }); + + makeTest({ + name: "no-cors success", + targetBehavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + fetchOptions: { + targetAddressSpace: correctAddressSpace, + mode: "no-cors", + }, + expected: FetchTestResult.OPAQUE, + }); +} + +// Generates tests for the given (source, target) address space pair expecting +// that `targetAddressSpace` cannot be used to bypass mixed content. +// +// Scenarios exercised: +// +// - wrong `targetAddressSpace` (x3, see `otherAddressSpaces()`) +// - correct `targetAddressSpace` +// +function makeNoBypassTests({ source, target }) { + const sourceServer = Server.get("https", source); + const targetServer = Server.get("http", target); + + const prefix = `${sourceServer.name} to ${targetServer.name}: `; + + const correctAddressSpace = targetServer.addressSpace; + for (const targetAddressSpace of otherAddressSpaces(correctAddressSpace)) { + promise_test_parallel(t => fetchTest(t, { + source: { server: sourceServer }, + target: { + server: targetServer, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + fetchOptions: { targetAddressSpace }, + expected: FetchTestResult.FAILURE, + }), prefix + `wrong targetAddressSpace "${targetAddressSpace}".`); + } + + promise_test_parallel(t => fetchTest(t, { + source: { server: sourceServer }, + target: { + server: targetServer, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + fetchOptions: { targetAddressSpace: correctAddressSpace }, + expected: FetchTestResult.FAILURE, + }), prefix + 'not a private network request.'); +} + +// Source: local secure context. +// +// Fetches to the local and private address spaces cannot use +// `targetAddressSpace` to bypass mixed content, as they are not otherwise +// blocked by Private Network Access. + +makeNoBypassTests({ source: "local", target: "local" }); +makeNoBypassTests({ source: "local", target: "private" }); +makeNoBypassTests({ source: "local", target: "public" }); + +// Source: private secure context. +// +// Fetches to the local address space requires the right `targetAddressSpace` +// option, as well as a successful preflight response carrying a PNA-specific +// header. +// +// Fetches to the private address space cannot use `targetAddressSpace` to +// bypass mixed content, as they are not otherwise blocked by Private Network +// Access. + +makeTests({ source: "private", target: "local" }); + +makeNoBypassTests({ source: "private", target: "private" }); +makeNoBypassTests({ source: "private", target: "public" }); + +// Source: public secure context. +// +// Fetches to the local and private address spaces require the right +// `targetAddressSpace` option, as well as a successful preflight response +// carrying a PNA-specific header. + +makeTests({ source: "public", target: "local" }); +makeTests({ source: "public", target: "private" }); + +makeNoBypassTests({ source: "public", target: "public" }); + +// These tests verify that documents fetched from the `local` address space yet +// carrying the `treat-as-public-address` CSP directive are treated as if they +// had been fetched from the `public` address space. + +promise_test_parallel(t => fetchTest(t, { + source: { + server: Server.HTTPS_LOCAL, + treatAsPublic: true, + }, + target: { + server: Server.HTTP_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + fetchOptions: { targetAddressSpace: "private" }, + expected: FetchTestResult.FAILURE, +}), 'https-treat-as-public to http-local: wrong targetAddressSpace "private".'); + +promise_test_parallel(t => fetchTest(t, { + source: { + server: Server.HTTPS_LOCAL, + treatAsPublic: true, + }, + target: { + server: Server.HTTP_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + fetchOptions: { targetAddressSpace: "local" }, + expected: FetchTestResult.SUCCESS, +}), "https-treat-as-public to http-local: success."); + +promise_test_parallel(t => fetchTest(t, { + source: { + server: Server.HTTPS_LOCAL, + treatAsPublic: true, + }, + target: { + server: Server.HTTP_PRIVATE, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + fetchOptions: { targetAddressSpace: "local" }, + expected: FetchTestResult.FAILURE, +}), 'https-treat-as-public to http-private: wrong targetAddressSpace "local".'); + +promise_test_parallel(t => fetchTest(t, { + source: { + server: Server.HTTPS_LOCAL, + treatAsPublic: true, + }, + target: { + server: Server.HTTP_PRIVATE, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + fetchOptions: { targetAddressSpace: "private" }, + expected: FetchTestResult.SUCCESS, +}), "https-treat-as-public to http-private: success."); diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.https.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.https.window.js new file mode 100644 index 00000000000..3eeb435badb --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.https.window.js @@ -0,0 +1,36 @@ +// META: script=/common/utils.js +// META: script=resources/support.sub.js +// +// Spec: https://wicg.github.io/private-network-access/#integration-fetch +// +// These tests check that initial `Worker` script fetches from within worker +// scopes are subject to Private Network Access checks, just like a worker +// script fetches from within document scopes (for non-nested workers). The +// latter are tested in: worker.https.window.js +// +// This file covers only those tests that must execute in a secure context. +// Other tests are defined in: nested-worker.window.js + +promise_test(t => nestedWorkerScriptTest(t, { + source: { + server: Server.HTTPS_LOCAL, + treatAsPublic: true, + }, + target: { server: Server.HTTPS_LOCAL }, + expected: WorkerScriptTestResult.FAILURE, +}), "treat-as-public to local: failure."); + +promise_test(t => nestedWorkerScriptTest(t, { + source: { + server: Server.HTTPS_PRIVATE, + treatAsPublic: true, + }, + target: { server: Server.HTTPS_PRIVATE }, + expected: WorkerScriptTestResult.FAILURE, +}), "treat-as-public to private: failure."); + +promise_test(t => nestedWorkerScriptTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { server: Server.HTTPS_PUBLIC }, + expected: WorkerScriptTestResult.SUCCESS, +}), "public to public: success."); diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.window.js new file mode 100644 index 00000000000..6d246e1c76d --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.window.js @@ -0,0 +1,36 @@ +// META: script=/common/utils.js +// META: script=resources/support.sub.js +// +// Spec: https://wicg.github.io/private-network-access/#integration-fetch +// +// These tests check that initial `Worker` script fetches from within worker +// scopes are subject to Private Network Access checks, just like a worker +// script fetches from within document scopes (for non-nested workers). The +// latter are tested in: worker.window.js +// +// This file covers only those tests that must execute in a non secure context. +// Other tests are defined in: nested-worker.https.window.js + +promise_test(t => nestedWorkerScriptTest(t, { + source: { + server: Server.HTTP_LOCAL, + treatAsPublic: true, + }, + target: { server: Server.HTTP_LOCAL }, + expected: WorkerScriptTestResult.FAILURE, +}), "treat-as-public to local: failure."); + +promise_test(t => nestedWorkerScriptTest(t, { + source: { + server: Server.HTTP_PRIVATE, + treatAsPublic: true, + }, + target: { server: Server.HTTP_PRIVATE }, + expected: WorkerScriptTestResult.FAILURE, +}), "treat-as-public to private: failure."); + +promise_test(t => nestedWorkerScriptTest(t, { + source: { server: Server.HTTP_PUBLIC }, + target: { server: Server.HTTP_PUBLIC }, + expected: WorkerScriptTestResult.SUCCESS, +}), "public to public: success."); diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/preflight-cache.https.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/preflight-cache.https.window.js new file mode 100644 index 00000000000..87dbf501f62 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/preflight-cache.https.window.js @@ -0,0 +1,88 @@ +// META: script=/common/utils.js +// META: script=resources/support.sub.js +// +// Spec: https://wicg.github.io/private-network-access/#cors-preflight +// +// These tests verify that PNA preflight responses are cached. +// +// TODO(https://crbug.com/1268312): We cannot currently test that cache +// entries are keyed by target IP address space because that requires +// loading the same URL from different IP address spaces, and the WPT +// framework does not allow that. +promise_test(async t => { + let uuid = token(); + await fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.singlePreflight(uuid), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + expected: FetchTestResult.SUCCESS, + }); + await fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.singlePreflight(uuid), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + expected: FetchTestResult.SUCCESS, + }); +}, "private to local: success."); + +promise_test(async t => { + let uuid = token(); + await fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.singlePreflight(uuid), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + expected: FetchTestResult.SUCCESS, + }); + await fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.singlePreflight(uuid), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + expected: FetchTestResult.SUCCESS, + }); +}, "public to local: success."); + +promise_test(async t => { + let uuid = token(); + await fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + preflight: PreflightBehavior.singlePreflight(uuid), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + expected: FetchTestResult.SUCCESS, + }); + await fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + preflight: PreflightBehavior.singlePreflight(uuid), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + expected: FetchTestResult.SUCCESS, + }); +}, "public to private: success."); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/redirect.https.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/redirect.https.window.js new file mode 100644 index 00000000000..fe004d929de --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/redirect.https.window.js @@ -0,0 +1,232 @@ +// META: script=/common/utils.js +// META: script=resources/support.sub.js +// +// Spec: https://wicg.github.io/private-network-access/#integration-fetch +// +// This test verifies that Private Network Access checks are applied to all +// the endpoints in a redirect chain, relative to the same client context. + +// local -> private -> public +// +// Request 1 (local -> private): no preflight. +// Request 2 (local -> public): no preflight. + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_LOCAL }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_PUBLIC, + behavior: { response: ResponseBehavior.allowCrossOrigin() }, + }), + } + }, + expected: FetchTestResult.SUCCESS, +}), "local to private to public: success."); + +// local -> private -> local +// +// Request 1 (local -> private): no preflight. +// Request 2 (local -> local): no preflight. +// +// This checks that the client for the second request is still the initial +// context, not the redirector. + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_LOCAL }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { response: ResponseBehavior.allowCrossOrigin() }, + }), + } + }, + expected: FetchTestResult.SUCCESS, +}), "local to private to local: success."); + +// private -> private -> local +// +// Request 1 (private -> private): no preflight. +// Request 2 (private -> local): preflight required. +// +// This verifies that PNA checks are applied after redirects. + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { response: ResponseBehavior.allowCrossOrigin() }, + }), + } + }, + expected: FetchTestResult.FAILURE, +}), "private to private to local: failed preflight."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }), + } + }, + expected: FetchTestResult.SUCCESS, +}), "private to private to local: success."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { preflight: PreflightBehavior.success(token()) }, + }), + } + }, + fetchOptions: { mode: "no-cors" }, + expected: FetchTestResult.OPAQUE, +}), "private to private to local: no-cors success."); + +// private -> local -> private +// +// Request 1 (private -> local): preflight required. +// Request 2 (private -> private): no preflight. +// +// This verifies that PNA checks are applied independently to every step in a +// redirect chain. + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_LOCAL, + behavior: { + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_PRIVATE, + }), + } + }, + expected: FetchTestResult.FAILURE, +}), "private to local to private: failed preflight."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_PRIVATE, + behavior: { response: ResponseBehavior.allowCrossOrigin() }, + }), + } + }, + expected: FetchTestResult.SUCCESS, +}), "private to local to private: success."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + redirect: preflightUrl({ server: Server.HTTPS_PRIVATE }), + } + }, + fetchOptions: { mode: "no-cors" }, + expected: FetchTestResult.OPAQUE, +}), "private to local to private: no-cors success."); + +// public -> private -> local +// +// Request 1 (public -> private): preflight required. +// Request 2 (public -> local): preflight required. +// +// This verifies that PNA checks are applied to every step in a redirect chain. + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }), + } + }, + expected: FetchTestResult.FAILURE, +}), "public to private to local: failed first preflight."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { + response: ResponseBehavior.allowCrossOrigin(), + }, + }), + } + }, + expected: FetchTestResult.FAILURE, +}), "public to private to local: failed second preflight."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }), + } + }, + expected: FetchTestResult.SUCCESS, +}), "public to private to local: success."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + preflight: PreflightBehavior.success(token()), + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { preflight: PreflightBehavior.success(token()) }, + }), + } + }, + fetchOptions: { mode: "no-cors" }, + expected: FetchTestResult.OPAQUE, +}), "public to private to local: no-cors success."); diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/executor.html b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/executor.html new file mode 100644 index 00000000000..d71212951cb --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/executor.html @@ -0,0 +1,9 @@ + + +Executor + + + diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframed.html b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframed.html new file mode 100644 index 00000000000..c889c2882a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframed.html @@ -0,0 +1,7 @@ + + +Iframed + diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframer.html b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframer.html new file mode 100644 index 00000000000..304cc54ae44 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframer.html @@ -0,0 +1,9 @@ + + +Iframer + + diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py index bc2250456e0..41daebf08d3 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py @@ -24,6 +24,11 @@ # - cors+pna: this endpoint responds with valid CORS and PNA headers to # preflights. These should be sufficient for both non-PNA preflight # requests and PNA-specific preflight requests to succeed. +# - cors+pna+sw: this endpoint responds with valid CORS and PNA headers and +# "Access-Control-Allow-Headers: Service-Worker" to preflights. These should +# be sufficient for both non-PNA preflight requests and PNA-specific +# preflight requests to succeed. This allows the main request to fetch a +# service worker script. # - unspecified, or any other value: this endpoint responds with no CORS or # PNA headers. Preflight requests should fail. # - final-headers: Valid values are: @@ -36,6 +41,8 @@ # # The following parameters only affect non-preflight responses: # +# - redirect: If set, the response code is set to 301 and the `Location` +# response header is set to this value. # - mime-type: If set, the `Content-Type` response header is set to this value. # - file: Specifies a path (relative to this file's directory) to a file. If # set, the response body is copied from this file. @@ -53,6 +60,7 @@ from wptserve.utils import isomorphic_encode _ACAO = ("Access-Control-Allow-Origin", "*") _ACAPN = ("Access-Control-Allow-Private-Network", "true") +_ACAH = ("Access-Control-Allow-Headers", "Service-Worker") def _get_response_headers(method, mode): acam = ("Access-Control-Allow-Methods", method) @@ -63,8 +71,14 @@ def _get_response_headers(method, mode): if mode == b"cors+pna": return [acam, _ACAO, _ACAPN] + if mode == b"cors+pna+sw": + return [acam, _ACAO, _ACAPN, _ACAH] + return [] +def _get_expect_single_preflight(request): + return request.GET.get(b"expect-single-preflight") + def _get_preflight_uuid(request): return request.GET.get(b"preflight-uuid") @@ -88,7 +102,10 @@ def _handle_preflight_request(request, response): if uuid is None: return (400, [], "missing `preflight-uuid` param from preflight URL") - request.server.stash.put(uuid, "") + value = request.server.stash.take(uuid) + request.server.stash.put(uuid, "preflight") + if _get_expect_single_preflight(request) and value is not None: + return (400, [], "received duplicated preflight") method = request.headers.get("Access-Control-Request-Method") mode = request.GET.get(b"preflight-headers") @@ -117,12 +134,19 @@ def _handle_final_request(request, response): headers = [("Content-Security-Policy", "treat-as-public-address"),] else: uuid = _get_preflight_uuid(request) - if uuid is not None and request.server.stash.take(uuid) is None: - return (405, [], "no preflight received for {}".format(uuid)) + if uuid is not None: + if request.server.stash.take(uuid) is None: + return (405, [], "no preflight received for {}".format(uuid)) + request.server.stash.put(uuid, "final") mode = request.GET.get(b"final-headers") headers = _get_response_headers(request.method, mode) + redirect = request.GET.get(b"redirect") + if redirect is not None: + headers.append(("Location", redirect)) + return (301, headers, b"") + mime_type = request.GET.get(b"mime-type") if mime_type is not None: headers.append(("Content-Type", mime_type),) diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker-bridge.html b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker-bridge.html index 9bee90d2105..816de535fea 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker-bridge.html +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker-bridge.html @@ -1,6 +1,8 @@ ServiceWorker Bridge + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/range/resources/long-wav.py b/tests/wpt/web-platform-tests/fetch/range/resources/long-wav.py index be7df7b83d8..acfc81a7180 100644 --- a/tests/wpt/web-platform-tests/fetch/range/resources/long-wav.py +++ b/tests/wpt/web-platform-tests/fetch/range/resources/long-wav.py @@ -46,9 +46,15 @@ def create_wav_header(sample_rate, bit_depth, channels, duration): def main(request, response): + if request.method == u"OPTIONS": + response.status = (404, b"Not Found") + response.headers.set(b"Content-Type", b"text/plain") + return b"Preflight not accepted" + response.headers.set(b"Content-Type", b"audio/wav") response.headers.set(b"Accept-Ranges", b"bytes") response.headers.set(b"Cache-Control", b"no-cache") + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b'Origin', b'')) range_header = request.headers.get(b'Range', b'') range_header_match = range_header and re.search(r'^bytes=(\d*)-(\d*)$', isomorphic_decode(range_header)) diff --git a/tests/wpt/web-platform-tests/fetch/range/resources/partial-text.py b/tests/wpt/web-platform-tests/fetch/range/resources/partial-text.py index a0058551d52..fa3d1171b68 100644 --- a/tests/wpt/web-platform-tests/fetch/range/resources/partial-text.py +++ b/tests/wpt/web-platform-tests/fetch/range/resources/partial-text.py @@ -8,12 +8,13 @@ from wptserve.utils import isomorphic_decode def main(request, response): total_length = int(request.GET.first(b'length', b'100')) partial_code = int(request.GET.first(b'partial', b'206')) + content_type = request.GET.first(b'type', b'text/plain') range_header = request.headers.get(b'Range', b'') # Send a 200 if there is no range request if not range_header: to_send = ''.zfill(total_length) - response.headers.set(b"Content-Type", b"text/plain") + response.headers.set(b"Content-Type", content_type) response.headers.set(b"Cache-Control", b"no-cache") response.headers.set(b"Content-Length", total_length) response.content = to_send @@ -29,12 +30,17 @@ def main(request, response): # Error the request if the range goes beyond the length if length <= 0 or end > total_length: response.set_error(416, u"Range Not Satisfiable") + # set_error sets the MIME type to application/json, which - for a + # no-cors media request - will be blocked by ORB. We'll just force + # the expected MIME type here, whichfixes the test, but doesn't make + # sense in general. + response.headers = [(b"Content-Type", content_type)] response.write() return # Generate a partial response of the requested length to_send = ''.zfill(length) - response.headers.set(b"Content-Type", b"text/plain") + response.headers.set(b"Content-Type", content_type) response.headers.set(b"Accept-Ranges", b"bytes") response.headers.set(b"Cache-Control", b"no-cache") response.status = partial_code diff --git a/tests/wpt/web-platform-tests/fetch/range/resources/video-with-range.py b/tests/wpt/web-platform-tests/fetch/range/resources/video-with-range.py new file mode 100644 index 00000000000..2d15ccf3c43 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/range/resources/video-with-range.py @@ -0,0 +1,43 @@ +import re +import os +import json +from wptserve.utils import isomorphic_decode + +def main(request, response): + path = os.path.join(request.doc_root, u"media", "sine440.mp3") + total_size = os.path.getsize(path) + rewrites = json.loads(request.GET.first(b'rewrites', '[]')) + range_header = request.headers.get(b'Range') + range_header_match = range_header and re.search(r'^bytes=(\d*)-(\d*)$', isomorphic_decode(range_header)) + start = None + end = None + if range_header_match: + response.status = 206 + start, end = range_header_match.groups() + if range_header: + status = 206 + else: + status = 200 + for rewrite in rewrites: + req_start, req_end = rewrite['request'] + if start == req_start or req_start == '*': + if end == req_end or req_end == '*': + if 'response' in rewrite: + start, end = rewrite['response'] + if 'status' in rewrite: + status = rewrite['status'] + + start = int(start or 0) + end = int(end or total_size) + headers = [] + if status == 206: + headers.append((b"Content-Range", b"bytes %d-%d/%d" % (start, end - 1, total_size))) + headers.append((b"Accept-Ranges", b"bytes")) + + headers.append((b"Content-Type", b"audio/mp3")) + headers.append((b"Content-Length", str(end - start))) + headers.append((b"Cache-Control", b"no-cache")) + video_file = open(path, "rb") + video_file.seek(start) + content = video_file.read(end) + return status, headers, content diff --git a/tests/wpt/web-platform-tests/fetch/range/sw.https.window.js b/tests/wpt/web-platform-tests/fetch/range/sw.https.window.js index 42e4ac6d75a..62ad894da3d 100644 --- a/tests/wpt/web-platform-tests/fetch/range/sw.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/range/sw.https.window.js @@ -164,7 +164,7 @@ promise_test(async t => { const rangeId = Math.random() + ''; const rangeBroadcast = awaitMessage(w.navigator.serviceWorker, rangeId); - // Create a bogus audo element to trick the browser into sending + // Create a bogus audio element to trick the browser into sending // cross-origin range requests that can be manipulated by the service worker. const sound_url = new URL('partial-text.py', w.location); sound_url.hostname = REMOTE_HOST; @@ -173,6 +173,7 @@ promise_test(async t => { sound_url.searchParams.set('size', size); sound_url.searchParams.set('partial', partialResponseCode); sound_url.searchParams.set('id', rangeId); + sound_url.searchParams.set('type', 'audio/mp4'); appendAudio(w.document, sound_url); // wait for the range requests to happen @@ -184,6 +185,7 @@ promise_test(async t => { const url = new URL('partial-text.py', w.location); url.searchParams.set('action', 'use-media-range-request'); url.searchParams.set('size', size); + url.searchParams.set('type', 'audio/mp4'); counts['size' + size] = 0; for (let i = 0; i < count; i++) { await preloadImage(url, { doc: w.document }); diff --git a/tests/wpt/web-platform-tests/fetch/redirects/subresource-fragments.html b/tests/wpt/web-platform-tests/fetch/redirects/subresource-fragments.html index 61f91b6a369..0bd74d7bfbc 100644 --- a/tests/wpt/web-platform-tests/fetch/redirects/subresource-fragments.html +++ b/tests/wpt/web-platform-tests/fetch/redirects/subresource-fragments.html @@ -31,7 +31,7 @@ onload = () => { }); ctx.drawImage(img, 0, 0); // canvas, pixelX, pixelY, r, g, b, alpha, ?, ?, tolerance - _assertPixelApprox(canvas, 40, 40, 0, 255, 0, 255, undefined, undefined, 4); + _assertPixelApprox(canvas, 40, 40, 0, 255, 0, 255, 4); }, img.dataset.desc); }); done(); diff --git a/tests/wpt/web-platform-tests/fetch/security/1xx-response.any.js b/tests/wpt/web-platform-tests/fetch/security/1xx-response.any.js new file mode 100644 index 00000000000..df4dafcd80b --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/security/1xx-response.any.js @@ -0,0 +1,28 @@ +promise_test(async (t) => { + // The 100 response should be ignored, then the transaction ends, which + // should lead to an error. + await promise_rejects_js( + t, TypeError, fetch('/common/text-plain.txt?pipe=status(100)')); +}, 'Status(100) should be ignored.'); + +// This behavior is being discussed at https://github.com/whatwg/fetch/issues/1397. +promise_test(async (t) => { + const res = await fetch('/common/text-plain.txt?pipe=status(101)'); + assert_equals(res.status, 101); + const body = await res.text(); + assert_equals(body, ''); +}, 'Status(101) should be accepted, with removing body.'); + +promise_test(async (t) => { + // The 103 response should be ignored, then the transaction ends, which + // should lead to an error. + await promise_rejects_js( + t, TypeError, fetch('/common/text-plain.txt?pipe=status(103)')); +}, 'Status(103) should be ignored.'); + +promise_test(async (t) => { + // The 199 response should be ignored, then the transaction ends, which + // should lead to an error. + await promise_rejects_js( + t, TypeError, fetch('/common/text-plain.txt?pipe=status(199)')); +}, 'Status(199) should be ignored.'); diff --git a/tests/wpt/web-platform-tests/file-system-access/idlharness.https.any.js b/tests/wpt/web-platform-tests/file-system-access/idlharness.https.any.js index ab182537356..ca3e92061a2 100644 --- a/tests/wpt/web-platform-tests/file-system-access/idlharness.https.any.js +++ b/tests/wpt/web-platform-tests/file-system-access/idlharness.https.any.js @@ -6,11 +6,13 @@ idl_test( ['file-system-access'], - ['storage', 'permissions', 'streams', 'html', 'dom'], + ['fs', 'permissions', 'html', 'dom'], idl_array => { - idl_array.add_objects({ - // TODO: Add instances of FileSystemHandle, FileSystemFileHandle, - // FileSystemDirectoryHandle and FileSystemWriter. - }); + if (self.GLOBAL.isWindow()) { + idl_array.add_objects({ + Window: ['window'], + // TODO: DataTransferItem + }); + } } ); diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-IndexedDB-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-IndexedDB-manual.https.html index 211b190aad3..f9a58d457fc 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-IndexedDB-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-IndexedDB-manual.https.html @@ -9,5 +9,5 @@ - - + + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-getUniqueId-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-getUniqueId-manual.https.html new file mode 100644 index 00000000000..32fc5ea103c --- /dev/null +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-getUniqueId-manual.https.html @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-isSameEntry-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-isSameEntry-manual.https.html index d2ddc2dbdcc..6587bdf506e 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-isSameEntry-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-isSameEntry-manual.https.html @@ -7,4 +7,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-BroadcastChannel-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-BroadcastChannel-manual.https.html index f395b0b4c17..3981372df03 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-BroadcastChannel-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-BroadcastChannel-manual.https.html @@ -11,4 +11,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-Error-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-Error-manual.https.html index 67206e35096..b872839f2a8 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-Error-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-Error-manual.https.html @@ -13,4 +13,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-frames-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-frames-manual.https.html index 35f23d8387d..3ec98c86c0c 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-frames-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-frames-manual.https.html @@ -11,4 +11,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-windows-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-windows-manual.https.html index 922cbf556a1..359f11cd171 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-windows-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-windows-manual.https.html @@ -11,4 +11,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-workers-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-workers-manual.https.html index 22ef3ba37d3..af0d6169095 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-workers-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-MessagePort-workers-manual.https.html @@ -12,4 +12,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-frames-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-frames-manual.https.html index 8eb90827082..1581a645a5b 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-frames-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-frames-manual.https.html @@ -11,4 +11,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-windows-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-windows-manual.https.html index 2137ea368c9..21fd7cb2746 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-windows-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-windows-manual.https.html @@ -11,4 +11,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-workers-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-workers-manual.https.html index 619a37cc972..f30ecddd9af 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-workers-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemBaseHandle-postMessage-workers-manual.https.html @@ -12,4 +12,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-getDirectoryHandle-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-getDirectoryHandle-manual.https.html index 63a88538e8b..e403d225ea9 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-getDirectoryHandle-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-getDirectoryHandle-manual.https.html @@ -7,4 +7,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-getFileHandle-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-getFileHandle-manual.https.html index d16771bf450..1fa4e116991 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-getFileHandle-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-getFileHandle-manual.https.html @@ -7,4 +7,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-iteration-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-iteration-manual.https.html index 495ea5e0a09..8537ca02ba5 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-iteration-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-iteration-manual.https.html @@ -7,4 +7,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-partitioned-manual.https.tentative.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-partitioned-manual.https.tentative.html new file mode 100644 index 00000000000..3422914e23d --- /dev/null +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-partitioned-manual.https.tentative.html @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-removeEntry-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-removeEntry-manual.https.html index 765492e1e86..cf97b9d1bb1 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-removeEntry-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-removeEntry-manual.https.html @@ -7,4 +7,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-rename-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-rename-manual.https.html deleted file mode 100644 index a4a7fb9b598..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-rename-manual.https.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-resolve-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-resolve-manual.https.html index 0d539abb54e..25be22afafc 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-resolve-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemDirectoryHandle-resolve-manual.https.html @@ -7,4 +7,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html index 2f2fc00e5eb..4641b13a45b 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html @@ -8,7 +8,7 @@ - + - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-move-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-move-manual.https.html index 3d056a50796..360b09c3b7a 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-move-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-move-manual.https.html @@ -7,4 +7,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-partitioned-manual.https.tentative.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-partitioned-manual.https.tentative.html new file mode 100644 index 00000000000..0aefd9eca39 --- /dev/null +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-partitioned-manual.https.tentative.html @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-manual.https.html index 2db242c708d..b9f28c5b08c 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-manual.https.html @@ -7,4 +7,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-piped-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-piped-manual.https.html index 296f75412e1..645eddbb501 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-piped-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-piped-manual.https.html @@ -8,4 +8,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-write-manual.https.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-write-manual.https.html index eb9708740b5..f1c4960ad37 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-write-manual.https.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemWritableFileStream-write-manual.https.html @@ -7,4 +7,4 @@ - + diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js b/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js index 1f944b0ad6a..54961ae54bc 100644 --- a/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js +++ b/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js @@ -1,11 +1,11 @@ // This file defines a directory_test() function that can be used to define // tests that require a FileSystemDirectoryHandle. The implementation of that -// function in this file will ask the user to select an empty directory and -// uses that directory. +// function in this file will ask the user to select an empty directory and uses +// that directory. // // Another implementation of this function exists in -// sandboxed-fs-test-helpers.js, where that version uses the sandboxed file -// system instead. +// fs/resources/sandboxed-fs-test-helpers.js, where that version uses the +// sandboxed file system instead. const directory_promise = (async () => { await new Promise(resolve => { @@ -52,3 +52,131 @@ directory_test(async (t, dir) => { await window.test_driver.bless('ask for write permission'); assert_equals(await dir.requestPermission({mode: 'readwrite'}), 'granted'); }, 'User granted write access.'); + +const child_frame_js = (origin, frameFn, done) => ` + const importScript = ${importScript}; + await importScript("/html/cross-origin-embedder-policy/credentialless" + + "/resources/common.js"); + await importScript("/html/anonymous-iframe/resources/common.js"); + await importScript("/common/utils.js"); + await send("${done}", ${frameFn}("${origin}")); +`; + +/** + * Context identifiers for executor subframes of framed tests. Individual + * contexts (or convenience context lists below) can be used to send JavaScript + * for evaluation in each frame (see framed_test below). + * + * Note that within framed tests: + * - firstParty represents the top-level document. + * - thirdParty represents an embedded context (iframe). + * - ancestorBit contexts include a cross-site ancestor iframe. + * - anonymousFrame contexts are third-party anonymous iframe contexts. + */ +const FRAME_CONTEXT = { + firstParty: 0, + thirdPartySameSite: 1, + thirdPartySameSite_AncestorBit: 2, + thirdPartyCrossSite: 3, + anonymousFrameSameSite: 4, + anonymousFrameSameSite_AncestorBit: 5, + anonymousFrameCrossSite: 6, +}; + +// TODO(crbug.com/1322897): Add AncestorBit contexts. +const sameSiteContexts = [ + FRAME_CONTEXT.firstParty, + FRAME_CONTEXT.thirdPartySameSite, + FRAME_CONTEXT.anonymousFrameSameSite, +]; + +// TODO(crbug.com/1322897): Add AncestorBit contexts. +const crossSiteContexts = [ + FRAME_CONTEXT.thirdPartyCrossSite, + FRAME_CONTEXT.anonymousFrameCrossSite, +]; + +// TODO(crbug.com/1322897): Add AncestorBit contexts. +const childContexts = [ + FRAME_CONTEXT.thirdPartySameSite, + FRAME_CONTEXT.thirdPartyCrossSite, + FRAME_CONTEXT.anonymousFrameSameSite, + FRAME_CONTEXT.anonymousFrameCrossSite, +]; + +/** + * Creates a promise test with same- & cross-site executor subframes. + * + * In addition to the standard testing object, the provided func will be called + * with a sendTo function. sendTo expects: + * - contexts: an Iterable of FRAME_CONTEXT constants representing the + * frame(s) in which the provided script will be concurrently run. + * - js_gen: a function which should generate a script string when called + * with a string token. sendTo will wait until a "done" message + * is sent to this queue. + */ +function framed_test(func, description) { + const same_site_origin = get_host_info().HTTPS_ORIGIN; + const cross_site_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN; + const frames = Object.values(FRAME_CONTEXT); + + promise_test(async (t) => { + return new Promise(async (resolve, reject) => { + try { + // Set up handles to all third party frames. + const handles = [ + null, // firstParty + newIframe(same_site_origin), // thirdPartySameSite + null, // thirdPartySameSite_AncestorBit + newIframe(cross_site_origin), // thirdPartyCrossSite + newAnonymousIframe(same_site_origin), // anonymousFrameSameSite + null, // anonymousFrameSameSite_AncestorBit + newAnonymousIframe(cross_site_origin), // anonymousFrameCrossSite + ]; + // Set up nested SameSite frames for ancestor bit contexts. + const setUpQueue = token(); + send(newIframe(cross_site_origin), + child_frame_js(same_site_origin, "newIframe", setUpQueue)); + handles[FRAME_CONTEXT.thirdPartySameSite_AncestorBit] = + await receive(setUpQueue); + send(newAnonymousIframe(cross_site_origin), + child_frame_js(same_site_origin, "newAnonymousIframe", setUpQueue)); + handles[FRAME_CONTEXT.anonymousFrameSameSite_AncestorBit] = + await receive(setUpQueue); + + const sendTo = (contexts, js_generator) => { + // Send to all contexts in parallel to minimize timeout concerns. + return Promise.all(contexts.map(async (context) => { + const queue = token(); + const js_string = js_generator(queue, context); + switch (context) { + case FRAME_CONTEXT.firstParty: + // Code is executed directly in this frame via eval() rather + // than in a new context to avoid differences in API access. + eval(`(async () => {${js_string}})()`); + break; + case FRAME_CONTEXT.thirdPartySameSite: + case FRAME_CONTEXT.thirdPartyCrossSite: + case FRAME_CONTEXT.anonymousFrameSameSite: + case FRAME_CONTEXT.anonymousFrameCrossSite: + case FRAME_CONTEXT.thirdPartySameSite_AncestorBit: + case FRAME_CONTEXT.anonymousFrameSameSite_AncestorBit: + send(handles[context], js_string); + break; + default: + reject(`Cannot execute in context: ${context}`); + } + if (await receive(queue) != "done") { + reject(`Script failed in frame ${context}: ${js_string}`); + } + })); + }; + + await func(t, sendTo); + } catch (e) { + reject(e); + } + resolve(); + }); + }, description); +} diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/message-target.js b/tests/wpt/web-platform-tests/file-system-access/resources/message-target.js index 211caeb6cca..191b4748ab5 100644 --- a/tests/wpt/web-platform-tests/file-system-access/resources/message-target.js +++ b/tests/wpt/web-platform-tests/file-system-access/resources/message-target.js @@ -109,7 +109,7 @@ function add_message_event_handlers(receiver, target, target_origin) { let success = true; try { const access_handle = await message_data.file_handle.createSyncAccessHandle(); - await access_handle.close(); + access_handle.close(); } catch (error) { success = false; } diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/opaque-origin-sandbox.html b/tests/wpt/web-platform-tests/file-system-access/resources/opaque-origin-sandbox.html index 63ada267d8c..f489f889b3c 100644 --- a/tests/wpt/web-platform-tests/file-system-access/resources/opaque-origin-sandbox.html +++ b/tests/wpt/web-platform-tests/file-system-access/resources/opaque-origin-sandbox.html @@ -36,4 +36,4 @@ } catch (error) { post_message(`navigator.storage.getDirectory(): EXCEPTION: ${error.name}`); } - + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any.js b/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any.js deleted file mode 100644 index 7f0fc4a7212..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any.js +++ /dev/null @@ -1,6 +0,0 @@ -// META: script=resources/test-helpers.js -// META: script=resources/sandboxed-fs-test-helpers.js -// META: script=resources/messaging-helpers.js -// META: script=resources/messaging-serialize-helpers.js -// META: script=/IndexedDB/support-promises.js -// META: script=script-tests/FileSystemBaseHandle-IndexedDB.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any.js b/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any.js index 64aa0bb126f..19c48df438f 100644 --- a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any.js +++ b/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any.js @@ -1,7 +1,3 @@ // META: script=resources/test-helpers.js -// META: script=resources/sandboxed-fs-test-helpers.js +// META: script=../fs/resources/sandboxed-fs-test-helpers.js // META: script=script-tests/FileSystemBaseHandle-remove.js - -directory_test(async (t, root) => { - await promise_rejects_dom(t, 'InvalidStateError', root.remove()); -}, 'cannot remove the root of a sandbox file system'); diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-move.https.any.js b/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-move.https.any.js index 70a41a56740..00578f1c8ba 100644 --- a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-move.https.any.js +++ b/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-move.https.any.js @@ -1,3 +1,3 @@ // META: script=resources/test-helpers.js -// META: script=resources/sandboxed-fs-test-helpers.js +// META: script=../fs/resources/sandboxed-fs-test-helpers.js // META: script=script-tests/FileSystemDirectoryHandle-move.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js b/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js deleted file mode 100644 index a2ed99db1d5..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js +++ /dev/null @@ -1,88 +0,0 @@ -importScripts('/resources/testharness.js'); -importScripts('resources/sandboxed-fs-test-helpers.js'); - -'use strict'; - -directory_test(async (t, root_dir) => { - const fileHandle = await root_dir.getFileHandle('OPFS.test', {create: true}); - - const syncHandle1 = await fileHandle.createSyncAccessHandle(); - await promise_rejects_dom( - t, 'InvalidStateError', fileHandle.createSyncAccessHandle()); - - await syncHandle1.close(); - const syncHandle2 = await fileHandle.createSyncAccessHandle(); - await syncHandle2.close(); -}, 'There can only be one open access handle at any given time'); - -directory_test(async (t, root_dir) => { - const fooFileHandle = await root_dir.getFileHandle('foo.test', {create: true}); - const barFileHandle = await root_dir.getFileHandle('bar.test', {create: true}); - - const fooSyncHandle = await fooFileHandle.createSyncAccessHandle(); - t.add_cleanup(() => fooSyncHandle.close()); - - const barSyncHandle1 = await barFileHandle.createSyncAccessHandle(); - await promise_rejects_dom( - t, 'InvalidStateError', barFileHandle.createSyncAccessHandle()); - - await barSyncHandle1.close(); - const barSyncHandle2 = await barFileHandle.createSyncAccessHandle(); - await barSyncHandle2.close(); -}, 'An access handle from one file does not interfere with the creation of an' + - ' access handle on another file'); - -directory_test(async (t, root_dir) => { - const fooFileHandle = await root_dir.getFileHandle('foo.test', {create: true}); - const barFileHandle = await root_dir.getFileHandle('bar.test', {create: true}); - - const fooWritable = await fooFileHandle.createWritable(); - t.add_cleanup(() => fooWritable.close()); - - const barSyncHandle = await barFileHandle.createSyncAccessHandle(); - t.add_cleanup(() => barSyncHandle.close()); -}, 'A writable stream from one file does not interfere with the creation of an' + - ' access handle on another file'); - -directory_test(async (t, root_dir) => { - const fooFileHandle = await root_dir.getFileHandle('foo.test', {create: true}); - const barFileHandle = await root_dir.getFileHandle('bar.test', {create: true}); - - const fooSyncHandle = await fooFileHandle.createSyncAccessHandle(); - t.add_cleanup(() => fooSyncHandle.close()); - - const barWritable = await barFileHandle.createWritable(); - t.add_cleanup(() => barWritable.close()); -}, 'An access handle from one file does not interfere with the creation of a' + - ' writable stream on another file'); - -directory_test(async (t, root_dir) => { - const fileHandle = await root_dir.getFileHandle('OPFS.test', {create: true}); - - const syncHandle = await fileHandle.createSyncAccessHandle(); - await promise_rejects_dom( - t, 'InvalidStateError', fileHandle.createWritable()); - - await syncHandle.close(); - const writable = await fileHandle.createWritable(); - await writable.close(); -}, 'Writable streams cannot be created if there is an open access handle'); - -directory_test(async (t, root_dir) => { - const fileHandle = await root_dir.getFileHandle('OPFS.test', {create: true}); - - const writable1 = await fileHandle.createWritable(); - const writable2 = await fileHandle.createWritable(); - await promise_rejects_dom( - t, 'InvalidStateError', fileHandle.createSyncAccessHandle()); - - await writable1.close(); - await promise_rejects_dom( - t, 'InvalidStateError', fileHandle.createSyncAccessHandle()); - - await writable2.close(); - const syncHandle = await fileHandle.createSyncAccessHandle(); - await syncHandle.close(); -}, 'Access handles cannot be created if there are open Writable streams'); - -done(); diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-close.https.tentative.worker.js b/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-close.https.tentative.worker.js deleted file mode 100644 index 870eeb6e5fc..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-close.https.tentative.worker.js +++ /dev/null @@ -1,90 +0,0 @@ -importScripts("/resources/testharness.js"); -importScripts('resources/sync-access-handle-test.js'); - -'use strict'; - -sync_access_handle_test(async (testCase, handle) => { - assert_equals(await handle.close(), undefined); - - assert_equals(await handle.close(), undefined); -}, 'SyncAccessHandle.close is idempotent'); - -sync_access_handle_test(async (testCase, handle) => { - const closePromise = handle.close(); - - assert_equals(await handle.close(), undefined); - assert_equals(await closePromise, undefined); -}, 'SyncAccessHandle.close is idempotent when called immediately'); - -sync_access_handle_test(async (testCase, handle) => { - assert_equals(await handle.close(), undefined); - - const readBuffer = new Uint8Array(4); - assert_throws_dom('InvalidStateError', () => handle.read(readBuffer, {at: 0})); -}, 'SyncAccessHandle.read fails after SyncAccessHandle.close settles'); - -sync_access_handle_test(async (testCase, handle) => { - const closePromise = handle.close(); - - const readBuffer = new Uint8Array(4); - assert_throws_dom('InvalidStateError', () => handle.read(readBuffer, {at: 0})); - assert_equals(await closePromise, undefined); -}, 'SyncAccessHandle.read fails immediately after calling SyncAccessHandle.close'); - -sync_access_handle_test(async (testCase, handle) => { - assert_equals(await handle.close(), undefined); - - const writeBuffer = new Uint8Array(4); - writeBuffer.set([96, 97, 98, 99]); - assert_throws_dom('InvalidStateError', () => handle.write(writeBuffer, {at: 0})); -}, 'SyncAccessHandle.write fails after SyncAccessHandle.close settles'); - -sync_access_handle_test(async (testCase, handle) => { - const closePromise = handle.close(); - - const writeBuffer = new Uint8Array(4); - writeBuffer.set([96, 97, 98, 99]); - assert_throws_dom('InvalidStateError', () => handle.write(writeBuffer, {at: 0})); - assert_equals(await closePromise, undefined); -}, 'SyncAccessHandle.write fails immediately after calling SyncAccessHandle.close'); - -sync_access_handle_test(async (testCase, handle) => { - assert_equals(await handle.close(), undefined); - - await promise_rejects_dom(testCase, 'InvalidStateError', handle.flush()); -}, 'SyncAccessHandle.flush fails after SyncAccessHandle.close settles'); - -sync_access_handle_test(async (testCase, handle) => { - const closePromise = handle.close(); - - await promise_rejects_dom(testCase, 'InvalidStateError', handle.flush()); - assert_equals(await closePromise, undefined); -}, 'SyncAccessHandle.flush fails immediately after calling SyncAccessHandle.close'); - -sync_access_handle_test(async (testCase, handle) => { - assert_equals(await handle.close(), undefined); - - await promise_rejects_dom(testCase, 'InvalidStateError', handle.getSize()); -}, 'SyncAccessHandle.getSize fails after SyncAccessHandle.close settles'); - -sync_access_handle_test(async (testCase, handle) => { - const closePromise = handle.close(); - - await promise_rejects_dom(testCase, 'InvalidStateError', handle.getSize()); - assert_equals(await closePromise, undefined); -}, 'SyncAccessHandle.getSize fails immediately after calling SyncAccessHandle.close'); - -sync_access_handle_test(async (testCase, handle) => { - assert_equals(await handle.close(), undefined); - - await promise_rejects_dom(testCase, 'InvalidStateError', handle.truncate(4)); -}, 'SyncAccessHandle.truncate fails after SyncAccessHandle.close settles'); - -sync_access_handle_test(async (testCase, handle) => { - const closePromise = handle.close(); - - await promise_rejects_dom(testCase, 'InvalidStateError', handle.truncate(4)); - assert_equals(await closePromise, undefined); -}, 'SyncAccessHandle.truncate fails immediately after calling SyncAccessHandle.close'); - -done(); diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-flush.https.tentative.worker.js b/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-flush.https.tentative.worker.js deleted file mode 100644 index 0893747ed97..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-flush.https.tentative.worker.js +++ /dev/null @@ -1,49 +0,0 @@ -importScripts('/resources/testharness.js'); -importScripts('resources/sync-access-handle-test.js'); - -'use strict'; - -sync_access_handle_test(async (t, handle) => { - await handle.flush(); -}, 'Test flush on an empty file.'); - -sync_access_handle_test(async (t, handle) => { - if (!('TextEncoder' in self)) { - return; - } - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - const text = 'Hello Storage Foundation'; - const writeBuffer = new TextEncoder().encode(text); - handle.write(writeBuffer, {at: 0}); - await handle.flush(); - let readBuffer = new Uint8Array(text.length); - handle.read(readBuffer, {at: 0}); - assert_equals( - text, new TextDecoder().decode(readBuffer), - 'Check that the written bytes and the read bytes match'); -}, -'SyncAccessHandle.read returns bytes written by SyncAccessHandle.write' + - ' after SyncAccessHandle.flush'); - -sync_access_handle_test(async (testCase, handle) => { - const flushPromise = handle.flush(); - const readBuffer = new Uint8Array(4); - assert_throws_dom( - 'InvalidStateError', () => handle.read(readBuffer, {at: 0})); - assert_equals(await flushPromise, undefined); -}, -'SyncAccessHandle.read fails when there is a pending SyncAccessHandle.flush'); - -sync_access_handle_test(async (testCase, handle) => { - const flushPromise = handle.flush(); - const writeBuffer = new Uint8Array(4); - writeBuffer.set([96, 97, 98, 99]); - assert_throws_dom( - 'InvalidStateError', () => handle.write(writeBuffer, {at: 0})); - assert_equals(await flushPromise, undefined); -}, -'SyncAccessHandle.write fails when there is a pending SyncAccessHandle.flush'); - -done(); diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-getSize.https.tentative.worker.js b/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-getSize.https.tentative.worker.js deleted file mode 100644 index 9a18b171b5d..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-getSize.https.tentative.worker.js +++ /dev/null @@ -1,26 +0,0 @@ -importScripts("/resources/testharness.js"); -importScripts('resources/sync-access-handle-test.js'); - -'use strict'; - -sync_access_handle_test(async (testCase, handle) => { - assert_equals(await handle.getSize(), 0); - const bufferSize = 4; - const writeBuffer = new Uint8Array(bufferSize); - writeBuffer.set([96, 97, 98, 99]); - handle.write(writeBuffer, {at: 0}); - assert_equals(await handle.getSize(), bufferSize); - let offset = 3; - handle.write(writeBuffer, {at: offset}); - assert_equals(await handle.getSize(), bufferSize + offset); - offset = 10; - handle.write(writeBuffer, {at: offset}); - assert_equals(await handle.getSize(), bufferSize + offset); -}, 'test SyncAccessHandle.getSize after SyncAccessHandle.write'); - -sync_access_handle_test(async (testCase, handle) => { - const getSizePromise = handle.getSize(); - await promise_rejects_dom(testCase, 'InvalidStateError', handle.getSize()); - assert_equals(await getSizePromise, 0); -}, 'test createSyncAccessHandle.getSize with pending operation'); -done(); diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-read-write.https.tentative.worker.js b/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-read-write.https.tentative.worker.js deleted file mode 100644 index eb93c0681b2..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-read-write.https.tentative.worker.js +++ /dev/null @@ -1,189 +0,0 @@ -importScripts("/resources/testharness.js"); -importScripts('resources/sync-access-handle-test.js'); - -'use strict'; - -sync_access_handle_test((t, handle) => { - const readBuffer = new Uint8Array(24); - const readBytes = handle.read(readBuffer, {at: 0}); - assert_equals(0, readBytes, 'Check that no bytes were read'); -}, 'Test reading an empty file through a sync access handle.'); - -sync_access_handle_test((t, handle) => { - if (!('TextEncoder' in self)) { - return; - } - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - const text = 'Hello Storage Foundation'; - const writeBuffer = new TextEncoder().encode(text); - const writtenBytes = handle.write(writeBuffer, {at: 0}); - assert_equals( - writeBuffer.byteLength, writtenBytes, - 'Check that all bytes were written.'); - let readBuffer = new Uint8Array(writtenBytes); - let readBytes = handle.read(readBuffer, {at: 0}); - assert_equals(writtenBytes, readBytes, 'Check that all bytes were read'); - assert_equals( - text, new TextDecoder().decode(readBuffer), - 'Check that the written bytes and the read bytes match'); - - // Test a read of less bytes than available. - const expected = 'Storage'; - readBuffer = new Uint8Array(expected.length); - readBytes = handle.read(readBuffer, {at: text.indexOf(expected)}); - assert_equals(readBuffer.length, readBytes, 'Check that all bytes were read'); - const actual = new TextDecoder().decode(readBuffer); - assert_equals( - expected, actual, - 'Partial read returned unexpected contents'); -}, 'Test writing and reading through a sync access handle.'); - -sync_access_handle_test((t, handle) => { - if (!('TextEncoder' in self)) { - return; - } - - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - for (text of ['Hello', 'Longer Text']) { - const writeBuffer = new TextEncoder().encode(text); - const writtenBytes = handle.write(writeBuffer, {at: 0}); - assert_equals( - writeBuffer.byteLength, writtenBytes, - 'Check that all bytes were written.'); - const readBuffer = new Uint8Array(writtenBytes); - const readBytes = handle.read(readBuffer, {at: 0}); - assert_equals(writtenBytes, readBytes, 'Check that all bytes were read'); - assert_equals( - text, new TextDecoder().decode(readBuffer), - 'Check that the written bytes and the read bytes match'); - } -}, 'Test second write that is bigger than the first write'); - -sync_access_handle_test((t, handle) => { - if (!('TextEncoder' in self)) { - return; - } - - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - for (tuple - of [{input: 'Hello World', expected: 'Hello World'}, - {input: 'foobar', expected: 'foobarWorld'}]) { - const text = tuple.input; - const expected = tuple.expected; - const writeBuffer = new TextEncoder().encode(text); - const writtenBytes = handle.write(writeBuffer, {at: 0}); - assert_equals( - writeBuffer.byteLength, writtenBytes, - 'Check that all bytes were written.'); - const readBuffer = new Uint8Array(expected.length); - const readBytes = handle.read(readBuffer, {at: 0}); - assert_equals(expected.length, readBytes, 'Check that all bytes were read'); - assert_equals( - expected, new TextDecoder().decode(readBuffer), - 'Check that the written bytes and the read bytes match'); - } -}, 'Test second write that is smaller than the first write'); - -sync_access_handle_test((t, handle) => { - const expected = 17; - const writeBuffer = new Uint8Array(1); - writeBuffer[0] = expected; - const offset = 5; - const writtenBytes = handle.write(writeBuffer, {at: offset}); - assert_equals( - writeBuffer.byteLength, writtenBytes, - 'Check that all bytes were written.'); - const fileLength = writeBuffer.byteLength + offset; - const readBuffer = new Uint8Array(fileLength); - const readBytes = handle.read(readBuffer, {at: 0}); - assert_equals(fileLength, readBytes, 'Check that all bytes were read'); - for (let i = 0; i < offset; ++i) { - assert_equals( - readBuffer[i], 0, - `Gaps in the file should be filled with 0, but got ${readBuffer[i]}.`); - } - - assert_equals( - readBuffer[offset], expected, - 'Gaps in the file should be filled with 0.'); -}, 'Test initial write with an offset'); - -sync_access_handle_test((t, handle) => { - if (!('TextEncoder' in self)) { - return; - } - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - for (tuple - of [{input: 'Hello World', expected: 'Hello World', offset: 0}, - {input: 'foobar', expected: 'Hello foobar', offset: 6}]) { - const text = tuple.input; - const expected = tuple.expected; - const offset = tuple.offset; - const writeBuffer = new TextEncoder().encode(text); - const writtenBytes = handle.write(writeBuffer, {at: offset}); - assert_equals( - writeBuffer.byteLength, writtenBytes, - 'Check that all bytes were written.'); - const readBuffer = new Uint8Array(expected.length); - const readBytes = handle.read(readBuffer, {at: 0}); - assert_equals(expected.length, readBytes, 'Check that all bytes were read'); - const actual = new TextDecoder().decode(readBuffer); - assert_equals( - expected, actual, - 'Check content read from the handle'); - } -}, 'Test overwriting the file at an offset'); - -sync_access_handle_test((t, handle) => { - if (!('TextEncoder' in self)) { - return; - } - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - const text = 'Hello Storage Foundation'; - const writeBuffer = new TextEncoder().encode(text); - const writtenBytes = handle.write(writeBuffer, {at: 0}); - assert_equals( - writeBuffer.byteLength, writtenBytes, - 'Check that all bytes were written.'); - const bufferLength = text.length; - for (tuple - of [{offset: 0, expected: text}, - {offset: 6, expected: text.substring(6)}]) { - const offset = tuple.offset; - const expected = tuple.expected; - - const readBuffer = new Uint8Array(bufferLength); - const readBytes = handle.read(readBuffer, {at: offset}); - assert_equals(expected.length, readBytes, 'Check that all bytes were read'); - const actual = new TextDecoder().decode(readBuffer); - assert_true( - actual.startsWith(expected), - `Expected to read ${expected} but the actual value was ${actual}.`); - } - - const readBuffer = new Uint8Array(bufferLength); - // Offset is greater than the file length. - const readBytes = handle.read(readBuffer, {at: bufferLength + 1}); - assert_equals(0, readBytes, 'Check that no bytes were read'); - for (let i = 0; i < readBuffer.byteLength; ++i) { - assert_equals(0, readBuffer[i], 'Check that the read buffer is unchanged.'); - } -}, 'Test read at an offset'); - -sync_access_handle_test((t, handle) => { - const readBuffer = new Uint8Array(24); - assert_throws_dom( - 'NotSupportedError', () => handle.read(readBuffer, { at: -1 })); -}, 'Test reading at a negative offset fails.'); - -done(); diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-truncate.https.tentative.worker.js b/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-truncate.https.tentative.worker.js deleted file mode 100644 index 01ccbdb78e8..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-truncate.https.tentative.worker.js +++ /dev/null @@ -1,42 +0,0 @@ -importScripts("/resources/testharness.js"); -importScripts('resources/sync-access-handle-test.js'); - -'use strict'; - -sync_access_handle_test(async (testCase, handle) => { - const getSizePromise = handle.getSize(); - await promise_rejects_dom(testCase, 'InvalidStateError', handle.truncate(4)); - assert_equals(await getSizePromise, 0); -}, 'test createSyncAccessHandle.truncate with pending operation'); - -sync_access_handle_test(async (testCase, handle) => { - await handle.truncate(4); - assert_equals(await handle.getSize(), 4); - - await handle.truncate(2); - assert_equals(await handle.getSize(), 2); - - await handle.truncate(7); - assert_equals(await handle.getSize(), 7); - - await promise_rejects_js(testCase, TypeError, handle.truncate(-4)); -}, 'test SyncAccessHandle.truncate with different sizes'); - -sync_access_handle_test(async (testCase, handle) => { - const writeBuffer = new Uint8Array(4); - writeBuffer.set([96, 97, 98, 99]); - handle.write(writeBuffer, {at: 0}); - - await handle.truncate(2); - let readBuffer = new Uint8Array(6); - assert_equals(2, handle.read(readBuffer, {at: 0})); - let expected = new Uint8Array(6); - expected.set([96, 97, 0, 0, 0, 0]); - assert_array_equals(expected, readBuffer); - - // Resize the file to 6, expect that everything beyond the old size is '0'. - await handle.truncate(6); - assert_equals(6, handle.read(readBuffer, {at: 0})); - assert_array_equals(expected, readBuffer); -}, 'test SyncAccessHandle.truncate after SyncAccessHandle.write'); -done(); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-isSameEntry.js b/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-isSameEntry.js deleted file mode 100644 index 8c0b3521c3f..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-isSameEntry.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; - -directory_test(async (t, root_dir) => { - assert_true(await root_dir.isSameEntry(root_dir)); - - const subdir = await createDirectory(t, 'subdir-name', root_dir); - assert_true(await subdir.isSameEntry(subdir)); -}, 'isSameEntry for identical directory handles returns true'); - -directory_test(async (t, root_dir) => { - const subdir = await createDirectory(t, 'subdir-name', root_dir); - - assert_false(await root_dir.isSameEntry(subdir)); - assert_false(await subdir.isSameEntry(root_dir)); -}, 'isSameEntry for different directories returns false'); - -directory_test(async (t, root_dir) => { - const subdir = await createDirectory(t, 'subdir-name', root_dir); - const subdir2 = await root_dir.getDirectoryHandle('subdir-name'); - - assert_true(await subdir.isSameEntry(subdir2)); - assert_true(await subdir2.isSameEntry(subdir)); -}, 'isSameEntry for different handles for the same directory'); - -directory_test(async (t, root_dir) => { - const handle = await createEmptyFile(t, 'mtime.txt', root_dir); - - assert_true(await handle.isSameEntry(handle)); -}, 'isSameEntry for identical file handles returns true'); - -directory_test(async (t, root_dir) => { - const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir); - const handle2 = await createEmptyFile(t, 'foo.txt', root_dir); - - assert_false(await handle1.isSameEntry(handle2)); - assert_false(await handle2.isSameEntry(handle1)); -}, 'isSameEntry for different files returns false'); - -directory_test(async (t, root_dir) => { - const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir); - const handle2 = await root_dir.getFileHandle('mtime.txt'); - - assert_true(await handle1.isSameEntry(handle2)); - assert_true(await handle2.isSameEntry(handle1)); -}, 'isSameEntry for different handles for the same file'); - -directory_test(async (t, root_dir) => { - const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir); - const subdir = await createDirectory(t, 'subdir-name', root_dir); - const handle2 = await createEmptyFile(t, 'mtime.txt', subdir); - - assert_false(await handle1.isSameEntry(handle2)); - assert_false(await handle2.isSameEntry(handle1)); -}, 'isSameEntry comparing a file to a file in a different directory returns false'); - -directory_test(async (t, root_dir) => { - const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir); - const handle2 = await createDirectory(t, 'subdir-name', root_dir); - - assert_false(await handle1.isSameEntry(handle2)); - assert_false(await handle2.isSameEntry(handle1)); -}, 'isSameEntry comparing a file to a directory returns false'); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-remove.js b/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-remove.js index 2306bde7cdb..95196db62b3 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-remove.js +++ b/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-remove.js @@ -91,3 +91,8 @@ directory_test(async (t, root) => { assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']); await promise_rejects_dom(t, 'NotFoundError', getFileContents(handle)); }, 'remove() while the file has an open writable fails'); + +promise_test(async (t) => { + const root = await navigator.storage.getDirectory(); + await promise_rejects_dom(t, 'NoModificationAllowedError', root.remove()); +}, 'cannot remove the root of a sandbox file system'); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-move.js b/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-move.js index 856c1f32932..abdbc9ef2bf 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-move.js +++ b/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-move.js @@ -27,7 +27,6 @@ directory_test(async (t, root) => { assert_array_equals(await getSortedDirectoryEntries(dir), ['file-in-dir']); }, 'move(name) to rename a non-empty directory'); - directory_test(async (t, root) => { const dir = await root.getDirectoryHandle('dir-before', {create: true}); await dir.move(root, 'dir-after'); @@ -50,7 +49,7 @@ directory_test(async (t, root) => { const dir_dest = await root.getDirectoryHandle('dir-dest', {create: true}); const dir_in_dir = await dir_src.getDirectoryHandle('dir-in-dir', {create: true}); - await dir_in_dir.move(dir_dest, ""); + await dir_in_dir.move(dir_dest); assert_array_equals( await getSortedDirectoryEntries(root), ['dir-dest/', 'dir-src/']); @@ -58,7 +57,7 @@ directory_test(async (t, root) => { assert_array_equals( await getSortedDirectoryEntries(dir_dest), ['dir-in-dir/']); assert_array_equals(await getSortedDirectoryEntries(dir_in_dir), []); -}, 'move(dir, "") to move an empty directory to a new directory'); +}, 'move(dir) to move an empty directory to a new directory'); directory_test(async (t, root) => { const dir_src = await root.getDirectoryHandle('dir-src', {create: true}); @@ -82,7 +81,7 @@ directory_test(async (t, root) => { await dir_src.getDirectoryHandle('dir-in-dir', {create: true}); const file = await createFileWithContents(t, 'file-in-dir', 'abc', dir_in_dir); - await dir_in_dir.move(dir_dest, ""); + await dir_in_dir.move(dir_dest); assert_array_equals( await getSortedDirectoryEntries(root), ['dir-dest/', 'dir-src/']); @@ -93,7 +92,7 @@ directory_test(async (t, root) => { await getSortedDirectoryEntries(dir_in_dir), ['file-in-dir']); // `file` should be invalidated after moving directories. await promise_rejects_dom(t, 'NotFoundError', getFileContents(file)); -}, 'move(dir, "") to move a non-empty directory to a new directory'); +}, 'move(dir) to move a non-empty directory to a new directory'); directory_test(async (t, root) => { const dir_src = await root.getDirectoryHandle('dir-src', {create: true}); @@ -142,33 +141,6 @@ directory_test(async (t, root) => { assert_equals(await getFileContents(handle), 'foo'); }, 'move(dir) can be called multiple times'); -directory_test(async (t, root) => { - const dir1 = await root.getDirectoryHandle('dir1', {create: true}); - const dir2 = await root.getDirectoryHandle('dir2', {create: true}); - const handle = await createFileWithContents(t, 'file', 'foo', root); - - await handle.move(dir1, ""); - assert_array_equals( - await getSortedDirectoryEntries(root), ['dir1/', 'dir2/']); - assert_array_equals(await getSortedDirectoryEntries(dir1), ['file']); - assert_array_equals(await getSortedDirectoryEntries(dir2), []); - assert_equals(await getFileContents(handle), 'foo'); - - await handle.move(dir2, ""); - assert_array_equals( - await getSortedDirectoryEntries(root), ['dir1/', 'dir2/']); - assert_array_equals(await getSortedDirectoryEntries(dir1), []); - assert_array_equals(await getSortedDirectoryEntries(dir2), ['file']); - assert_equals(await getFileContents(handle), 'foo'); - - await handle.move(root, ""); - assert_array_equals( - await getSortedDirectoryEntries(root), ['dir1/', 'dir2/', 'file']); - assert_array_equals(await getSortedDirectoryEntries(dir1), []); - assert_array_equals(await getSortedDirectoryEntries(dir2), []); - assert_equals(await getFileContents(handle), 'foo'); -}, 'move(dir, "") can be called multiple times'); - directory_test(async (t, root) => { const dir1 = await root.getDirectoryHandle('dir1', {create: true}); const dir2 = await root.getDirectoryHandle('dir2', {create: true}); @@ -198,13 +170,44 @@ directory_test(async (t, root) => { directory_test(async (t, root) => { const handle = await createFileWithContents(t, 'file-before', 'foo', root); + const valid_name = '#$23423@352^*3243'; + await handle.move(root, valid_name); + + assert_array_equals(await getSortedDirectoryEntries(root), [valid_name]); + assert_equals(await getFileContents(handle), 'foo'); + assert_equals(await getFileSize(handle), 3); + + const contains_invalid_characters = '/file\\'; await promise_rejects_js( - t, TypeError, handle.move(root, '#$23423@352^*3243')); + t, TypeError, handle.move(root, contains_invalid_characters)); + + assert_array_equals(await getSortedDirectoryEntries(root), [valid_name]); + assert_equals(await getFileContents(handle), 'foo'); + assert_equals(await getFileSize(handle), 3); + + const empty_name = ''; + await promise_rejects_js(t, TypeError, handle.move(root, empty_name)); + + assert_array_equals(await getSortedDirectoryEntries(root), [valid_name]); + assert_equals(await getFileContents(handle), 'foo'); + assert_equals(await getFileSize(handle), 3); + + const banned_name = '..'; + await promise_rejects_js(t, TypeError, handle.move(root, banned_name)); + + assert_array_equals(await getSortedDirectoryEntries(root), [valid_name]); + assert_equals(await getFileContents(handle), 'foo'); + assert_equals(await getFileSize(handle), 3); +}, 'move(dir, name) with a name with invalid characters should fail'); + +directory_test(async (t, root) => { + const handle = await createFileWithContents(t, 'file-before', 'foo', root); + await promise_rejects_js(t, TypeError, handle.move(root, '')); assert_array_equals(await getSortedDirectoryEntries(root), ['file-before']); assert_equals(await getFileContents(handle), 'foo'); assert_equals(await getFileSize(handle), 3); -}, 'move(dir, name) with a name with invalid characters should fail'); +}, 'move(dir, "") should fail'); directory_test(async (t, root) => { const dir = await root.getDirectoryHandle('dir', {create: true}); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-removeEntry.js b/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-removeEntry.js deleted file mode 100644 index 01e2ebe1088..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-removeEntry.js +++ /dev/null @@ -1,103 +0,0 @@ - -directory_test(async (t, root) => { - const handle = - await createFileWithContents(t, 'file-to-remove', '12345', root); - await createFileWithContents(t, 'file-to-keep', 'abc', root); - await root.removeEntry('file-to-remove'); - - assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']); - await promise_rejects_dom(t, 'NotFoundError', getFileContents(handle)); -}, 'removeEntry() to remove a file'); - -directory_test(async (t, root) => { - const handle = - await createFileWithContents(t, 'file-to-remove', '12345', root); - await root.removeEntry('file-to-remove'); - - await promise_rejects_dom(t, 'NotFoundError', root.removeEntry('file-to-remove')); -}, 'removeEntry() on an already removed file should fail'); - -directory_test(async (t, root) => { - const dir = await root.getDirectoryHandle('dir-to-remove', {create: true}); - await createFileWithContents(t, 'file-to-keep', 'abc', root); - await root.removeEntry('dir-to-remove'); - - assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']); - await promise_rejects_dom(t, 'NotFoundError', getSortedDirectoryEntries(dir)); -}, 'removeEntry() to remove an empty directory'); - -directory_test(async (t, root) => { - const dir = await root.getDirectoryHandle('dir-to-remove', {create: true}); - t.add_cleanup(() => root.removeEntry('dir-to-remove', {recursive: true})); - await createEmptyFile(t, 'file-in-dir', dir); - - await promise_rejects_dom( - t, 'InvalidModificationError', root.removeEntry('dir-to-remove')); - assert_array_equals( - await getSortedDirectoryEntries(root), ['dir-to-remove/']); - assert_array_equals(await getSortedDirectoryEntries(dir), ['file-in-dir']); -}, 'removeEntry() on a non-empty directory should fail'); - -directory_test(async (t, root) => { - // root - // ├──file-to-keep - // ├──dir-to-remove - // ├── file0 - // ├── dir1-in-dir - // │   └── file1 - // └── dir2 - const dir = await root.getDirectoryHandle('dir-to-remove', {create: true}); - await createFileWithContents(t, 'file-to-keep', 'abc', root); - await createEmptyFile(t, 'file0', dir); - const dir1_in_dir = await createDirectory(t, 'dir1-in-dir', dir); - await createEmptyFile(t, 'file1', dir1_in_dir); - await createDirectory(t, 'dir2-in-dir', dir); - - await root.removeEntry('dir-to-remove', {recursive: true}); - assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']); -}, 'removeEntry() on a directory recursively should delete all sub-items'); - -directory_test(async (t, root) => { - const dir = await createDirectory(t, 'dir', root); - await promise_rejects_js(t, TypeError, dir.removeEntry('')); -}, 'removeEntry() with empty name should fail'); - -directory_test(async (t, root) => { - const dir = await createDirectory(t, 'dir', root); - await promise_rejects_js(t, TypeError, dir.removeEntry(kCurrentDirectory)); -}, `removeEntry() with "${kCurrentDirectory}" name should fail`); - -directory_test(async (t, root) => { - const dir = await createDirectory(t, 'dir', root); - await promise_rejects_js(t, TypeError, dir.removeEntry(kParentDirectory)); -}, `removeEntry() with "${kParentDirectory}" name should fail`); - -directory_test(async (t, root) => { - const dir_name = 'dir-name'; - const dir = await createDirectory(t, dir_name, root); - - const file_name = 'file-name'; - await createEmptyFile(t, file_name, dir); - - for (let i = 0; i < kPathSeparators.length; ++i) { - const path_with_separator = `${dir_name}${kPathSeparators[i]}${file_name}`; - await promise_rejects_js( - t, TypeError, root.removeEntry(path_with_separator), - `removeEntry() must reject names containing "${kPathSeparators[i]}"`); - } -}, 'removeEntry() with a path separator should fail.'); - -directory_test(async (t, root) => { - const handle = - await createFileWithContents(t, 'file-to-remove', '12345', root); - await createFileWithContents(t, 'file-to-keep', 'abc', root); - - const writable = await handle.createWritable(); - await root.removeEntry('file-to-remove'); - await promise_rejects_dom(t, 'NotFoundError', getFileContents(handle)); - - await writable.close(); - assert_array_equals( - await getSortedDirectoryEntries(root), - ['file-to-keep', 'file-to-remove']); -}, 'removeEntry() while the file has an open writable succeeds'); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemSyncAccessHandle-flush.js b/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemSyncAccessHandle-flush.js deleted file mode 100644 index 74517f6cf38..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemSyncAccessHandle-flush.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -// This script depends on the following scripts: -// /file-system-access/resources/messaging-helpers.js - -sync_access_handle_test(async handle => { - await handle.flush(); -}, 'Test flush on an empty file.'); diff --git a/tests/wpt/web-platform-tests/focus/activeelement-after-calling-window-focus.sub.html b/tests/wpt/web-platform-tests/focus/activeelement-after-calling-window-focus.sub.html new file mode 100644 index 00000000000..34579fb2a63 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/activeelement-after-calling-window-focus.sub.html @@ -0,0 +1,93 @@ + + +activeElement after calling window.focus() + + + + diff --git a/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-different-site-iframe-then-immediately-focusing-back.html b/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-different-site-iframe-then-immediately-focusing-back.html new file mode 100644 index 00000000000..b2385705bc6 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-different-site-iframe-then-immediately-focusing-back.html @@ -0,0 +1,54 @@ + + +activeElement when focusing different-site iframe then immediately focusing back + + + diff --git a/tests/wpt/web-platform-tests/focus/focus-event-after-focusing-iframes.html b/tests/wpt/web-platform-tests/focus/focus-event-after-focusing-iframes.html index b7076a2e480..f2aa2233e56 100644 --- a/tests/wpt/web-platform-tests/focus/focus-event-after-focusing-iframes.html +++ b/tests/wpt/web-platform-tests/focus/focus-event-after-focusing-iframes.html @@ -15,6 +15,10 @@ function waitForEvent(target, event, checkFn) { }); } +function start(w) { + w.postMessage("start", "*"); +} + function focusIframe(w) { w.postMessage("focus", "*"); } @@ -38,6 +42,7 @@ async function runTest(t, url) { let w = window.open(url); t.add_cleanup(() => { w.close(); }); await waitForEvent(window, "message", e => e.data === "ready"); + start(w); focusIframe(w); assert_equals(await getLog(w), 'outerlog:willfocusiframe,windowblur,didfocusiframe,innerlog:windowfocus,'); focusIframe(w); diff --git a/tests/wpt/web-platform-tests/focus/focus-event-after-iframe-gets-focus.html b/tests/wpt/web-platform-tests/focus/focus-event-after-iframe-gets-focus.html index 32c4d544b6c..bb2e8954209 100644 --- a/tests/wpt/web-platform-tests/focus/focus-event-after-iframe-gets-focus.html +++ b/tests/wpt/web-platform-tests/focus/focus-event-after-iframe-gets-focus.html @@ -15,6 +15,10 @@ function waitForEvent(target, event, checkFn) { }); } +function start(w) { + w.postMessage("start", "*"); +} + function focusIframe(w) { w.postMessage("focus", "*"); } @@ -38,6 +42,7 @@ async function runTest(t, url, expectResult) { let w = window.open(url); t.add_cleanup(() => { w.close(); }); await waitForEvent(window, "message", e => e.data === "ready"); + start(w); focusIframe(w); assert_equals(await getLog(w), expectResult); } diff --git a/tests/wpt/web-platform-tests/focus/scroll-matches-focus.html b/tests/wpt/web-platform-tests/focus/scroll-matches-focus.html new file mode 100644 index 00000000000..46a58fdf974 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/scroll-matches-focus.html @@ -0,0 +1,47 @@ + + +:focus applies before scrolling into view + + + + + + +
    +
    I am focusable
    +
    + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-inner.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-inner.html new file mode 100644 index 00000000000..1fa14d4b8a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-inner.html @@ -0,0 +1,38 @@ + + + + + Focus test inner document + + +

    Inner

    + + + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-middle.sub.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-middle.sub.html new file mode 100644 index 00000000000..c5a0d60a71d --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-middle.sub.html @@ -0,0 +1,30 @@ + + +Focus test middle document +

    Middle


    + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-outer-different.sub.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-outer-different.sub.html new file mode 100644 index 00000000000..2cddcf233db --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-outer-different.sub.html @@ -0,0 +1,35 @@ + + +Focus test outer document + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-outer-same.sub.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-outer-same.sub.html new file mode 100644 index 00000000000..4833e94bc94 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-calling-window-focus-outer-same.sub.html @@ -0,0 +1,29 @@ + + +Focus test outer document + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-then-immediately-focusing-back-outer.sub.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-then-immediately-focusing-back-outer.sub.html new file mode 100644 index 00000000000..6f38616380d --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-then-immediately-focusing-back-outer.sub.html @@ -0,0 +1,39 @@ + + +activeElement when focusing different-site iframe then immediately focusing back outer + + + diff --git a/tests/wpt/web-platform-tests/focus/support/focus-event-after-different-site-iframe-gets-focus-outer.sub.html b/tests/wpt/web-platform-tests/focus/support/focus-event-after-different-site-iframe-gets-focus-outer.sub.html index c59b2ce72f8..da107ab8a27 100644 --- a/tests/wpt/web-platform-tests/focus/support/focus-event-after-different-site-iframe-gets-focus-outer.sub.html +++ b/tests/wpt/web-platform-tests/focus/support/focus-event-after-different-site-iframe-gets-focus-outer.sub.html @@ -7,7 +7,11 @@ let outerlog = "outerlog:"; let iframe = document.querySelector("iframe"); window.onmessage = function(e) { - if (e.data == "focus") { + if (e.data == "start") { + window.onfocus = function() { + outerlog += "windowfocus,"; + }; + } else if (e.data == "focus") { iframe.contentWindow.postMessage("focus", "*"); } else if (e.data == "getlog") { iframe.contentWindow.postMessage("getlog", "*"); @@ -17,10 +21,6 @@ window.onmessage = function(e) { }; window.onload = function() { - window.onfocus = function() { - outerlog += "windowfocus,"; - }; - window.onblur = function() { outerlog += "windowblur,"; }; diff --git a/tests/wpt/web-platform-tests/focus/support/focus-event-after-focusing-different-site-iframes-outer.sub.html b/tests/wpt/web-platform-tests/focus/support/focus-event-after-focusing-different-site-iframes-outer.sub.html index 7d2fb504d66..7c02a6b6409 100644 --- a/tests/wpt/web-platform-tests/focus/support/focus-event-after-focusing-different-site-iframes-outer.sub.html +++ b/tests/wpt/web-platform-tests/focus/support/focus-event-after-focusing-different-site-iframes-outer.sub.html @@ -7,7 +7,11 @@ let outerlog = "outerlog:"; let iframe = document.querySelector("iframe"); window.onmessage = function(e) { - if (e.data == "focus") { + if (e.data == "start") { + window.onfocus = function() { + outerlog += "windowfocus,"; + }; + } else if (e.data == "focus") { outerlog += "willfocusiframe,"; iframe.focus(); outerlog += "didfocusiframe,"; @@ -19,10 +23,6 @@ window.onmessage = function(e) { }; window.onload = function() { - window.onfocus = function() { - outerlog += "windowfocus,"; - }; - window.onblur = function() { outerlog += "windowblur,"; }; diff --git a/tests/wpt/web-platform-tests/focus/support/focus-event-after-focusing-same-site-iframes-outer.html b/tests/wpt/web-platform-tests/focus/support/focus-event-after-focusing-same-site-iframes-outer.html index 08f2c3f7ae2..9147b681c2d 100644 --- a/tests/wpt/web-platform-tests/focus/support/focus-event-after-focusing-same-site-iframes-outer.html +++ b/tests/wpt/web-platform-tests/focus/support/focus-event-after-focusing-same-site-iframes-outer.html @@ -7,7 +7,11 @@ let outerlog = "outerlog:"; let iframe = document.querySelector("iframe"); window.onmessage = function(e) { - if (e.data == "focus") { + if (e.data == "start") { + window.onfocus = function() { + outerlog += "windowfocus,"; + }; + } else if (e.data == "focus") { outerlog += "willfocusiframe,"; document.querySelector("iframe").focus(); outerlog += "didfocusiframe,"; @@ -19,10 +23,6 @@ window.onmessage = function(e) { }; window.onload = function() { - window.onfocus = function() { - outerlog += "windowfocus,"; - }; - window.onblur = function() { outerlog += "windowblur,"; }; diff --git a/tests/wpt/web-platform-tests/focus/support/focus-event-after-innermost-different-site-iframe-gets-focus-outer.sub.html b/tests/wpt/web-platform-tests/focus/support/focus-event-after-innermost-different-site-iframe-gets-focus-outer.sub.html index 12af71e8aae..fc0fb50e432 100644 --- a/tests/wpt/web-platform-tests/focus/support/focus-event-after-innermost-different-site-iframe-gets-focus-outer.sub.html +++ b/tests/wpt/web-platform-tests/focus/support/focus-event-after-innermost-different-site-iframe-gets-focus-outer.sub.html @@ -7,7 +7,11 @@ let outerlog = "outerlog:"; let iframe = document.querySelector("iframe"); window.onmessage = function(e) { - if (e.data == "focus") { + if (e.data == "start") { + window.onfocus = function() { + outerlog += "windowfocus,"; + }; + } else if (e.data == "focus") { iframe.contentWindow.postMessage("focus", "*"); } else if (e.data == "getlog") { iframe.contentWindow.postMessage("getlog", "*"); @@ -17,10 +21,6 @@ window.onmessage = function(e) { }; window.onload = function() { - window.onfocus = function() { - outerlog += "windowfocus,"; - }; - window.onblur = function() { outerlog += "windowblur,"; }; diff --git a/tests/wpt/web-platform-tests/focus/support/focus-event-after-same-site-iframe-gets-focus-outer.html b/tests/wpt/web-platform-tests/focus/support/focus-event-after-same-site-iframe-gets-focus-outer.html index b191be580ea..c6799f0edb9 100644 --- a/tests/wpt/web-platform-tests/focus/support/focus-event-after-same-site-iframe-gets-focus-outer.html +++ b/tests/wpt/web-platform-tests/focus/support/focus-event-after-same-site-iframe-gets-focus-outer.html @@ -7,7 +7,11 @@ let outerlog = "outerlog:"; let iframe = document.querySelector("iframe"); window.onmessage = function(e) { - if (e.data == "focus") { + if (e.data == "start") { + window.onfocus = function() { + outerlog += "windowfocus,"; + }; + } else if (e.data == "focus") { iframe.contentWindow.postMessage("focus", "*"); } else if (e.data == "getlog") { iframe.contentWindow.postMessage("getlog", "*"); @@ -17,10 +21,6 @@ window.onmessage = function(e) { }; window.onload = function() { - window.onfocus = function() { - outerlog += "windowfocus,"; - }; - window.onblur = function() { outerlog += "windowblur,"; }; diff --git a/tests/wpt/web-platform-tests/font-access/font_access-blob.tentative.https.window.js b/tests/wpt/web-platform-tests/font-access/font_access-blob.tentative.https.window.js deleted file mode 100644 index ff90075c966..00000000000 --- a/tests/wpt/web-platform-tests/font-access/font_access-blob.tentative.https.window.js +++ /dev/null @@ -1,4 +0,0 @@ -//META: script=/resources/testdriver.js -//META: script=/resources/testdriver-vendor.js -//META: script=resources/test-expectations.js -//META: script=resources/window-tests-blob.js diff --git a/tests/wpt/web-platform-tests/font-access/font_access-enumeration.tentative.https.window.js b/tests/wpt/web-platform-tests/font-access/font_access-enumeration.tentative.https.window.js deleted file mode 100644 index 677fe82c702..00000000000 --- a/tests/wpt/web-platform-tests/font-access/font_access-enumeration.tentative.https.window.js +++ /dev/null @@ -1,4 +0,0 @@ -//META: script=/resources/testdriver.js -//META: script=/resources/testdriver-vendor.js -//META: script=resources/test-expectations.js -//META: script=resources/window-tests-enumeration.js diff --git a/tests/wpt/web-platform-tests/font-access/font_access_basic.tentative.https.window.js b/tests/wpt/web-platform-tests/font-access/font_access_basic.tentative.https.window.js new file mode 100644 index 00000000000..669fa31e1a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/font_access_basic.tentative.https.window.js @@ -0,0 +1,39 @@ +//META: script=/resources/testdriver.js +//META: script=/resources/testdriver-vendor.js +//META: script=resources/font-asserts.js +//META: script=resources/font-data.js +//META: script=resources/font-test-utils.js + +'use strict'; + +font_access_test(async t => { + // Fonts we know about. Not all expected fonts are included. + const testData = getTestData(); + + // Get the system fonts. + const fonts = await self.queryLocalFonts(); + assert_true(Array.isArray(fonts), 'Result of query() should be an Array'); + assert_greater_than_equal(fonts.length, 1, 'Need a least one font'); + + fonts.forEach(font => { + assert_true( + font instanceof FontData, 'Results should be FontData instances'); + + // Verify properties and types. + assert_equals(typeof font.postscriptName, 'string'); + assert_true( + font.postscriptName.split('').every(c => (' ' <= c && c < '\x7f')), + `postscriptName should be printable ASCII: "${font.postscriptName}"` + ); + assert_equals(typeof font.fullName, 'string', 'fullName attribute type'); + assert_equals(typeof font.family, 'string', 'family attribute type'); + assert_equals(typeof font.style, 'string', 'style attribute type'); + + // If the sample test data contains the returned system font, + // then verify the values of FontData. + const expectedFont = testData.get(font.postscriptName); + if (expectedFont) { + assert_font_equals(font, expectedFont); + } + }); +}, 'queryLocalFonts(): FontData property types and values'); diff --git a/tests/wpt/web-platform-tests/font-access/font_access_blob.tentative.https.window.js b/tests/wpt/web-platform-tests/font-access/font_access_blob.tentative.https.window.js new file mode 100644 index 00000000000..0dfe0ac9685 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/font_access_blob.tentative.https.window.js @@ -0,0 +1,32 @@ +//META: script=/resources/testdriver.js +//META: script=/resources/testdriver-vendor.js +//META: script=resources/font-asserts.js +//META: script=resources/font-data.js +//META: script=resources/font-test-utils.js + +'use strict'; + +font_access_test(async t => { + const fonts = await self.queryLocalFonts(); + + // Fonts we know about. Not all expected fonts are included. + const testData = getTestData(); + // Reduce down the size of results for testing purposes. + const filteredFonts = filterFonts(fonts, [...testData.keys()]); + + for (const font of filteredFonts) { + const data = await font.blob(); + assert_not_equals(data.size, 0, 'Blob has a positive size.'); + assert_equals( + data.type, 'application/octet-stream', + 'Returned Blob is of type octet-stream.'); + const buffer = await data.arrayBuffer(); + assert_not_equals(buffer.length, 0, 'Returned ArrayBuffer is not empty.'); + + const parsedData = await parseFontData(data); + assert_version_info(parsedData.versionTag); + assert_not_equals( + parsedData.tables.size, 0, "Should not have tables of size zero."); + assert_font_has_tables(font.postscriptName, parsedData.tables, BASE_TABLES); + } +}, 'FontData.blob(): blob has expected format and parsable table data.'); diff --git a/tests/wpt/web-platform-tests/font-access/font_access_detached_iframe.tentative.https.window.js b/tests/wpt/web-platform-tests/font-access/font_access_detached_iframe.tentative.https.window.js new file mode 100644 index 00000000000..bce925bfc04 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/font_access_detached_iframe.tentative.https.window.js @@ -0,0 +1,43 @@ +//META: script=/resources/testdriver.js +//META: script=/resources/testdriver-vendor.js +//META: script=resources/font-test-utils.js + +'use strict'; + +font_access_test(async t => { + const iframe = document.createElement('iframe'); + document.body.appendChild(iframe); + + const frameWindow = iframe.contentWindow; + const frameDOMException = iframe.contentWindow.DOMException; + iframe.remove(); + + await promise_rejects_dom( + t, 'InvalidStateError', frameDOMException, frameWindow.queryLocalFonts()); +}, 'queryLocalFonts() must return an error when called from a detached frame.'); + +font_access_test(async t => { + const iframe = document.createElement('iframe'); + document.body.appendChild(iframe); + + iframe.contentWindow.queryLocalFonts; + iframe.remove(); + + // Call queryLocalFonts() in the main frame. This should keep the test running + // long enough to catch any crash from the queryLocalFonts() call in the + // removed iframe. + await self.queryLocalFonts(); +}, 'Detaching iframe while queryLocalFonts() settles.'); + +font_access_test(async t => { + const iframe = document.createElement('iframe'); + document.body.appendChild(iframe); + + const iframeFonts = await iframe.contentWindow.queryLocalFonts(); + assert_greater_than_equal(iframeFonts.length, 1, 'Need a least one font'); + const iframeFontData = iframeFonts[0]; + const frameDOMException = iframe.contentWindow.DOMException; + iframe.remove(); + + iframeFontData.blob(); +}, 'FontData.blob() should not crash when called from a detached iframe.'); diff --git a/tests/wpt/web-platform-tests/font-access/font_access_permission.tentative.https.window.js b/tests/wpt/web-platform-tests/font-access/font_access_permission.tentative.https.window.js new file mode 100644 index 00000000000..cb7aabfc6b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/font_access_permission.tentative.https.window.js @@ -0,0 +1,24 @@ +//META: script=/resources/testdriver.js +//META: script=/resources/testdriver-vendor.js + +'use strict'; + +promise_test(async t => { + const fonts = await self.queryLocalFonts(); + assert_equals( + fonts.length, 0, 'Fonts are not returned with permission not given.'); +}, 'queryLocalFonts(): permission not given'); + +promise_test(async t => { + await test_driver.set_permission({name: 'local-fonts'}, 'denied'); + const fonts = await self.queryLocalFonts(); + assert_equals( + fonts.length, 0, 'Fonts are not returned with permission denied.'); +}, 'queryLocalFonts(): permission denied'); + +promise_test(async t => { + await test_driver.set_permission({name: 'local-fonts'}, 'granted'); + const fonts = await self.queryLocalFonts(); + assert_greater_than_equal( + fonts.length, 1, 'Fonts are returned with permission granted.'); +}, 'queryLocalFonts(): permission granted'); diff --git a/tests/wpt/web-platform-tests/font-access/font_access_query_select.tentative.https.window.js b/tests/wpt/web-platform-tests/font-access/font_access_query_select.tentative.https.window.js new file mode 100644 index 00000000000..86ddb490605 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/font_access_query_select.tentative.https.window.js @@ -0,0 +1,101 @@ +//META: script=/resources/testdriver.js +//META: script=/resources/testdriver-vendor.js +//META: script=resources/font-asserts.js +//META: script=resources/font-data.js +//META: script=resources/font-test-utils.js + +font_access_test(async t => { + const testData = getTestData(); + assert_greater_than_equal( + testData.size, 1, 'Need a least one test font data.'); + const testFont = testData.values().next().value; + + const queryInput = { + postscriptNames: [testFont.postscriptName] + }; + const fonts = await self.queryLocalFonts(queryInput); + + assert_equals( + fonts.length, 1, 'The result length should match the test length.'); + assert_font_equals(fonts[0], testFont); +}, 'queryLocalFonts(): valid postscript name in QueryOptions'); + +font_access_test(async t => { + const queryInput = { + postscriptNames: ['invalid_postscript_name'] + }; + const fonts = await self.queryLocalFonts(queryInput); + + assert_equals( + fonts.length, 0, + 'Fonts should not be selected for an invalid postscript name.'); +}, 'queryLocalFonts(): invalid postscript name in QueryOptions'); + +font_access_test(async t => { + const fonts = await self.queryLocalFonts({}); + + assert_greater_than_equal( + fonts.length, 1, + 'All available fonts should be returned when an empty object is passed.'); +}, 'queryLocalFonts(): empty object for QueryOptions.postscriptNames'); + +font_access_test(async t => { + const queryInput = { + invalidFieldName: [] + }; + const fonts = await self.queryLocalFonts(queryInput); + + assert_greater_than_equal( + fonts.length, 1, + 'All available fonts should be returned when an invalid field name for ' + + 'QueryOptions is passed.'); +}, 'queryLocalFonts(): invalid QueryOptions field'); + +font_access_test(async t => { + const queryInput = { + postscriptNames: [] + }; + const fonts = await self.queryLocalFonts(queryInput); + + assert_equals( + fonts.length, 0, + 'Fonts should not be selected when an empty list for ' + + 'QueryOptions.postscriptNames is passed.'); +}, 'queryLocalFonts(): empty QueryOptions.postscriptNames list'); + +font_access_test(async t => { + const fonts = await self.queryLocalFonts(undefined); + + assert_greater_than_equal( + fonts.length, 1, + 'All available fonts should be returned when undefined is passed for ' + + 'input.'); +}, 'queryLocalFonts(): undefined QueryOptions'); + +const non_ascii_input = [ + {postscriptNames: ['¥']}, + {postscriptNames: ['ß']}, + {postscriptNames: ['🎵']}, + // UTF-16LE, encodes to the same first four bytes as "Ahem" in ASCII. + {postscriptNames: ['\u6841\u6d65']}, + // U+6C34 CJK UNIFIED IDEOGRAPH (water) + {postscriptNames: ['\u6C34']}, + // U+1D11E MUSICAL SYMBOL G-CLEF (UTF-16 surrogate pair) + {postscriptNames: ['\uD834\uDD1E']}, + // U+FFFD REPLACEMENT CHARACTER + {postscriptNames: ['\uFFFD']}, + // UTF-16 surrogate lead + {postscriptNames: ['\uD800']}, + // UTF-16 surrogate trail + {postscriptNames: ['\uDC00']}, +]; + +for (const test of non_ascii_input) { + font_access_test(async t => { + const fonts = await self.queryLocalFonts(test); + assert_equals( + fonts.length, 0, + 'Fonts should not be selected for non-ASCII character input: ' + + JSON.stringify(fonts)); + }, `queryLocalFonts(): non-ASCII character input: ${JSON.stringify(test)}`); +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/font-access/font_access_sorted.tentative.https.window.js b/tests/wpt/web-platform-tests/font-access/font_access_sorted.tentative.https.window.js new file mode 100644 index 00000000000..49933e17c87 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/font_access_sorted.tentative.https.window.js @@ -0,0 +1,18 @@ +//META: script=/resources/testdriver.js +//META: script=/resources/testdriver-vendor.js +//META: script=resources/font-asserts.js +//META: script=resources/font-test-utils.js + +'use strict'; + +font_access_test(async t => { + // The following tests that fonts are sorted. Postscript names are expected to + // be encoded in a subset of the ASCII character set. + // See: https://docs.microsoft.com/en-us/typography/opentype/spec/name + // Should the Postscript name contain characters that are multi-byte, this + // test may erroneously fail. + const fonts = await self.queryLocalFonts(); + const fontNames = fonts.map(fontData => fontData.postscriptName); + const expectedFontNames = [...fontNames].sort(); + assert_array_equals(fontNames, expectedFontNames); +}, 'queryLocalFonts(): fonts are sorted'); diff --git a/tests/wpt/web-platform-tests/font-access/font_metadata.tentative.https.window.js b/tests/wpt/web-platform-tests/font-access/font_metadata.tentative.https.window.js deleted file mode 100644 index 672bc082f2d..00000000000 --- a/tests/wpt/web-platform-tests/font-access/font_metadata.tentative.https.window.js +++ /dev/null @@ -1,60 +0,0 @@ -//META: script=/resources/testdriver.js -//META: script=/resources/testdriver-vendor.js -//META: script=resources/test-expectations.js - -'use strict'; - -font_access_test(async t => { - const fonts = await navigator.fonts.query(); - assert_true(Array.isArray(fonts), 'Result of query() should be an Array'); - assert_greater_than_equal(fonts.length, 1, 'Need a least one font'); - - fonts.forEach(font => { - assert_true(font instanceof FontMetadata, - 'Results should be FontMetadata instances'); - - // Verify properties and types. This is partially redundant with an IDL - // test but more domain-specific tests are be done. - assert_equals(typeof font.postscriptName, 'string'); - assert_true( - font.postscriptName.split('').every(c => ' ' <= c && c < '\x7f'), - `postscriptName should be printable ASCII: "${font.postscriptName}"` - ); - - assert_equals(typeof font.fullName, 'string', 'fullName attribute type'); - assert_equals(typeof font.family, 'string', 'family attribute type'); - assert_equals(typeof font.style, 'string', 'style attribute type'); - }); -}, 'FontMetadata property types and value ranges'); - - -font_access_test(async t => { - // Fonts we know about. - const testSet = getEnumerationTestSet(); - - // Get the system fonts. - let fonts = await navigator.fonts.query(); - assert_true(Array.isArray(fonts), 'Result of query() should be an Array'); - - // Filter to the ones we care about. - fonts = await filterEnumeration(fonts, testSet); - assert_greater_than_equal(fonts.length, 1, 'Need a least one font'); - - const expectations = new Map(); - for (const expectation of testSet) { - expectations.set(expectation.postscriptName, expectation); - } - - const results = []; - fonts.forEach(font => { - const expectation = expectations.get(font.postscriptName); - assert_not_equals(expectation, undefined); - - assert_equals(font.fullName, expectation.fullName, - `${font.postscriptName}: fullName should match`); - assert_equals(font.family, expectation.family, - `${font.postscriptName}: family should match`); - assert_equals(font.style, expectation.style, - `${font.postscriptName}: style should match`); - }); -}, 'Expected FontMetadata values for for well-known system fonts'); diff --git a/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html new file mode 100644 index 00000000000..d829cc4a3b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html @@ -0,0 +1,28 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy-attribute.https.sub.html b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy-attribute.https.sub.html new file mode 100644 index 00000000000..ba802606a1f --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy-attribute.https.sub.html @@ -0,0 +1,27 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy.https.sub.html b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy.https.sub.html new file mode 100644 index 00000000000..ed3538f657c --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy.https.sub.html @@ -0,0 +1,34 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy.https.sub.html.headers b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy.https.sub.html.headers new file mode 100644 index 00000000000..d88db128d90 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-allowed-by-permissions-policy.https.sub.html.headers @@ -0,0 +1 @@ +Permissions-Policy: local-fonts=* \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-default-permissions-policy.https.sub.html b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-default-permissions-policy.https.sub.html new file mode 100644 index 00000000000..ce166b608e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-default-permissions-policy.https.sub.html @@ -0,0 +1,34 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-disabled-by-permissions-policy.https.sub.html b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-disabled-by-permissions-policy.https.sub.html new file mode 100644 index 00000000000..fed61515c3a --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-disabled-by-permissions-policy.https.sub.html @@ -0,0 +1,32 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-disabled-by-permissions-policy.https.sub.html.headers b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-disabled-by-permissions-policy.https.sub.html.headers new file mode 100644 index 00000000000..f52d4e0d721 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-disabled-by-permissions-policy.https.sub.html.headers @@ -0,0 +1 @@ +Permissions-Policy: local-fonts=() \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-supported-by-permissions-policy.html b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-supported-by-permissions-policy.html new file mode 100644 index 00000000000..671c0fa5392 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/permissions-policy/local-fonts-supported-by-permissions-policy.html @@ -0,0 +1,11 @@ + +Test that local fonts is advertised in the feature list + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/font-access/resources/font-asserts.js b/tests/wpt/web-platform-tests/font-access/resources/font-asserts.js new file mode 100644 index 00000000000..7094d8f0bf3 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/resources/font-asserts.js @@ -0,0 +1,38 @@ +'use strict'; + +function assert_font_equals(actualFont, expectedFont) { + assert_equals( + actualFont.postscriptName, expectedFont.postscriptName, + `${actualFont.postscriptName}: postscriptName should match`); + assert_equals( + actualFont.fullName, expectedFont.fullName, + `${actualFont.postscriptName}: fullName should match`); + assert_equals( + actualFont.family, expectedFont.family, + `${actualFont.postscriptName}: family should match`); + assert_equals( + actualFont.style, expectedFont.style, + `${actualFont.postscriptName}: style should match`); +} + +function assert_font_has_tables(fontName, actualTables, expectedTables) { + for (const expectedTable of expectedTables) { + assert_equals( + expectedTable.length, 4, 'Table names are always 4 characters long.'); + assert_true( + actualTables.has(expectedTable), + `Font ${fontName} did not have required table ${expectedTable}.`); + assert_greater_than( + actualTables.get(expectedTable).size, 0, + `Font ${fontName} has table ${expectedTable} of size 0.`); + } +} + +function assert_version_info(versionTag) { + // Spec: https://docs.microsoft.com/en-us/typography/opentype/spec/otff#organization-of-an-opentype-font + assert_true(versionTag === '\x00\x01\x00\x00' || + versionTag === 'true' || + versionTag === 'typ1' || + versionTag === 'OTTO', + `Invalid sfnt version tag: ${versionTag}`); +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/font-access/resources/font-data.js b/tests/wpt/web-platform-tests/font-access/resources/font-data.js new file mode 100644 index 00000000000..f8e7023e676 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/resources/font-data.js @@ -0,0 +1,66 @@ +'use strict'; + +// The OpenType spec mentions that the follow tables are required for a font to +// function correctly. We'll have all the tables listed except for OS/2, which +// is not present in all fonts on Mac OS. +// https://docs.microsoft.com/en-us/typography/opentype/spec/otff#font-tables +const BASE_TABLES = [ + 'cmap', + 'head', + 'hhea', + 'hmtx', + 'maxp', + 'name', + 'post', +]; + +const MAC_FONTS = new Map([ + ['Monaco', { + postscriptName: 'Monaco', + fullName: 'Monaco', + family: 'Monaco', + style: 'Regular', + }], + ['Menlo-Regular', { + postscriptName: 'Menlo-Regular', + fullName: 'Menlo Regular', + family: 'Menlo', + style: 'Regular', + }], +]); + +const WIN_FONTS = new Map([ + ['Verdana', { + postscriptName: 'Verdana', + fullName: 'Verdana', + family: 'Verdana', + style: 'Regular', + }], +]); + +const LINUX_FONTS = new Map([ + ['Ahem', { + postscriptName: 'Ahem', + fullName: 'Ahem', + family: 'Ahem', + style: 'Regular', + }], +]); + +// Returns a map of known system fonts, mapping a font's postscript name to +// FontData. +function getTestData() { + let output = undefined; + if (navigator.platform.indexOf("Win") !== -1) { + output = WIN_FONTS; + } else if (navigator.platform.indexOf("Mac") !== -1) { + output = MAC_FONTS; + } else if (navigator.platform.indexOf("Linux") !== -1) { + output = LINUX_FONTS; + } + + assert_not_equals( + output, undefined, 'Cannot get test set due to unsupported platform.'); + + return output; +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/font-access/resources/font-test-utils.js b/tests/wpt/web-platform-tests/font-access/resources/font-test-utils.js new file mode 100644 index 00000000000..e183b35bfa0 --- /dev/null +++ b/tests/wpt/web-platform-tests/font-access/resources/font-test-utils.js @@ -0,0 +1,101 @@ +'use strict'; + +// Filters an array of FontData by font names. Used to reduce down +// the size of test data. +function filterFonts(fonts, filter) { + const filteredFont = []; + for (const font of fonts) { + if (filter.includes(font.postscriptName)) { + filteredFont.push(font); + } + } + return filteredFont; +} + +async function parseFontData(fontBlob) { + // Parsed result to be returned. + const fontInfo = {}; + + try { + // Parse the version info. + fontInfo.versionTag = await getTag(fontBlob, 0); + // Parse the table data. + const numTables = await getUint16(fontBlob, 4); + [fontInfo.tables, fontInfo.tableMeta] = + await getTableData(fontBlob, numTables); + } catch (error) { + throw `Error parsing font table: ${error.message}`; + } + + return fontInfo; +} + +async function getTableData(fontBlob, numTables) { + const dataMap = new Map(); + const metaMap = new Map(); + let blobOffset = 12; + + for (let i = 0; i < numTables; i++) { + const tag = await getTag(fontBlob, blobOffset); + const checksum = await getUint32(fontBlob, blobOffset + 4); + const offset = await getUint32(fontBlob, blobOffset + 8); + const size = await getUint32(fontBlob, blobOffset + 12); + const tableBlob = fontBlob.slice(offset, offset + size); + dataMap.set(tag, tableBlob); + metaMap.set(tag, {checksum, offset, size}); + blobOffset += 16; + } + + return [dataMap, metaMap]; +} + +async function getTag(blob, offset) { + return (new TextDecoder).decode( + await blob.slice(offset, offset + 4).arrayBuffer()); +} + +async function getUint16(blob, offset) { + const slice = blob.slice(offset, offset + 2); + const buf = await slice.arrayBuffer(); + const dataView = new DataView(buf); + return dataView.getUint16(0); +} + +async function getUint32(blob, offset) { + const slice = blob.slice(offset, offset + 4); + const buf = await slice.arrayBuffer(); + const dataView = new DataView(buf); + return dataView.getUint32(0); +} + +function promiseDocumentReady() { + return new Promise(resolve => { + if (document.readyState === 'complete') { + resolve(); + } + window.addEventListener('load', () => { + resolve(); + }, {once: true}); + }); +} + +function isPlatformSupported() { + if (navigator.platform.indexOf('Mac') !== -1 || + navigator.platform.indexOf('Win') !== -1 || + navigator.platform.indexOf('Linux') !== -1) { + return true; + } + return false; +} + +function font_access_test(test_function, name, properties) { + return promise_test(async (t) => { + if (!isPlatformSupported()) { + await promise_rejects_dom( + t, 'NotSupportedError', self.queryLocalFonts()); + return; + } + await test_driver.set_permission({name: 'local-fonts'}, 'granted'); + await test_function(t, name, properties); + }); +} diff --git a/tests/wpt/web-platform-tests/font-access/resources/test-expectations.js b/tests/wpt/web-platform-tests/font-access/resources/test-expectations.js deleted file mode 100644 index 69f4ae70a99..00000000000 --- a/tests/wpt/web-platform-tests/font-access/resources/test-expectations.js +++ /dev/null @@ -1,568 +0,0 @@ -'use strict'; - -const TEST_SIZE_CATEGORY = { - // Fonts with file smaller than 1MiB. - small: 'small', - // Fonts with file between 1 and 20MiB. - medium: 'medium', - // Fonts with file larger than 20MiB. - large: 'large', -}; - -const MAC_FONTS = [ - { - postscriptName: 'Monaco', - fullName: 'Monaco', - family: 'Monaco', - style: 'Regular', - label: TEST_SIZE_CATEGORY.small, - expectedTables: [ - // Tables related to TrueType. - 'cvt ', - 'glyf', - 'loca', - 'prep', - 'gasp', - ], - }, - { - postscriptName: 'Menlo-Regular', - fullName: 'Menlo Regular', - family: 'Menlo', - style: 'Regular', - label: TEST_SIZE_CATEGORY.medium, - expectedTables: [ - 'cvt ', - 'glyf', - 'loca', - 'prep', - ], - }, - { - postscriptName: 'Menlo-Bold', - fullName: 'Menlo Bold', - family: 'Menlo', - style: 'Bold', - label: TEST_SIZE_CATEGORY.medium, - expectedTables: [ - 'cvt ', - 'glyf', - 'loca', - 'prep', - ], - }, - { - postscriptName: 'Menlo-BoldItalic', - fullName: 'Menlo Bold Italic', - family: 'Menlo', - style: 'Bold Italic', - label: TEST_SIZE_CATEGORY.medium, - expectedTables: [ - 'cvt ', - 'glyf', - 'loca', - 'prep', - ], - }, - // Indic. - { - postscriptName: 'GujaratiMT', - fullName: 'Gujarati MT', - family: 'Gujarati MT', - style: 'Regular', - label: TEST_SIZE_CATEGORY.small, - expectedTables: [ - 'cvt ', - 'glyf', - 'loca', - 'prep', - ], - }, - { - postscriptName: 'GujaratiMT-Bold', - fullName: 'Gujarati MT Bold', - family: 'Gujarati MT', - style: 'Bold', - label: TEST_SIZE_CATEGORY.small, - expectedTables: [ - 'cvt ', - 'glyf', - 'loca', - 'prep', - ], - }, - { - postscriptName: 'DevanagariMT', - fullName: 'Devanagari MT', - family: 'Devanagari MT', - style: 'Regular', - label: TEST_SIZE_CATEGORY.small, - expectedTables: [ - 'cvt ', - 'glyf', - 'loca', - 'prep', - ], - }, - { - postscriptName: 'DevanagariMT-Bold', - fullName: 'Devanagari MT Bold', - family: 'Devanagari MT', - style: 'Bold', - label: TEST_SIZE_CATEGORY.small, - expectedTables: [ - 'cvt ', - 'glyf', - 'loca', - 'prep', - ], - }, - // Japanese. - { - postscriptName: 'HiraMinProN-W3', - fullName: 'Hiragino Mincho ProN W3', - family: 'Hiragino Mincho ProN', - style: 'W3', - label: TEST_SIZE_CATEGORY.medium, - expectedTables: [ - 'CFF ', - 'VORG', - ], - }, - { - postscriptName: 'HiraMinProN-W6', - fullName: 'Hiragino Mincho ProN W6', - family: 'Hiragino Mincho ProN', - style: 'W6', - label: TEST_SIZE_CATEGORY.medium, - expectedTables: [ - 'CFF ', - 'VORG', - ], - }, - // Korean. - { - postscriptName: 'AppleGothic', - fullName: 'AppleGothic Regular', - family: 'AppleGothic', - style: 'Regular', - label: TEST_SIZE_CATEGORY.medium, - expectedTables: [ - 'cvt ', - 'glyf', - 'loca', - ], - }, - { - postscriptName: 'AppleMyungjo', - fullName: 'AppleMyungjo Regular', - family: 'AppleMyungjo', - style: 'Regular', - label: TEST_SIZE_CATEGORY.medium, - expectedTables: [ - 'cvt ', - 'glyf', - 'loca', - ], - }, - // Chinese. - { - postscriptName: 'STHeitiTC-Light', - fullName: 'Heiti TC Light', - family: 'Heiti TC', - style: 'Light', - label: TEST_SIZE_CATEGORY.large, - expectedTables: [ - 'cvt ', - 'glyf', - 'loca', - 'prep', - ], - }, - { - postscriptName: 'STHeitiTC-Medium', - fullName: 'Heiti TC Medium', - family: 'Heiti TC', - style: 'Medium', - label: TEST_SIZE_CATEGORY.large, - expectedTables: [ - 'cvt ', - 'glyf', - 'loca', - 'prep', - ], - }, - // Bitmap. - { - postscriptName: 'AppleColorEmoji', - fullName: 'Apple Color Emoji', - family: 'Apple Color Emoji', - style: 'Regular', - label: TEST_SIZE_CATEGORY.large, - expectedTables: [ - 'glyf', - 'loca', - // Tables related to Bitmap Glyphs. - 'sbix', - ], - }, -]; - -const WIN_FONTS = [ - { - postscriptName: 'Verdana', - fullName: 'Verdana', - family: 'Verdana', - style: 'Regular', - label: TEST_SIZE_CATEGORY.small, - expectedTables: [ - // Tables related to TrueType. - 'cvt ', - 'glyf', - 'loca', - 'prep', - 'gasp', - ], - }, - { - postscriptName: 'Verdana-Bold', - fullName: 'Verdana Bold', - family: 'Verdana', - style: 'Bold', - label: TEST_SIZE_CATEGORY.small, - expectedTables: [ - // Tables related to TrueType. - 'cvt ', - 'glyf', - 'loca', - 'prep', - 'gasp', - ], - }, - { - postscriptName: 'Verdana-Italic', - fullName: 'Verdana Italic', - family: 'Verdana', - style: 'Italic', - label: TEST_SIZE_CATEGORY.small, - expectedTables: [ - // Tables related to TrueType. - 'cvt ', - 'glyf', - 'loca', - 'prep', - 'gasp', - ], - }, - // Korean. - { - postscriptName: 'MalgunGothicBold', - fullName: 'Malgun Gothic Bold', - family: 'Malgun Gothic', - style: 'Bold', - label: TEST_SIZE_CATEGORY.medium, - expectedTables: [ - // Tables related to TrueType. - 'cvt ', - 'glyf', - 'loca', - 'prep', - 'gasp', - ], - }, - // Chinese. - { - postscriptName: 'MicrosoftYaHei', - fullName: 'Microsoft YaHei', - family: 'Microsoft YaHei', - style: 'Regular', - label: TEST_SIZE_CATEGORY.medium, - }, - { - postscriptName: 'MicrosoftYaHei-Bold', - fullName: 'Microsoft YaHei Bold', - family: 'Microsoft YaHei', - style: 'Bold', - label: TEST_SIZE_CATEGORY.medium, - }, -]; - -const LINUX_FONTS = [ - { - postscriptName: 'Ahem', - fullName: 'Ahem', - family: 'Ahem', - style: 'Regular', - label: TEST_SIZE_CATEGORY.small, - expectedTables: [ - // Tables related to TrueType. - 'cvt ', - 'glyf', - 'loca', - 'prep', - 'gasp', - ], - }, -]; - -// The OpenType spec mentions that the follow tables are required for a font to -// function correctly. We'll have all the tables listed except for OS/2, which -// is not present in all fonts on Mac OS. -// https://docs.microsoft.com/en-us/typography/opentype/spec/otff#font-tables -const BASE_TABLES = [ - 'cmap', - 'head', - 'hhea', - 'hmtx', - 'maxp', - 'name', - 'post', -]; - -function getEnumerationTestSet(options) { - options = Object.assign({ - labelFilter: [], - }, options); - - // Verify (by font family) that some standard fonts have been returned. - let platform; - if (navigator.platform.indexOf("Win") !== -1) { - platform = 'win'; - } else if (navigator.platform.indexOf("Mac") !== -1) { - platform = 'mac'; - } else if (navigator.platform.indexOf("Linux") !== -1) { - platform = 'linux'; - } else { - platform = 'generic'; - } - - assert_not_equals(platform, 'generic', 'Platform must be detected.'); - - let output = []; - if (platform === 'mac') { - output = MAC_FONTS; - } else if (platform === 'win') { - output = WIN_FONTS; - } else if (platform === 'linux') { - // Also includes ChromeOS, on which navigator.platform starts with 'Linux'. - output = LINUX_FONTS; - } - - if (options.labelFilter.length && output.length) { - const labelFilter = new Set(options.labelFilter); - output = output.filter(f => labelFilter.has(f.label)); - } - - return output; -} - -function getMoreExpectedTables(expectations) { - const output = {}; - for (const f of expectations) { - if (f.expectedTables) { - output[f.postscriptName] = f.expectedTables; - } - } - return output; -} - -async function filterEnumeration(fonts, expectedFonts) { - const nameSet = new Set(); - for (const e of expectedFonts) { - nameSet.add(e.postscriptName); - } - - const output = []; - for (const f of fonts) { - if (nameSet.has(f.postscriptName)) { - output.push(f); - } - } - - const numGot = output.length; - const numExpected = Object.keys(expectedFonts).length; - assert_equals(numGot, numExpected, `Got ${numGot} fonts, expected ${numExpected}.`); - - return output; -} - -function assert_fonts_exist(availableFonts, expectedFonts) { - const postscriptNameSet = new Set(); - const fullNameSet = new Set(); - const familySet = new Set(); - const styleSet = new Set(); - - for (const f of expectedFonts) { - postscriptNameSet.add(f.postscriptName); - fullNameSet.add(f.fullName); - familySet.add(f.family); - styleSet.add(f.style); - } - - for (const f of availableFonts) { - postscriptNameSet.delete(f.postscriptName); - fullNameSet.delete(f.fullName); - familySet.delete(f.family); - styleSet.delete(f.style); - } - - assert_equals(postscriptNameSet.size, 0, - `Missing Postscript names: ${setToString(postscriptNameSet)}.`); - assert_equals(fullNameSet.size, 0, - `Missing Full names: ${setToString(fullNameSet)}.`); - assert_equals(familySet.size, 0, - `Missing Families: ${setToString(familySet)}.`); - assert_equals(styleSet.size, 0, `Missing Styles: ${setToString(styleSet)}.`); -} - -function assert_postscript_name_exists( - availableFonts, postscriptNameSelection) { - const postscriptNameSet = new Set(postscriptNameSelection); - - const foundFonts = []; - for (const f of availableFonts) { - if (postscriptNameSet.has(f.postscriptName)) { - foundFonts.push(f.postscriptName); - } - } - - assert_equals( - foundFonts.length, postscriptNameSelection.length, - `Expected to only find selected fonts ${ - JSON.stringify(postscriptNameSelection)}. Instead found: ${ - JSON.stringify(foundFonts)}`); -} - -function assert_font_has_tables(name, tables, expectedTables) { - for (const t of expectedTables) { - assert_equals(t.length, 4, - "Table names are always 4 characters long."); - assert_true(tables.has(t), - `Font ${name} did not have required table ${t}.`); - assert_greater_than(tables.get(t).size, 0, - `Font ${name} has table ${t} of size 0.`); - } -} - -function setToString(set) { - const items = Array.from(set); - return JSON.stringify(items); -} - -async function parseFontData(fontBlob) { - const fontInfo = { - errors: [], - numTables: 0, - }; - const versionTag = await getTag(fontBlob, 0); - - fontInfo.version = sfntVersionInfo(versionTag); - if (fontInfo.version === 'UNKNOWN') { - fontInfo.errors.push(`versionTag: "${versionTag}"`); - } - - const numTables = await getUint16(fontBlob, 4); - [fontInfo.tables, fontInfo.tableMeta] = await getTableData(fontBlob, numTables); - - return fontInfo; -} - -async function getTableData(fontBlob, numTables) { - const dataMap = new Map(); - const metaMap = new Map(); - let blobOffset = 12; - - for (let i = 0; i < numTables; i++) { - const tag = await getTag(fontBlob, blobOffset); - const checksum = await getUint32(fontBlob, blobOffset + 4); - const offset = await getUint32(fontBlob, blobOffset + 8); - const size = await getUint32(fontBlob, blobOffset + 12); - const tableBlob = fontBlob.slice(offset, offset + size); - dataMap.set(tag, tableBlob); - metaMap.set(tag, {checksum, offset, size}); - blobOffset += 16; - } - - return [dataMap, metaMap]; -} - -function sfntVersionInfo(version) { - // Spec: https://docs.microsoft.com/en-us/typography/opentype/spec/otff#organization-of-an-opentype-font - switch (version) { - case '\x00\x01\x00\x00': - case 'true': - case 'typ1': - return 'truetype'; - case 'OTTO': - return 'cff'; - default: - return 'UNKNOWN'; - } -} - -async function getTag(blob, offset) { - return (new TextDecoder).decode( - await blob.slice(offset, offset + 4).arrayBuffer()); -} - -async function getUint16(blob, offset) { - const slice = blob.slice(offset, offset + 2); - const buf = await slice.arrayBuffer(); - const dataView = new DataView(buf); - return dataView.getUint16(0); -} - -async function getUint32(blob, offset) { - const slice = blob.slice(offset, offset + 4); - const buf = await slice.arrayBuffer(); - const dataView = new DataView(buf); - return dataView.getUint32(0); -} - -function promiseDocumentReady() { - return new Promise(resolve => { - if (document.readyState === 'complete') { - resolve(); - } - window.addEventListener('load', () => { - resolve(); - }, {once: true}); - }); -} - -function isPlatformSupported() { - if (navigator.platform.indexOf('Mac') != -1 || - navigator.platform.indexOf('Win') != -1 || - navigator.platform.indexOf('Linux') != -1) { - return true; - } - return false; -} - -async function simulateUserActivation() { - await promiseDocumentReady(); - return new Promise(resolve => { - const button = document.createElement('button'); - button.textContent = 'Click to enumerate fonts'; - button.style.fontSize = '40px'; - button.onclick = () => { - document.body.removeChild(button); - resolve(); - }; - document.body.appendChild(button); - test_driver.click(button); - }); -} - -function font_access_test(test_function, name, properties) { - return promise_test(async (t) => { - if (!isPlatformSupported()) { - await promise_rejects_dom( - t, 'NotSupportedError', navigator.fonts.query()); - return; - } - await test_driver.set_permission({name: 'font-access'}, 'granted'); - await simulateUserActivation(); - await test_function(t, name, properties); - }); -} diff --git a/tests/wpt/web-platform-tests/font-access/resources/window-tests-blob.js b/tests/wpt/web-platform-tests/font-access/resources/window-tests-blob.js deleted file mode 100644 index 3279849c5e2..00000000000 --- a/tests/wpt/web-platform-tests/font-access/resources/window-tests-blob.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -font_access_test(async t => { - const fonts = await navigator.fonts.query(); - const expectedFonts = await filterEnumeration( - fonts, getEnumerationTestSet({labelFilter: [TEST_SIZE_CATEGORY.small]})); - const additionalExpectedTables = getMoreExpectedTables(expectedFonts); - - for (const f of expectedFonts) { - const data = await f.blob(); - assert_not_equals(data.size, 0, 'Returned Blob size slot is populated.'); - const buf = await data.arrayBuffer(); - assert_not_equals(buf.length, 0, 'Returned ArrayBuffer is not empty.'); - assert_equals(data.type, 'application/octet-stream', 'Returned Blob is of type octet-stream.'); - - const parsedData = await parseFontData(data); - assert_not_equals(parsedData.version, 'UNKNOWN', 'SFNT version is a known type.'); - - assert_not_equals(parsedData.tables.size, 0, "Should not have tables of size zero."); - assert_font_has_tables(f.postscriptName, parsedData.tables, BASE_TABLES); - - if (f.postscriptName in additionalExpectedTables) { - assert_font_has_tables(f.postscriptName, - parsedData.tables, - additionalExpectedTables[f.postscriptName]); - } - } -}, 'blob(): fonts have expected tables that are not empty'); diff --git a/tests/wpt/web-platform-tests/font-access/resources/window-tests-enumeration.js b/tests/wpt/web-platform-tests/font-access/resources/window-tests-enumeration.js deleted file mode 100644 index be906f6ed33..00000000000 --- a/tests/wpt/web-platform-tests/font-access/resources/window-tests-enumeration.js +++ /dev/null @@ -1,76 +0,0 @@ -'use strict'; - -const standard_fonts_tests = [ - {}, - {select: []}, -]; - -for (const test of standard_fonts_tests) { - const inputAsString = JSON.stringify(test) ? JSON.stringify(test) : test; - - font_access_test(async t => { - const fonts = - await navigator.fonts.query(test); - - assert_fonts_exist(fonts, getEnumerationTestSet()); - }, `query(): standard fonts returned for input: ${inputAsString}`); -} - -font_access_test(async t => { - const fonts = await navigator.fonts.query(); - // The following tests that fonts are sorted. Postscript names are expected to - // be encoded in a subset of the ASCII character set. - // See: https://docs.microsoft.com/en-us/typography/opentype/spec/name - // Should the Postscript name contain characters that are multi-byte, this - // test may erroneously fail. - let previousFont = null; - for (const font of fonts) { - if (previousFont) { - assert_true( - previousFont.postscriptName < font.postscriptName, - `font is not in expected order. expected: ${ - previousFont.postscriptName} < ${font.postscriptName}`); - } - - previousFont = font; - } -}, 'query(): fonts are sorted'); - -font_access_test(async t => { - const test = { - select: [getEnumerationTestSet()[0].postscriptName] - }; - const fonts = await navigator.fonts.query(test); - - assert_postscript_name_exists(fonts, test.select); - assert_equals( - fonts.length, test.select.length, - 'The result length should match the test length.'); -}, 'query(): fonts are selected for input'); - -const non_ascii_input = [ - {select: ['¥']}, - {select: ['ß']}, - {select: ['🎵']}, - // UTF-16LE, encodes to the same first four bytes as "Ahem" in ASCII. - {select: ['\u6841\u6d65']}, - // U+6C34 CJK UNIFIED IDEOGRAPH (water) - {select: ['\u6C34']}, - // U+1D11E MUSICAL SYMBOL G-CLEF (UTF-16 surrogate pair) - {select: ['\uD834\uDD1E']}, - // U+FFFD REPLACEMENT CHARACTER - {select: ['\uFFFD']}, - // UTF-16 surrogate lead - {select: ['\uD800']}, - // UTF-16 surrogate trail - {select: ['\uDC00']}, -]; - -for (const test of non_ascii_input) { - font_access_test(async t => { - const fonts = await navigator.fonts.query(test); - assert_equals( - fonts.length, 0, - `There should be no results. Instead got: ${JSON.stringify(fonts)}`); - }, `query(): No match for input: ${JSON.stringify(test)}`); -} diff --git a/tests/wpt/web-platform-tests/fonts/math/operators.woff b/tests/wpt/web-platform-tests/fonts/math/operators.woff index 5d7a588a9cd..ec4256ffe5c 100644 Binary files a/tests/wpt/web-platform-tests/fonts/math/operators.woff and b/tests/wpt/web-platform-tests/fonts/math/operators.woff differ diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-53-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-53-ref.html new file mode 100644 index 00000000000..443bc21680b --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-53-ref.html @@ -0,0 +1,28 @@ + + +Forced colors mode - Highlight pseudos use the originating element's forced colors state + + + + +
    This content doesn't have forced-color-adjust set at all
    +
    This content has forced-color-adjust:none on the originating element only
    +
    This content has forced-color-adjust:none on the ::highlight pseudo only
    +
    This content has forced-color-adjust:none on the originating element and the ::highlight pseudo
    + diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-53.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-53.html new file mode 100644 index 00000000000..4726c4bb0a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-53.html @@ -0,0 +1,44 @@ + + +Forced colors mode - Highlight pseudos use the originating element's forced colors state + + + + + +
    This content doesn't have forced-color-adjust set at all
    +
    This content has forced-color-adjust:none on the originating element only
    +
    This content has forced-color-adjust:none on the ::highlight pseudo only
    +
    This content has forced-color-adjust:none on the originating element and the ::highlight pseudo
    + + diff --git a/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-IndexedDB.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-IndexedDB.https.any.js new file mode 100644 index 00000000000..9e67fe88028 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-IndexedDB.https.any.js @@ -0,0 +1,6 @@ +// META: script=resources/test-helpers.js +// META: script=resources/sandboxed-fs-test-helpers.js +// META: script=resources/messaging-helpers.js +// META: script=resources/messaging-serialize-helpers.js +// META: script=/IndexedDB/resources/support-promises.js +// META: script=script-tests/FileSystemBaseHandle-IndexedDB.js diff --git a/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-getUniqueId.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-getUniqueId.https.any.js new file mode 100644 index 00000000000..24ea20244cb --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-getUniqueId.https.any.js @@ -0,0 +1,3 @@ +// META: script=resources/test-helpers.js +// META: script=resources/sandboxed-fs-test-helpers.js +// META: script=script-tests/FileSystemBaseHandle-getUniqueId.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-isSameEntry.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any.js rename to tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-isSameEntry.https.any.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.https.window.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-BroadcastChannel.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.https.window.js rename to tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-BroadcastChannel.https.window.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-Error.https.window.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-Error.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-Error.https.window.js rename to tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-Error.https.window.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-frames.https.window.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-frames.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-frames.https.window.js rename to tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-frames.https.window.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-windows.https.window.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-windows.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-windows.https.window.js rename to tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-windows.https.window.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-workers.https.window.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-workers.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-workers.https.window.js rename to tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-workers.https.window.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-frames.https.window.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-frames.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-frames.https.window.js rename to tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-frames.https.window.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-windows.https.window.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-windows.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-windows.https.window.js rename to tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-windows.https.window.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-workers.https.window.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-workers.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-workers.https.window.js rename to tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-postMessage-workers.https.window.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemDirectoryHandle-getDirectoryHandle.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any.js rename to tests/wpt/web-platform-tests/fs/FileSystemDirectoryHandle-getDirectoryHandle.https.any.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemDirectoryHandle-getFileHandle.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any.js rename to tests/wpt/web-platform-tests/fs/FileSystemDirectoryHandle-getFileHandle.https.any.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemDirectoryHandle-iteration.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any.js rename to tests/wpt/web-platform-tests/fs/FileSystemDirectoryHandle-iteration.https.any.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemDirectoryHandle-removeEntry.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any.js rename to tests/wpt/web-platform-tests/fs/FileSystemDirectoryHandle-removeEntry.https.any.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemDirectoryHandle-resolve.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any.js rename to tests/wpt/web-platform-tests/fs/FileSystemDirectoryHandle-resolve.https.any.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js rename to tests/wpt/web-platform-tests/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-getFile.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any.js rename to tests/wpt/web-platform-tests/fs/FileSystemFileHandle-getFile.https.any.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-move.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-move.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-move.https.any.js rename to tests/wpt/web-platform-tests/fs/FileSystemFileHandle-move.https.any.js diff --git a/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js new file mode 100644 index 00000000000..7f244bc02aa --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js @@ -0,0 +1,87 @@ +importScripts('/resources/testharness.js'); +importScripts('resources/sandboxed-fs-test-helpers.js'); + +'use strict'; + +directory_test(async (t, root_dir) => { + const fileHandle = await root_dir.getFileHandle('OPFS.test', {create: true}); + + const syncHandle1 = await fileHandle.createSyncAccessHandle(); + await promise_rejects_dom( + t, 'NoModificationAllowedError', fileHandle.createSyncAccessHandle()); + + syncHandle1.close(); + const syncHandle2 = await fileHandle.createSyncAccessHandle(); + syncHandle2.close(); +}, 'There can only be one open access handle at any given time'); + +directory_test(async (t, root_dir) => { + const fooFileHandle = await root_dir.getFileHandle('foo.test', {create: true}); + const barFileHandle = await root_dir.getFileHandle('bar.test', {create: true}); + + const fooSyncHandle = await fooFileHandle.createSyncAccessHandle(); + t.add_cleanup(() => fooSyncHandle.close()); + + const barSyncHandle1 = await barFileHandle.createSyncAccessHandle(); + await promise_rejects_dom( + t, 'NoModificationAllowedError', barFileHandle.createSyncAccessHandle()); + + barSyncHandle1.close(); + const barSyncHandle2 = await barFileHandle.createSyncAccessHandle(); + barSyncHandle2.close(); +}, 'An access handle from one file does not interfere with the creation of an' + + ' access handle on another file'); + +directory_test(async (t, root_dir) => { + const fooFileHandle = await root_dir.getFileHandle('foo.test', {create: true}); + const barFileHandle = await root_dir.getFileHandle('bar.test', {create: true}); + + const fooWritable = await fooFileHandle.createWritable(); + t.add_cleanup(() => fooWritable.close()); + + const barSyncHandle = await barFileHandle.createSyncAccessHandle(); + t.add_cleanup(() => barSyncHandle.close()); +}, 'A writable stream from one file does not interfere with the creation of an' + + ' access handle on another file'); + +directory_test(async (t, root_dir) => { + const fooFileHandle = await root_dir.getFileHandle('foo.test', {create: true}); + const barFileHandle = await root_dir.getFileHandle('bar.test', {create: true}); + + const fooSyncHandle = await fooFileHandle.createSyncAccessHandle(); + t.add_cleanup(() => fooSyncHandle.close()); + + const barWritable = await barFileHandle.createWritable(); + t.add_cleanup(() => barWritable.close()); +}, 'An access handle from one file does not interfere with the creation of a' + + ' writable stream on another file'); + +directory_test(async (t, root_dir) => { + const fileHandle = await root_dir.getFileHandle('OPFS.test', {create: true}); + + const syncHandle = await fileHandle.createSyncAccessHandle(); + await promise_rejects_dom( + t, 'NoModificationAllowedError', fileHandle.createWritable()); + syncHandle.close(); + const writable = await fileHandle.createWritable(); + await writable.close(); +}, 'Writable streams cannot be created if there is an open access handle'); + +directory_test(async (t, root_dir) => { + const fileHandle = await root_dir.getFileHandle('OPFS.test', {create: true}); + + const writable1 = await fileHandle.createWritable(); + const writable2 = await fileHandle.createWritable(); + await promise_rejects_dom( + t, 'NoModificationAllowedError', fileHandle.createSyncAccessHandle()); + + await writable1.close(); + await promise_rejects_dom( + t, 'NoModificationAllowedError', fileHandle.createSyncAccessHandle()); + + await writable2.close(); + const syncHandle = await fileHandle.createSyncAccessHandle(); + syncHandle.close(); +}, 'Access handles cannot be created if there are open Writable streams'); + +done(); diff --git a/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-close.https.tentative.worker.js b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-close.https.tentative.worker.js new file mode 100644 index 00000000000..1c6aaf38a32 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-close.https.tentative.worker.js @@ -0,0 +1,40 @@ +importScripts("/resources/testharness.js"); +importScripts('resources/sync-access-handle-test.js'); + +'use strict'; +sync_access_handle_test((t, handle) => { + assert_equals(handle.close(), undefined); + assert_equals(handle.close(), undefined); +}, 'SyncAccessHandle.close is idempotent'); + +sync_access_handle_test((t, handle) => { + assert_equals(handle.close(), undefined); + const readBuffer = new Uint8Array(4); + assert_throws_dom( + 'InvalidStateError', () => handle.read(readBuffer, {at: 0})); +}, 'SyncAccessHandle.read fails after SyncAccessHandle.close'); + +sync_access_handle_test((t, handle) => { + assert_equals(handle.close(), undefined); + const writeBuffer = new Uint8Array(4); + writeBuffer.set([96, 97, 98, 99]); + assert_throws_dom( + 'InvalidStateError', () => handle.write(writeBuffer, {at: 0})); +}, 'SyncAccessHandle.write fails after SyncAccessHandle.close'); + +sync_access_handle_test((t, handle) => { + assert_equals(handle.close(), undefined); + assert_throws_dom('InvalidStateError', () => handle.flush()); +}, 'SyncAccessHandle.flush fails after SyncAccessHandle.close'); + +sync_access_handle_test((t, handle) => { + assert_equals(handle.close(), undefined); + assert_throws_dom('InvalidStateError', () => handle.getSize()); +}, 'SyncAccessHandle.getSize fails after SyncAccessHandle.close'); + +sync_access_handle_test((t, handle) => { + assert_equals(handle.close(), undefined); + assert_throws_dom('InvalidStateError', () => handle.truncate(4)); +}, 'SyncAccessHandle.truncate fails after SyncAccessHandle.handle.close'); + +done(); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-flush.https.tentative.worker.js b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-flush.https.tentative.worker.js new file mode 100644 index 00000000000..96953a88f2e --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-flush.https.tentative.worker.js @@ -0,0 +1,29 @@ +importScripts('/resources/testharness.js'); +importScripts('resources/sync-access-handle-test.js'); + +'use strict'; + +sync_access_handle_test((t, handle) => { + handle.flush(); +}, 'Test flush on an empty file.'); + +sync_access_handle_test((t, handle) => { + if (!('TextEncoder' in self)) { + return; + } + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + const text = 'Hello Storage Foundation'; + const writeBuffer = new TextEncoder().encode(text); + handle.write(writeBuffer, {at: 0}); + handle.flush(); + let readBuffer = new Uint8Array(text.length); + handle.read(readBuffer, {at: 0}); + assert_equals( + text, new TextDecoder().decode(readBuffer), + 'Check that the written bytes and the read bytes match'); +}, 'SyncAccessHandle.read returns bytes written by SyncAccessHandle.write' + + ' after SyncAccessHandle.flush'); + +done(); diff --git a/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-getSize.https.tentative.worker.js b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-getSize.https.tentative.worker.js new file mode 100644 index 00000000000..4b62b280b96 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-getSize.https.tentative.worker.js @@ -0,0 +1,21 @@ +importScripts("/resources/testharness.js"); +importScripts('resources/sync-access-handle-test.js'); + +'use strict'; + +sync_access_handle_test((t, handle) => { + assert_equals(handle.getSize(), 0); + const bufferSize = 4; + const writeBuffer = new Uint8Array(bufferSize); + writeBuffer.set([96, 97, 98, 99]); + handle.write(writeBuffer, {at: 0}); + assert_equals(handle.getSize(), bufferSize); + let offset = 3; + handle.write(writeBuffer, {at: offset}); + assert_equals(handle.getSize(), bufferSize + offset); + offset = 10; + handle.write(writeBuffer, {at: offset}); + assert_equals(handle.getSize(), bufferSize + offset); +}, 'test SyncAccessHandle.getSize after SyncAccessHandle.write'); + +done(); diff --git a/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-read-write.https.tentative.worker.js b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-read-write.https.tentative.worker.js new file mode 100644 index 00000000000..cdefc78b6cb --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-read-write.https.tentative.worker.js @@ -0,0 +1,245 @@ +importScripts("/resources/testharness.js"); +importScripts('resources/sync-access-handle-test.js'); + +'use strict'; + +sync_access_handle_test((t, handle) => { + const readBuffer = new Uint8Array(24); + const readBytes = handle.read(readBuffer, {at: 0}); + assert_equals(0, readBytes, 'Check that no bytes were read'); +}, 'Test reading an empty file through a sync access handle.'); + +sync_access_handle_test((t, handle) => { + if (!('TextEncoder' in self)) { + return; + } + + const decoder = new TextDecoder(); + + const text = 'Hello Storage Foundation'; + const writeBuffer = new TextEncoder().encode(text); + const writtenBytes = handle.write(writeBuffer, {at: 0}); + assert_equals( + writeBuffer.byteLength, writtenBytes, + 'Check that all bytes were written.'); + let readBuffer = new Uint8Array(writtenBytes); + let readBytes = handle.read(readBuffer, {at: 0}); + assert_equals(writtenBytes, readBytes, 'Check that all bytes were read'); + assert_equals( + text, decoder.decode(readBuffer), + 'Check that the written bytes and the read bytes match'); + + // Test a read of less bytes than available. + const expected = 'Storage'; + readBuffer = new Uint8Array(expected.length); + readBytes = handle.read(readBuffer, {at: text.indexOf(expected)}); + assert_equals(readBuffer.length, readBytes, 'Check that all bytes were read'); + const actual = decoder.decode(readBuffer); + assert_equals( + expected, actual, + 'Partial read returned unexpected contents'); +}, 'Test writing and reading through a sync access handle.'); + +sync_access_handle_test((t, handle) => { + if (!('TextEncoder' in self)) { + return; + } + + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + for (text of ['Hello', 'Longer Text']) { + const writeBuffer = encoder.encode(text); + const writtenBytes = handle.write(writeBuffer, {at: 0}); + assert_equals( + writeBuffer.byteLength, writtenBytes, + 'Check that all bytes were written.'); + const readBuffer = new Uint8Array(writtenBytes); + const readBytes = handle.read(readBuffer, {at: 0}); + assert_equals(writtenBytes, readBytes, 'Check that all bytes were read'); + assert_equals( + text, decoder.decode(readBuffer), + 'Check that the written bytes and the read bytes match'); + } +}, 'Test second write that is bigger than the first write'); + +sync_access_handle_test((t, handle) => { + if (!('TextEncoder' in self)) { + return; + } + + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + for (tuple + of [{input: 'Hello World', expected: 'Hello World'}, + {input: 'foobar', expected: 'foobarWorld'}]) { + const text = tuple.input; + const expected = tuple.expected; + const writeBuffer = encoder.encode(text); + const writtenBytes = handle.write(writeBuffer, {at: 0}); + assert_equals( + writeBuffer.byteLength, writtenBytes, + 'Check that all bytes were written.'); + const readBuffer = new Uint8Array(expected.length); + const readBytes = handle.read(readBuffer, {at: 0}); + assert_equals(expected.length, readBytes, 'Check that all bytes were read'); + assert_equals( + expected, decoder.decode(readBuffer), + 'Check that the written bytes and the read bytes match'); + } +}, 'Test second write that is smaller than the first write'); + +sync_access_handle_test((t, handle) => { + const expected = 17; + const writeBuffer = new Uint8Array(1); + writeBuffer[0] = expected; + const offset = 5; + const writtenBytes = handle.write(writeBuffer, {at: offset}); + assert_equals( + writeBuffer.byteLength, writtenBytes, + 'Check that all bytes were written.'); + const fileLength = writeBuffer.byteLength + offset; + const readBuffer = new Uint8Array(fileLength); + const readBytes = handle.read(readBuffer, {at: 0}); + assert_equals(fileLength, readBytes, 'Check that all bytes were read'); + for (let i = 0; i < offset; ++i) { + assert_equals( + readBuffer[i], 0, + `Gaps in the file should be filled with 0, but got ${readBuffer[i]}.`); + } + + assert_equals( + readBuffer[offset], expected, + 'Gaps in the file should be filled with 0.'); +}, 'Test initial write with an offset'); + +sync_access_handle_test((t, handle) => { + if (!('TextEncoder' in self)) { + return; + } + + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + for (tuple + of [{input: 'Hello World', expected: 'Hello World', offset: 0}, + {input: 'foobar', expected: 'Hello foobar', offset: 6}]) { + const text = tuple.input; + const expected = tuple.expected; + const offset = tuple.offset; + const writeBuffer = encoder.encode(text); + const writtenBytes = handle.write(writeBuffer, {at: offset}); + assert_equals( + writeBuffer.byteLength, writtenBytes, + 'Check that all bytes were written.'); + const readBuffer = new Uint8Array(expected.length); + const readBytes = handle.read(readBuffer, {at: 0}); + assert_equals(expected.length, readBytes, 'Check that all bytes were read'); + const actual = decoder.decode(readBuffer); + assert_equals( + expected, actual, + 'Check content read from the handle'); + } +}, 'Test overwriting the file at an offset'); + +sync_access_handle_test((t, handle) => { + if (!('TextEncoder' in self)) { + return; + } + + const decoder = new TextDecoder(); + + const text = 'Hello Storage Foundation'; + const writeBuffer = new TextEncoder().encode(text); + const writtenBytes = handle.write(writeBuffer, {at: 0}); + assert_equals( + writeBuffer.byteLength, writtenBytes, + 'Check that all bytes were written.'); + const bufferLength = text.length; + for (tuple + of [{offset: 0, expected: text}, + {offset: 6, expected: text.substring(6)}]) { + const offset = tuple.offset; + const expected = tuple.expected; + + const readBuffer = new Uint8Array(bufferLength); + const readBytes = handle.read(readBuffer, {at: offset}); + assert_equals(expected.length, readBytes, 'Check that all bytes were read'); + const actual = decoder.decode(readBuffer); + assert_true( + actual.startsWith(expected), + `Expected to read ${expected} but the actual value was ${actual}.`); + } + + const readBuffer = new Uint8Array(bufferLength); + // Offset is greater than the file length. + const readBytes = handle.read(readBuffer, {at: bufferLength + 1}); + assert_equals(0, readBytes, 'Check that no bytes were read'); + for (let i = 0; i < readBuffer.byteLength; ++i) { + assert_equals(0, readBuffer[i], 'Check that the read buffer is unchanged.'); + } +}, 'Test read at an offset'); + +sync_access_handle_test((t, handle) => { + if (!('TextEncoder' in self)) { + return; + } + + const expected = 'Hello Storage Foundation'; + const writeBuffer = new TextEncoder().encode(expected); + const writtenBytes = handle.write(writeBuffer, {at: 0}); + assert_equals( + writeBuffer.byteLength, writtenBytes, + 'Check that all bytes were written.'); + + const bufferLength = expected.length; + const readBuffer = new Uint8Array(expected.length); + // No options parameter provided, should read at offset 0. + const readBytes = handle.read(readBuffer); + assert_equals(expected.length, readBytes, 'Check that all bytes were read'); + const actual = new TextDecoder().decode(readBuffer); + assert_equals( + expected, actual, + `Expected to read ${expected} but the actual value was ${actual}.`); +}, 'Test read with default options'); + +sync_access_handle_test((t, handle) => { + if (!('TextEncoder' in self)) { + return; + } + + const expected = 'Hello Storage Foundation'; + const writeBuffer = new TextEncoder().encode(expected); + // No options parameter provided, should write at offset 0. + const writtenBytes = handle.write(writeBuffer); + assert_equals( + writeBuffer.byteLength, writtenBytes, + 'Check that all bytes were written.'); + + const bufferLength = expected.length; + const readBuffer = new Uint8Array(expected.length); + const readBytes = handle.read(readBuffer, {at: 0}); + assert_equals(expected.length, readBytes, 'Check that all bytes were read'); + const actual = new TextDecoder().decode(readBuffer); + assert_equals( + expected, actual, + `Expected to read ${expected} but the actual value was ${actual}.`); +}, 'Test write with default options'); + +sync_access_handle_test((t, handle) => { + const readBuffer = new Uint8Array(24); + assert_throws_js(TypeError, () => handle.read(readBuffer, {at: -1})); +}, 'Test reading at a negative offset fails.'); + +sync_access_handle_test((t, handle) => { + const text = 'foobar'; + const writeBuffer = new TextEncoder().encode(text); + assert_throws_js(TypeError, () => handle.write(writeBuffer, {at: -1})); + + const readBuffer = new Uint8Array(24); + const readBytes = handle.read(readBuffer, {at: 0}); + assert_equals(0, readBytes, 'Check that no bytes were written'); +}, 'Test writing at a negative offset fails.'); + +done(); diff --git a/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-truncate.https.tentative.worker.js b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-truncate.https.tentative.worker.js new file mode 100644 index 00000000000..921e0066c90 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-truncate.https.tentative.worker.js @@ -0,0 +1,40 @@ +importScripts("/resources/testharness.js"); +importScripts('resources/sync-access-handle-test.js'); + +'use strict'; + +sync_access_handle_test((t, handle) => { + // Without this assertion, the test passes even if truncate is not defined. + assert_implements(handle.truncate, + "SyncAccessHandle.truncate is not implemented."); + + handle.truncate(4); + assert_equals(handle.getSize(), 4); + handle.truncate(2); + assert_equals(handle.getSize(), 2); + handle.truncate(7); + assert_equals(handle.getSize(), 7); + handle.truncate(0); + assert_equals(handle.getSize(), 0); + assert_throws_js(TypeError, () => handle.truncate(-4)); +}, 'test SyncAccessHandle.truncate with different sizes'); + +sync_access_handle_test((t, handle) => { + const writeBuffer = new Uint8Array(4); + writeBuffer.set([96, 97, 98, 99]); + handle.write(writeBuffer, {at: 0}); + + handle.truncate(2); + let readBuffer = new Uint8Array(6); + assert_equals(2, handle.read(readBuffer, {at: 0})); + let expected = new Uint8Array(6); + expected.set([96, 97, 0, 0, 0, 0]); + assert_array_equals(expected, readBuffer); + + // Resize the file to 6, expect that everything beyond the old size is '0'. + handle.truncate(6); + assert_equals(6, handle.read(readBuffer, {at: 0})); + assert_array_equals(expected, readBuffer); +}, 'test SyncAccessHandle.truncate after SyncAccessHandle.write'); + +done(); diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemWritableFileStream-piped.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any.js rename to tests/wpt/web-platform-tests/fs/FileSystemWritableFileStream-piped.https.any.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemWritableFileStream-write.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any.js rename to tests/wpt/web-platform-tests/fs/FileSystemWritableFileStream-write.https.any.js diff --git a/tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemWritableFileStream.https.any.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any.js rename to tests/wpt/web-platform-tests/fs/FileSystemWritableFileStream.https.any.js diff --git a/tests/wpt/web-platform-tests/fs/META.yml b/tests/wpt/web-platform-tests/fs/META.yml new file mode 100644 index 00000000000..23d7765cdfa --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/META.yml @@ -0,0 +1,3 @@ +spec: https://fs.spec.whatwg.org/ +suggested_reviewers: + - mkruisselbrink \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/fs/README.md b/tests/wpt/web-platform-tests/fs/README.md new file mode 100644 index 00000000000..8b99a0140db --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/README.md @@ -0,0 +1,2 @@ +This directory contains tests for the +[File System](https://fs.spec.whatwg.org/) specification. diff --git a/tests/wpt/web-platform-tests/fs/idlharness.https.any.js b/tests/wpt/web-platform-tests/fs/idlharness.https.any.js new file mode 100644 index 00000000000..508beccc365 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/idlharness.https.any.js @@ -0,0 +1,17 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js +// META: timeout=long + +'use strict'; + +idl_test( + ['fs'], + ['storage', 'streams'], + idl_array => { + idl_array.add_objects({ + // TODO: Add instances of FileSystemHandle, FileSystemFileHandle, + // FileSystemDirectoryHandle, FileSystemWritableFileStream, and + // StorageManager. + }); + } +); diff --git a/tests/wpt/web-platform-tests/fs/opaque-origin.https.window.js b/tests/wpt/web-platform-tests/fs/opaque-origin.https.window.js new file mode 100644 index 00000000000..94b4cd79785 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/opaque-origin.https.window.js @@ -0,0 +1,75 @@ +'use strict'; + +const kSandboxWindowUrl = 'resources/opaque-origin-sandbox.html'; + +function add_iframe(test, src, sandbox) { + const iframe = document.createElement('iframe'); + iframe.src = src; + if (sandbox !== undefined) { + iframe.sandbox = sandbox; + } + document.body.appendChild(iframe); + test.add_cleanup(() => { + iframe.remove(); + }); +} + +// Creates a data URI iframe that uses postMessage() to provide its parent +// with the test result. The iframe checks for the existence of +// |property_name| on the window. +async function verify_does_exist_in_data_uri_iframe( + test, property_name) { + const iframe_content = + ''; + + const data_uri = `data:text/html,${encodeURIComponent(iframe_content)}`; + add_iframe(test, data_uri); + + const event_watcher = new EventWatcher(test, self, 'message'); + const message_event = await event_watcher.wait_for('message') + + assert_true(message_event.data.is_property_name_defined, + `Data URI iframes must define '${property_name}'.`); +} + +// |kSandboxWindowUrl| sends the result of navigator.storage.getDirectory() to +// this window. For windows using sandbox='allow-scripts', this must produce a +// rejected promise. +async function verify_results_from_sandboxed_child_window(test) { + const event_watcher = new EventWatcher(test, self, 'message'); + + const message_event = await event_watcher.wait_for('message'); + assert_equals(message_event.data, + 'navigator.storage.getDirectory(): REJECTED: SecurityError'); +} + +promise_test(async test => { + await verify_does_exist_in_data_uri_iframe( + test, 'FileSystemDirectoryHandle'); +}, 'FileSystemDirectoryHandle must be defined for data URI iframes.'); + +promise_test( + async test => { + add_iframe(test, kSandboxWindowUrl, /*sandbox=*/ 'allow-scripts'); + await verify_results_from_sandboxed_child_window(test); + }, + 'navigator.storage.getDirectory() must reject in a sandboxed iframe.'); + +promise_test( + async test => { + const child_window_url = kSandboxWindowUrl + + '?pipe=header(Content-Security-Policy, sandbox allow-scripts)'; + + const child_window = window.open(child_window_url); + test.add_cleanup(() => { + child_window.close(); + }); + + await verify_results_from_sandboxed_child_window(test); + }, + 'navigator.storage.getDirectory() ' + + 'must reject in a sandboxed opened window.'); diff --git a/tests/wpt/web-platform-tests/fs/resources/message-target-dedicated-worker.js b/tests/wpt/web-platform-tests/fs/resources/message-target-dedicated-worker.js new file mode 100644 index 00000000000..26ff23ef8ac --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/resources/message-target-dedicated-worker.js @@ -0,0 +1,9 @@ +'use strict'; + +importScripts( + 'test-helpers.js', + 'messaging-serialize-helpers.js', + 'message-target.js' +); + +add_message_event_handlers(/*receiver=*/self, /*target=*/self); diff --git a/tests/wpt/web-platform-tests/fs/resources/message-target-service-worker.js b/tests/wpt/web-platform-tests/fs/resources/message-target-service-worker.js new file mode 100644 index 00000000000..4a6174ae3b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/resources/message-target-service-worker.js @@ -0,0 +1,9 @@ +'use strict'; + +importScripts( + 'test-helpers.js', + 'messaging-serialize-helpers.js', + 'message-target.js' +); + +add_message_event_handlers(/*receiver=*/self); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/fs/resources/message-target-shared-worker.js b/tests/wpt/web-platform-tests/fs/resources/message-target-shared-worker.js new file mode 100644 index 00000000000..6829c61d4cf --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/resources/message-target-shared-worker.js @@ -0,0 +1,14 @@ +'use strict'; + +importScripts( + 'test-helpers.js', + 'messaging-serialize-helpers.js', + 'message-target.js' +); + +self.addEventListener('connect', connect_event => { + const message_port = connect_event.ports[0]; + add_message_event_handlers( + /*receiver=*/message_port, /*target=*/message_port); + message_port.start(); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/fs/resources/message-target.html b/tests/wpt/web-platform-tests/fs/resources/message-target.html new file mode 100644 index 00000000000..32c7f0c56c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/resources/message-target.html @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/fs/resources/message-target.js b/tests/wpt/web-platform-tests/fs/resources/message-target.js new file mode 100644 index 00000000000..7c29afb799c --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/resources/message-target.js @@ -0,0 +1,158 @@ +'use strict'; + +// This script depends on the following scripts: +// /fs/resources/messaging-helpers.js +// /fs/resources/test-helpers.js + +// add_message_event_handlers() is the helper function used to setup all +// message targets, including iframes and workers. +// +// Adds a message event handler and a message error handler to |receiver|. +// The 'data' property from received MessageEvents must include a 'type' +// property. The 'type' selects the test logic to run. Most message type +// handlers use postMessage() to respond to the sender with test results. +// The sender then validates the test results after receiving the response. +// +// Both |target| and |target_origin| are optional. |target| is used +// to send message responses back to the sender. When omitted, the +// 'source' from received MessageEvents is used instead. +// +// For window messaging, |target_origin| specifies the origin to receive +// responses. Most window tests use '*' for the |target_origin|. Worker +// and message port tests must use undefined for |target_origin| to avoid +// exceptions. +function add_message_event_handlers(receiver, target, target_origin) { + receiver.addEventListener('message', async function (message_event) { + const message_data = message_event.data; + + // Reply to the sender using the 'source' from the received MessageEvent. + let message_source = message_event.source; + if (message_source === null) { + // However, some message senders, like DedicatedWorkers, don't include + // a source. Fallback to the target when the source is null. + message_source = target; + } + + try { + switch (message_data.type) { + case 'receive-message-port': + // Receive a MessagePort to use as a message target for testing. + add_message_event_handlers( + /*receiver=*/message_data.message_port, + /*target=*/message_data.message_port); + message_data.message_port.start(); + break; + + case 'create-broadcast-channel': + // Create a BroadcastChannel to use as a message target for testing. + const broadcast_channel = + new BroadcastChannel(message_data.broadcast_channel_name); + add_message_event_handlers( + /*receiver=*/broadcast_channel, + /*target=*/broadcast_channel); + message_source.postMessage( + { type: 'broadcast-channel-created' }, + { targetOrigin: target_origin }); + break; + + case 'receive-file-system-handles': + // Receive a list of cloned FileSystemFileHandles. Access the + // properties of each FileSystemFileHandle by serializing the + // handle to a JavaScript object. Then respond with the serialized + // results, enabling the sender to verify that the cloned handle + // produced the expected property values from this execution context. + const serialized_handles = []; + const cloned_handles = message_data.cloned_handles; + for (let i = 0; i < cloned_handles.length; ++i) { + const serialized = await serialize_handle(cloned_handles[i]); + serialized_handles.push(serialized); + } + message_source.postMessage({ + type: 'receive-serialized-file-system-handles', + serialized_handles, + // Respond with the cloned handles to create new clones for + // the sender to verify. + cloned_handles, + }, { targetOrigin: target_origin }); + break; + + case 'receive-serialized-file-system-handles': + // Do nothing. This message is meant for test runner validation. + // Other message targets may receive this message while testing + // broadcast channels. + break; + + case 'create-file': + // Create a new file and then respond to the sender with it. + const directory = await navigator.storage.getDirectory(); + const file_handle = + await directory.getFileHandle('temp-file', { create: true }); + message_source.postMessage( + { type: 'receive-file', file_handle }, + { targetOrigin: target_origin }); + break; + + case 'create-directory': + // Create a new directory and then respond to the sender with it. + const parent_directory = await navigator.storage.getDirectory(); + const directory_handle = + await parent_directory.getDirectoryHandle('temp-directory', + { create: true }); + message_source.postMessage( + { type: 'receive-directory', directory_handle }, + { targetOrigin: target_origin }); + break; + + case 'create-sync-access-handle': + // Receive a file and create a sync access handle out of it. Report + // success to the sender. + let success = true; + try { + const access_handle = await message_data.file_handle + .createSyncAccessHandle({mode: "in-place"}); + access_handle.close(); + } catch (error) { + success = false; + } + + message_source.postMessage( + { type: 'receive-sync-access-handle-result', success }, + { targetOrigin: target_origin }); + break; + + default: + throw `Unknown message type: '${message_data.type}'`; + } + } catch (error) { + // Respond with an error to trigger a failure in the sender's + // test runner. + message_source.postMessage(`ERROR: ${error}`, + { targetOrigin: target_origin }); + } + }); + + receiver.addEventListener('messageerror', async function (message_event) { + // Select the target for message responses (see comment in 'message' event + // listener above). + let message_source = message_event.source; + if (message_source === null) { + message_source = target; + } + + try { + // Respond with the MessageEvent's property values, enabling the sender + // to verify results. + const serialized_message_error_event = + serialize_message_error_event(message_event); + message_source.postMessage({ + type: 'serialized-message-error', + serialized_message_error_event + }, { targetOrigin: target_origin }); + } catch (error) { + // Respond with an error to trigger a failure in the sender's + // test runner. + message_source.postMessage(`ERROR: ${error}`, + { targetOrigin: target_origin }); + } + }); +} diff --git a/tests/wpt/web-platform-tests/fs/resources/messaging-blob-helpers.js b/tests/wpt/web-platform-tests/fs/resources/messaging-blob-helpers.js new file mode 100644 index 00000000000..852f2e2d321 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/resources/messaging-blob-helpers.js @@ -0,0 +1,51 @@ +'use strict'; + +// Creates a blob URL with the contents of 'message-target.html'. Use the +// blob as an iframe src or a window.open() URL, which creates a same origin +// message target. +async function create_message_target_blob_url(test) { + const html = await create_message_target_html_without_subresources(test); + const blob = new Blob([html], { type: 'text/html' }); + return URL.createObjectURL(blob); +} + +// Creates a data URI with the contents of 'message-target.html'. Use the +// data URI as an iframe src, which creates a cross origin message target. +async function create_message_target_data_uri(test) { + const iframe_html = + await create_message_target_html_without_subresources(test); + return `data:text/html,${encodeURIComponent(iframe_html)}`; +} + +// Constructs a version of 'message-target.html' without any subresources. +// Enables the creation of blob URLs, data URIs and iframe srcdocs re-using +// the contents of 'message-target.html'. +async function create_message_target_html_without_subresources(test) { + const test_helpers_script = await fetch_text('resources/test-helpers.js'); + + const messaging_helpers_script = + await fetch_text('resources/messaging-helpers.js'); + + const messaging_serialize_helpers_script = + await fetch_text('resources/messaging-serialize-helpers.js'); + + const message_target_script = + await fetch_text('resources/message-target.js'); + + // Get the inline script code from 'message-target.html'. + const iframe = await add_iframe(test, { src: 'resources/message-target.html' }); + const iframe_script = + iframe.contentWindow.document.getElementById('inline_script').outerHTML; + iframe.remove(); + + return '' + + `` + + `` + + `` + + `${iframe_script}`; +} + +async function fetch_text(url) { + const response = await fetch(url); + return await response.text(); +} diff --git a/tests/wpt/web-platform-tests/fs/resources/messaging-helpers.js b/tests/wpt/web-platform-tests/fs/resources/messaging-helpers.js new file mode 100644 index 00000000000..776c0c50d56 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/resources/messaging-helpers.js @@ -0,0 +1,187 @@ +'use strict'; + +// This script depends on the following script: +// /fs/resources/test-helpers.js +// /service-workers/service-worker/resources/test-helpers.sub.js + +// Define the URL constants used for each type of message target, including +// iframes and workers. +const kDocumentMessageTarget = 'resources/message-target.html'; +const kSharedWorkerMessageTarget = 'resources/message-target-shared-worker.js'; +const kServiceWorkerMessageTarget = + 'resources/message-target-service-worker.js'; +const kDedicatedWorkerMessageTarget = + 'resources/message-target-dedicated-worker.js'; + +function create_dedicated_worker(test, url) { + const dedicated_worker = new Worker(url); + test.add_cleanup(() => { + dedicated_worker.terminate(); + }); + return dedicated_worker; +} + +async function create_service_worker(test, script_url, scope) { + const registration = await service_worker_unregister_and_register( + test, script_url, scope); + test.add_cleanup(() => { + return registration.unregister(); + }); + return registration; +} + +// Creates an iframe and waits to receive a message from the iframe. +// Valid |options| include src, srcdoc and sandbox, which mirror the +// corresponding iframe element properties. +async function add_iframe(test, options) { + const iframe = document.createElement('iframe'); + + if (options.sandbox !== undefined) { + iframe.sandbox = options.sandbox; + } + + if (options.src !== undefined) { + iframe.src = options.src; + } + + if (options.srcdoc !== undefined) { + iframe.srcdoc = options.srcdoc; + } + + document.body.appendChild(iframe); + test.add_cleanup(() => { + iframe.remove(); + }); + + await wait_for_loaded_message(self); + return iframe; +} + +// Creates a child window using window.open() and waits to receive a message +// from the child window. +async function open_window(test, url) { + const child_window = window.open(url); + test.add_cleanup(() => { + child_window.close(); + }); + await wait_for_loaded_message(self); + return child_window; +} + +// Wait until |receiver| gets a message event with the data set to 'LOADED'. +// The postMessage() tests use messaging instead of the loaded event because +// cross-origin child windows from window.open() do not dispatch the loaded +// event to the parent window. +async function wait_for_loaded_message(receiver) { + const message_promise = new Promise((resolve, reject) => { + receiver.addEventListener('message', message_event => { + if (message_event.data === 'LOADED') { + resolve(); + } else { + reject('The message target must receive a "LOADED" message response.'); + } + }); + }); + await message_promise; +} + +// Sets up a new message channel. Sends one port to |target| and then returns +// the other port. +function create_message_channel(target, target_origin) { + const message_channel = new MessageChannel(); + + const message_data = + { type: 'receive-message-port', message_port: message_channel.port2 }; + target.postMessage( + message_data, + { + transfer: [message_channel.port2], + targetOrigin: target_origin + }); + message_channel.port1.start(); + return message_channel.port1; +} + +// Creates a variety of different FileSystemFileHandles for testing. +async function create_file_system_handles(test, root) { + // Create some files to use with postMessage(). + const empty_file = await createEmptyFile(test, 'empty-file', root); + const first_file = await createFileWithContents( + test, 'first-file-with-contents', 'first-text-content', root); + const second_file = await createFileWithContents( + test, 'second-file-with-contents', 'second-text-content', root); + + // Create an empty directory to use with postMessage(). + const empty_directory = await createDirectory(test, 'empty-directory', root); + + // Create a directory containing both files and subdirectories to use + // with postMessage(). + const directory_with_files = + await createDirectory(test, 'directory-with-files', root); + await createFileWithContents(test, 'first-file-in-directory', + 'first-directory-text-content', directory_with_files); + await createFileWithContents(test, 'second-file-in-directory', + 'second-directory-text-content', directory_with_files); + const subdirectory = + await createDirectory(test, 'subdirectory', directory_with_files); + await createFileWithContents(test, 'first-file-in-subdirectory', + 'first-subdirectory-text-content', subdirectory); + + return [ + empty_file, + first_file, + second_file, + // Include the same FileSystemFileHandle twice. + second_file, + empty_directory, + // Include the Same FileSystemDirectoryHandle object twice. + empty_directory, + directory_with_files + ]; +} + +// Tests sending an array of FileSystemHandles to |target| with postMessage(). +// The array includes both FileSystemFileHandles and FileSystemDirectoryHandles. +// After receiving the message, |target| accesses all cloned handles by +// serializing the properties of each handle to a JavaScript object. +// +// |target| then responds with the resulting array of serialized handles. The +// response also includes the array of cloned handles, which creates more +// clones. After receiving the response, this test runner verifies that both +// the serialized handles and the cloned handles contain the expected properties. +async function do_post_message_test( + test, root_dir, receiver, target, target_origin) { + // Create and send the handles to |target|. + const handles = + await create_file_system_handles(test, root_dir, target, target_origin); + target.postMessage( + { type: 'receive-file-system-handles', cloned_handles: handles }, + { targetOrigin: target_origin }); + + // Wait for |target| to respond with results. + const event_watcher = new EventWatcher(test, receiver, 'message'); + const message_event = await event_watcher.wait_for('message'); + const response = message_event.data; + + assert_equals(response.type, 'receive-serialized-file-system-handles', + 'The test runner must receive a "serialized-file-system-handles" ' + + `message response. Actual response: ${response}`); + + // Verify the results. + const expected_serialized_handles = await serialize_handles(handles); + + assert_equals_serialized_handles( + response.serialized_handles, expected_serialized_handles); + + await assert_equals_cloned_handles(response.cloned_handles, handles); +} + +// Runs the same test as do_post_message_test(), but uses a MessagePort. +// This test starts by establishing a message channel between the test runner +// and |target|. Afterwards, the test sends FileSystemHandles through the +// message port channel. +async function do_message_port_test(test, root_dir, target, target_origin) { + const message_port = create_message_channel(target, target_origin); + await do_post_message_test( + test, root_dir, /*receiver=*/ message_port, /*target=*/ message_port); +} diff --git a/tests/wpt/web-platform-tests/fs/resources/messaging-serialize-helpers.js b/tests/wpt/web-platform-tests/fs/resources/messaging-serialize-helpers.js new file mode 100644 index 00000000000..c7dfc0436e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/resources/messaging-serialize-helpers.js @@ -0,0 +1,210 @@ +'use strict'; + +// This script depends on the following script: +// /fs/resources/test-helpers.js + +// Serializes an array of FileSystemHandles where each element can be either a +// FileSystemFileHandle or FileSystemDirectoryHandle. +async function serialize_handles(handle_array) { + const serialized_handle_array = []; + for (let i = 0; i < handle_array.length; ++i) { + serialized_handle_array.push(await serialize_handle(handle_array[i])); + } + return serialized_handle_array; +} + +// Serializes either a FileSystemFileHandle or FileSystemDirectoryHandle. +async function serialize_handle(handle) { + switch (handle.kind) { + case 'directory': + return await serialize_file_system_directory_handle(handle); + case 'file': + return await serialize_file_system_file_handle(handle); + default: + throw 'Object is not a FileSystemFileHandle or ' + + `FileSystemDirectoryHandle ${handle}`; + } +} + +// Creates a dictionary for a FileSystemHandle base, which contains +// serialized properties shared by both FileSystemFileHandle and +// FileSystemDirectoryHandle. +async function serialize_file_system_handle(handle) { + return { + kind: handle.kind, + name: handle.name + }; +} + +// Create a dictionary with each property value in FileSystemFileHandle. +// Also, reads the contents of the file to include with the returned +// dictionary. Example output: +// { +// kind: "file", +// name: "example-file-name", +// contents: "example-file-contents" +// } +async function serialize_file_system_file_handle(file_handle) { + const contents = await getFileContents(file_handle); + + const serialized_file_system_handle = + await serialize_file_system_handle(file_handle); + + return Object.assign(serialized_file_system_handle, { contents }); +} + +// Create a dictionary with each property value in FileSystemDirectoryHandle. +// Example output: +// { +// kind: "directory", +// name: "example-directory-name", +// files: [, ...] +// directories: [, ...] +// } +async function serialize_file_system_directory_handle(directory_handle) { + // Serialize the contents of the directory. + const serialized_files = []; + const serialized_directories = []; + for await (const child_handle of directory_handle.values()) { + const serialized_child_handle = await serialize_handle(child_handle); + if (child_handle.kind === "directory") { + serialized_directories.push(serialized_child_handle); + } else { + serialized_files.push(serialized_child_handle); + } + } + + // Order the serialized contents of the directory by name. + serialized_files.sort((left, right) => { + return left.name.localeCompare(right.name); + }); + serialized_directories.sort((left, right) => { + return left.name.localeCompare(right.name); + }); + + // Serialize the directory's common properties shared by all + // FileSystemHandles. + const serialized_file_system_handle = + await serialize_file_system_handle(directory_handle); + + return Object.assign( + serialized_file_system_handle, + { files: serialized_files, directories: serialized_directories }); +} + +// Verifies |left_array| is a clone of |right_array| where each element +// is a cloned FileSystemHandle with the same properties and contents. +async function assert_equals_cloned_handles(left_array, right_array) { + assert_equals(left_array.length, right_array.length, + 'Each array of FileSystemHandles must have the same length'); + + for (let i = 0; i < left_array.length; ++i) { + assert_not_equals(left_array[i], right_array[i], + 'Clones must create new FileSystemHandle instances.'); + + const left_serialized = await serialize_handle(left_array[i]); + const right_serialized = await serialize_handle(right_array[i]); + assert_equals_serialized_handle(left_serialized, right_serialized); + } +} + +// Verifies |left_array| is the same as |right_array| where each element +// is a serialized FileSystemHandle with the same properties. +function assert_equals_serialized_handles(left_array, right_array) { + assert_equals(left_array.length, right_array.length, + 'Each array of serialized handles must have the same length'); + + for (let i = 0; i < left_array.length; ++i) { + assert_equals_serialized_handle(left_array[i], right_array[i]); + } +} + +// Verifies each property of a serialized FileSystemFileHandle or +// FileSystemDirectoryHandle. +function assert_equals_serialized_handle(left, right) { + switch (left.kind) { + case 'directory': + assert_equals_serialized_file_system_directory_handle(left, right); + break; + case 'file': + assert_equals_serialized_file_system_file_handle(left, right); + break; + default: + throw 'Object is not a FileSystemFileHandle or ' + + `FileSystemDirectoryHandle ${left}`; + } +} + +// Compares the output of serialize_file_system_handle() for +// two FileSystemHandles. +function assert_equals_serialized_file_system_handle(left, right) { + assert_equals(left.kind, right.kind, + 'Each FileSystemHandle instance must use the expected "kind".'); + + assert_equals(left.name, right.name, + 'Each FileSystemHandle instance must use the expected "name" ' + + ' property.'); +} + +// Compares the output of serialize_file_system_file_handle() +// for two FileSystemFileHandle. +function assert_equals_serialized_file_system_file_handle(left, right) { + assert_equals_serialized_file_system_handle(left, right); + assert_equals(left.contents, right.contents, + 'Each FileSystemFileHandle instance must have the same contents.'); +} + +// Compares the output of serialize_file_system_directory_handle() +// for two FileSystemDirectoryHandles. +function assert_equals_serialized_file_system_directory_handle(left, right) { + assert_equals_serialized_file_system_handle(left, right); + + assert_equals(left.files.length, right.files.length, + 'Each FileSystemDirectoryHandle must contain the same number of ' + + 'file children'); + + for (let i = 0; i < left.files.length; ++i) { + assert_equals_serialized_file_system_file_handle( + left.files[i], right.files[i]); + } + + assert_equals(left.directories.length, right.directories.length, + 'Each FileSystemDirectoryHandle must contain the same number of ' + + 'directory children'); + + for (let i = 0; i < left.directories.length; ++i) { + assert_equals_serialized_file_system_directory_handle( + left.directories[i], right.directories[i]); + } +} + +// Creates a dictionary with interesting property values from MessageEvent. +function serialize_message_error_event(message_error_event) { + return { + data: message_error_event.data, + origin: message_error_event.origin, + last_event_id: message_error_event.lastEventId, + has_source: (message_error_event.source !== null), + ports_length: message_error_event.ports.length + }; +} + +// Compares the output of serialize_message_error_event() with an +// expected result. +function assert_equals_serialized_message_error_event( + serialized_event, expected_origin, expected_has_source) { + assert_equals(serialized_event.data, null, + 'The message error event must set the "data" property to null.'); + + assert_equals(serialized_event.origin, expected_origin, + 'The message error event must have the expected "origin" property.'); + + assert_equals(serialized_event.last_event_id, "", + 'The message error event must set the "lastEventId" property to the empty string.'); + + assert_equals(serialized_event.has_source, expected_has_source, + 'The message error event must have the expected "source" property.'); + + assert_equals(serialized_event.ports_length, 0, + 'The message error event must not contain any message ports.'); +} diff --git a/tests/wpt/web-platform-tests/fs/resources/opaque-origin-sandbox.html b/tests/wpt/web-platform-tests/fs/resources/opaque-origin-sandbox.html new file mode 100644 index 00000000000..b2582ca4c29 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/resources/opaque-origin-sandbox.html @@ -0,0 +1,27 @@ + + diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/sandboxed-fs-test-helpers.js b/tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js similarity index 82% rename from tests/wpt/web-platform-tests/file-system-access/resources/sandboxed-fs-test-helpers.js rename to tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js index f6cfd4b0aab..9c93212f49c 100644 --- a/tests/wpt/web-platform-tests/file-system-access/resources/sandboxed-fs-test-helpers.js +++ b/tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js @@ -3,8 +3,9 @@ // function in this file will return an empty directory in the sandboxed file // system. // -// Another implementation of this function exists in local-fs-test-helpers.js, -// where that version uses the local file system instead. +// Another implementation of this function exists in +// file-system-access/local-fs-test-helpers.js, where that version uses the +// local file system instead. async function cleanupSandboxedFileSystem() { const dir = await navigator.storage.getDirectory(); diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/sync-access-handle-test.js b/tests/wpt/web-platform-tests/fs/resources/sync-access-handle-test.js similarity index 91% rename from tests/wpt/web-platform-tests/file-system-access/resources/sync-access-handle-test.js rename to tests/wpt/web-platform-tests/fs/resources/sync-access-handle-test.js index ec13ff9a06b..46c5d3072ca 100644 --- a/tests/wpt/web-platform-tests/file-system-access/resources/sync-access-handle-test.js +++ b/tests/wpt/web-platform-tests/fs/resources/sync-access-handle-test.js @@ -11,7 +11,7 @@ function sync_access_handle_test(test, description) { const dir = await navigator.storage.getDirectory(); const fileHandle = await dir.getFileHandle('OPFS.test', {create: true}); const syncHandle = await fileHandle.createSyncAccessHandle(); - await test(t, syncHandle); - await syncHandle.close(); + test(t, syncHandle); + syncHandle.close(); }, description); } diff --git a/tests/wpt/web-platform-tests/fs/resources/test-helpers.js b/tests/wpt/web-platform-tests/fs/resources/test-helpers.js new file mode 100644 index 00000000000..20735664f11 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/resources/test-helpers.js @@ -0,0 +1,111 @@ +// A special path component meaning "this directory." +const kCurrentDirectory = '.'; + +// A special path component meaning "the parent directory." +const kParentDirectory = '..'; + +// Array of separators used to separate components in hierarchical paths. +let kPathSeparators; +if (navigator.userAgent.includes('Windows NT')) { + // Windows uses both '/' and '\' as path separators. + kPathSeparators = ['/', '\\']; +} else { + kPathSeparators = ['/']; +} + +async function getFileSize(handle) { + const file = await handle.getFile(); + return file.size; +} + +async function getFileContents(handle) { + const file = await handle.getFile(); + return new Response(file).text(); +} + +async function getDirectoryEntryCount(handle) { + let result = 0; + for await (let entry of handle) { + result++; + } + return result; +} + +async function getSortedDirectoryEntries(handle) { + let result = []; + for await (let entry of handle.values()) { + if (entry.kind === 'directory') { + result.push(entry.name + '/'); + } else { + result.push(entry.name); + } + } + result.sort(); + return result; +} + +async function createDirectory(test, name, parent) { + const new_dir_handle = await parent.getDirectoryHandle(name, {create: true}); + test.add_cleanup(async () => { + try { + await parent.removeEntry(name, {recursive: true}); + } catch (e) { + // Ignore any errors when removing directories, as tests might + // have already removed the directory. + } + }); + return new_dir_handle; +} + +async function createEmptyFile(test, name, parent) { + const handle = await parent.getFileHandle(name, {create: true}); + test.add_cleanup(async () => { + try { + await parent.removeEntry(name); + } catch (e) { + // Ignore any errors when removing files, as tests might already remove + // the file. + } + }); + // Make sure the file is empty. + assert_equals(await getFileSize(handle), 0); + return handle; +} + +async function createFileWithContents(test, name, contents, parent) { + const handle = await createEmptyFile(test, name, parent); + const writer = await handle.createWritable(); + await writer.write(new Blob([contents])); + await writer.close(); + return handle; +} + +function garbageCollect() { + // TODO(https://github.com/web-platform-tests/wpt/issues/7899): Change to + // some sort of cross-browser GC trigger. + if (self.gc) + self.gc(); +}; + +async function cleanup(test, value, cleanup_func) { + test.add_cleanup(async () => { + try { + await cleanup_func(); + } catch (e) { + // Ignore any errors when removing files, as tests might already remove + // the file. + } + }); + return value; +} + +async function cleanup_writable(test, value) { + return cleanup(test, value, async () => { + try { + await value.close(); + } catch (e) { + // Ignore any errors when closing writables, since attempting to close + // aborted or closed writables will error. + } + }); +} diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-IndexedDB.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-IndexedDB.js similarity index 94% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-IndexedDB.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-IndexedDB.js index 855e52f04dd..15a0c2a3b57 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-IndexedDB.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-IndexedDB.js @@ -6,7 +6,6 @@ directory_test(async (t, root_dir) => { const db = await createDatabase(t, db => { const store = db.createObjectStore('store'); }); - t.add_cleanup(() => deleteAllDatabases(t)); const value = handles; @@ -28,7 +27,6 @@ directory_test(async (t, root_dir) => { const db = await createDatabase(t, db => { const store = db.createObjectStore('store'); }); - t.add_cleanup(() => deleteAllDatabases(t)); const value = handles; @@ -53,7 +51,6 @@ directory_test(async (t, root_dir) => { const db = await createDatabase(t, db => { const store = db.createObjectStore('store'); }); - t.add_cleanup(() => deleteAllDatabases(t)); const value = {handles, blob: new Blob(["foobar"])}; @@ -80,7 +77,6 @@ directory_test(async (t, root_dir) => { const db = await createDatabase(t, db => { const store = db.createObjectStore('store'); }); - t.add_cleanup(() => deleteAllDatabases(t)); const value = handles; @@ -107,7 +103,6 @@ directory_test(async (t, root_dir) => { const db = await createDatabase(t, db => { const store = db.createObjectStore('store', {keyPath: 'key'}); }); - t.add_cleanup(() => deleteAllDatabases(t)); const value = handles; let tx = db.transaction('store', 'readwrite'); diff --git a/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-getUniqueId.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-getUniqueId.js new file mode 100644 index 00000000000..d1240d8980c --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-getUniqueId.js @@ -0,0 +1,89 @@ +'use strict'; + +directory_test(async (t, root_dir) => { + assert_equals(await root_dir.getUniqueId(), await root_dir.getUniqueId()); + + const subdir = await createDirectory(t, 'subdir-name', root_dir); + assert_equals(await subdir.getUniqueId(), await subdir.getUniqueId()); +}, 'identical directory handles return the same ID'); + +directory_test(async (t, root_dir) => { + const subdir = await createDirectory(t, 'subdir-name', root_dir); + + assert_not_equals(await root_dir.getUniqueId(), await subdir.getUniqueId()); +}, 'different directories return different IDs'); + +directory_test(async (t, root_dir) => { + const subdir = await createDirectory(t, 'subdir-name', root_dir); + const subdir2 = await root_dir.getDirectoryHandle('subdir-name'); + + assert_equals(await subdir.getUniqueId(), await subdir2.getUniqueId()); +}, 'different handles for the same directory return the same ID'); + +directory_test(async (t, root_dir) => { + const handle = await createEmptyFile(t, 'foo.txt', root_dir); + + assert_equals(await handle.getUniqueId(), await handle.getUniqueId()); +}, 'identical file handles return the same unique ID'); + +directory_test(async (t, root_dir) => { + const handle1 = await createEmptyFile(t, 'foo.txt', root_dir); + const handle2 = await createEmptyFile(t, 'bar.txt', root_dir); + + assert_not_equals(await handle1.getUniqueId(), await handle2.getUniqueId()); +}, 'different files return different IDs'); + +directory_test(async (t, root_dir) => { + const handle1 = await createEmptyFile(t, 'foo.txt', root_dir); + const handle2 = await root_dir.getFileHandle('foo.txt'); + + assert_equals(await handle1.getUniqueId(), await handle2.getUniqueId()); +}, 'different handles for the same file return the same ID'); + +directory_test(async (t, root_dir) => { + const handle1 = await createEmptyFile(t, 'foo.txt', root_dir); + const subdir = await createDirectory(t, 'subdir-name', root_dir); + const handle2 = await createEmptyFile(t, 'foo.txt', subdir); + + assert_not_equals(await handle1.getUniqueId(), await handle2.getUniqueId()); +}, 'two files of the same name in different directories return different IDs'); + +directory_test(async (t, root_dir) => { + const handle1 = await createEmptyFile(t, 'foo.txt', root_dir); + const handle2 = await createDirectory(t, 'subdir-name', root_dir); + + assert_not_equals(await handle1.getUniqueId(), await handle2.getUniqueId()); +}, 'a file and a directory return different IDs'); + +directory_test(async (t, root_dir) => { + const file_handle = await createEmptyFile(t, 'foo', root_dir); + const file_id = await file_handle.getUniqueId(); + + // Remove the file. + await root_dir.removeEntry('foo'); + + // Create a directory of the same name and path. + const dir_handle = await createDirectory(t, 'foo', root_dir); + assert_not_equals(await dir_handle.getUniqueId(), file_id); +}, 'a file and a directory of the same path return different IDs'); + +directory_test(async (t, root_dir) => { + const handle = await createEmptyFile(t, 'foo.txt', root_dir); + const id_before = await handle.getUniqueId(); + + // Write to the file. The unique ID should not change. + const writable = await handle.createWritable(); + await writable.write("blah"); + await writable.close(); + + assert_equals(await handle.getUniqueId(), id_before); +}, 'unique ID of a file handle does not change after writes'); + +directory_test(async (t, root_dir) => { + const subdir = await createDirectory(t, 'subdir-name', root_dir); + + const UUIDRegex = + /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/ + assert_true(UUIDRegex.test(await root_dir.getUniqueId())); + assert_true(UUIDRegex.test(await subdir.getUniqueId())); +}, 'unique ID is in GUID version 4 format'); diff --git a/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-isSameEntry.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-isSameEntry.js new file mode 100644 index 00000000000..e3b6d1891e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-isSameEntry.js @@ -0,0 +1,107 @@ +'use strict'; + +directory_test(async (t, root_dir) => { + assert_true(await root_dir.isSameEntry(root_dir)); + + const subdir = await createDirectory(t, 'subdir-name', root_dir); + assert_true(await subdir.isSameEntry(subdir)); +}, 'isSameEntry for identical directory handles returns true'); + +directory_test(async (t, root_dir) => { + const subdir = await createDirectory(t, 'subdir-name', root_dir); + + assert_false(await root_dir.isSameEntry(subdir)); + assert_false(await subdir.isSameEntry(root_dir)); +}, 'isSameEntry for different directories returns false'); + +directory_test(async (t, root_dir) => { + const subdir = await createDirectory(t, 'subdir-name', root_dir); + const subdir2 = await root_dir.getDirectoryHandle('subdir-name'); + + assert_true(await subdir.isSameEntry(subdir2)); + assert_true(await subdir2.isSameEntry(subdir)); +}, 'isSameEntry for different handles for the same directory'); + +directory_test(async (t, root_dir) => { + const handle = await createEmptyFile(t, 'mtime.txt', root_dir); + + assert_true(await handle.isSameEntry(handle)); +}, 'isSameEntry for identical file handles returns true'); + +directory_test(async (t, root_dir) => { + const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir); + const handle2 = await createEmptyFile(t, 'foo.txt', root_dir); + + assert_false(await handle1.isSameEntry(handle2)); + assert_false(await handle2.isSameEntry(handle1)); +}, 'isSameEntry for different files returns false'); + +directory_test(async (t, root_dir) => { + const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir); + const handle2 = await root_dir.getFileHandle('mtime.txt'); + + assert_true(await handle1.isSameEntry(handle2)); + assert_true(await handle2.isSameEntry(handle1)); +}, 'isSameEntry for different handles for the same file'); + +directory_test(async (t, root_dir) => { + const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir); + const subdir = await createDirectory(t, 'subdir-name', root_dir); + const handle2 = await createEmptyFile(t, 'mtime.txt', subdir); + + assert_false(await handle1.isSameEntry(handle2)); + assert_false(await handle2.isSameEntry(handle1)); +}, 'isSameEntry comparing a file to a file in a different directory returns false'); + +directory_test(async (t, root_dir) => { + const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir); + const handle2 = await createDirectory(t, 'subdir-name', root_dir); + + assert_false(await handle1.isSameEntry(handle2)); + assert_false(await handle2.isSameEntry(handle1)); +}, 'isSameEntry comparing a file to a directory returns false'); + +directory_test(async (t, root_dir) => { + const filename = 'foo'; + const handle1 = await createEmptyFile(t, filename, root_dir); + // Remove the file and create a new file of the same path. + await root_dir.removeEntry(filename); + const handle2 = await createEmptyFile(t, filename, root_dir); + + assert_true( + await handle1.isSameEntry(handle2), + 'two file handles pointing at the same path should be considered the same entry'); + assert_true( + await handle2.isSameEntry(handle1), + 'two file handles pointing at the same path should be considered the same entry'); +}, 'isSameEntry comparing two files pointing to the same path returns true'); + +directory_test(async (t, root_dir) => { + const filename = 'foo'; + const handle1 = await createDirectory(t, filename, root_dir); + // Remove the directory and create a new directory of the same path. + await root_dir.removeEntry(filename); + const handle2 = await createDirectory(t, filename, root_dir); + + assert_true( + await handle1.isSameEntry(handle2), + 'two directory handles pointing at the same path should be considered the same entry'); + assert_true( + await handle2.isSameEntry(handle1), + 'two directory handles pointing at the same path should be considered the same entry'); +}, 'isSameEntry comparing two directories pointing to the same path returns true'); + +directory_test(async (t, root_dir) => { + const filename = 'foo'; + const dir_handle = await createDirectory(t, filename, root_dir); + // Remove the directory and create a file of the same path. + await root_dir.removeEntry(filename); + const file_handle = await createEmptyFile(t, filename, root_dir); + + assert_false( + await dir_handle.isSameEntry(file_handle), + 'a file and directory handle pointing at the same path should not be considered the same entry'); + assert_false( + await file_handle.isSameEntry(dir_handle), + 'a file and directory handle pointing at the same path should not be considered the same entry'); +}, 'isSameEntry comparing a file to a directory of the same path returns false'); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-BroadcastChannel.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-BroadcastChannel.js similarity index 94% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-BroadcastChannel.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-BroadcastChannel.js index 6c3ae7d49bc..681037db2fb 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-BroadcastChannel.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-BroadcastChannel.js @@ -1,9 +1,9 @@ 'use strict'; // This script depends on the following scripts: -// /file-system-access/resources/messaging-helpers.js -// /file-system-access/resources/messaging-serialize-helpers.js -// /file-system-access/resources/test-helpers.js +// /fs/resources/messaging-helpers.js +// /fs/resources/messaging-serialize-helpers.js +// /fs/resources/test-helpers.js // /service-workers/service-worker/resources/test-helpers.sub.js // Sets up a new broadcast channel in |target|. Posts a message instructing diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-Error.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-Error.js similarity index 96% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-Error.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-Error.js index 0b9dc6b033f..7c97a7da484 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-Error.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-Error.js @@ -1,10 +1,10 @@ 'use strict'; // This script depends on the following scripts: -// /file-system-access/resources/messaging-helpers.js -// /file-system-access/resources/messaging-blob-helpers.js -// /file-system-access/resources/messaging-serialize-helpers.js -// /file-system-access/resources/test-helpers.js +// /fs/resources/messaging-helpers.js +// /fs/resources/messaging-blob-helpers.js +// /fs/resources/messaging-serialize-helpers.js +// /fs/resources/test-helpers.js // /common/get-host-info.sub.js // /service-workers/service-worker/resources/test-helpers.sub.js @@ -199,7 +199,7 @@ directory_test(async (t, root_dir) => { /*target=*/iframe.contentWindow, /*target_origin=*/'*', /*expected_has_source*/true, /*expected_origin=*/location.origin); // Do not test receiving FileSystemHandles from the data URI iframe. Data URI - // iframes are insecure and do not expose the File System Access APIs. + // iframes are insecure and do not expose the File System APIs. }, 'Fail to send messages to a data URI iframe.'); directory_test(async (t, root_dir) => { diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-MessagePort-frames.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-MessagePort-frames.js similarity index 86% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-MessagePort-frames.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-MessagePort-frames.js index 89343f3948d..b70b2992c62 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-MessagePort-frames.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-MessagePort-frames.js @@ -1,10 +1,10 @@ 'use strict'; // This script depends on the following scripts: -// /file-system-access/resources/messaging-helpers.js -// /file-system-access/resources/messaging-blob-helpers.js -// /file-system-access/resources/messaging-serialize-helpers.js -// /file-system-access/resources/test-helpers.js +// /fs/resources/messaging-helpers.js +// /fs/resources/messaging-blob-helpers.js +// /fs/resources/messaging-serialize-helpers.js +// /fs/resources/test-helpers.js directory_test( async (t, root_dir) => { diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-MessagePort-windows.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-MessagePort-windows.js similarity index 83% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-MessagePort-windows.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-MessagePort-windows.js index 78b3176bf81..dceb250ebbf 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-MessagePort-windows.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-MessagePort-windows.js @@ -1,10 +1,10 @@ 'use strict'; // This script depends on the following scripts: -// /file-system-access/resources/messaging-helpers.js -// /file-system-access/resources/messaging-blob-helpers.js -// /file-system-access/resources/messaging-serialize-helpers.js -// /file-system-access/resources/test-helpers.js +// /fs/resources/messaging-helpers.js +// /fs/resources/messaging-blob-helpers.js +// /fs/resources/messaging-serialize-helpers.js +// /fs/resources/test-helpers.js directory_test( async (t, root_dir) => { diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-MessagePort-workers.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-MessagePort-workers.js similarity index 84% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-MessagePort-workers.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-MessagePort-workers.js index 8e46edc88a9..b386527dbd0 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-MessagePort-workers.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-MessagePort-workers.js @@ -1,10 +1,10 @@ 'use strict'; // This script depends on the following scripts: -// /file-system-access/resources/messaging-helpers.js -// /file-system-access/resources/messaging-blob-helpers.js -// /file-system-access/resources/messaging-serialize-helpers.js -// /file-system-access/resources/test-helpers.js +// /fs/resources/messaging-helpers.js +// /fs/resources/messaging-blob-helpers.js +// /fs/resources/messaging-serialize-helpers.js +// /fs/resources/test-helpers.js // /service-workers/service-worker/resources/test-helpers.sub.js directory_test( diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-frames.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-frames.js similarity index 85% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-frames.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-frames.js index 009a030a4f0..1e77b89d770 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-frames.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-frames.js @@ -1,10 +1,10 @@ 'use strict'; // This script depends on the following scripts: -// /file-system-access/resources/messaging-helpers.js -// /file-system-access/resources/messaging-blob-helpers.js -// /file-system-access/resources/messaging-serialize-helpers.js -// /file-system-access/resources/test-helpers.js +// /fs/resources/messaging-helpers.js +// /fs/resources/messaging-blob-helpers.js +// /fs/resources/messaging-serialize-helpers.js +// /fs/resources/test-helpers.js directory_test(async (t, root_dir) => { const iframe = await add_iframe(t, {src: kDocumentMessageTarget}); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-windows.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-windows.js similarity index 82% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-windows.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-windows.js index 83bf8c64297..798d458534e 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-windows.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-windows.js @@ -1,10 +1,10 @@ 'use strict'; // This script depends on the following scripts: -// /file-system-access/resources/messaging-helpers.js -// /file-system-access/resources/messaging-blob-helpers.js -// /file-system-access/resources/messaging-serialize-helpers.js -// /file-system-access/resources/test-helpers.js +// /fs/resources/messaging-helpers.js +// /fs/resources/messaging-blob-helpers.js +// /fs/resources/messaging-serialize-helpers.js +// /fs/resources/test-helpers.js directory_test(async (t, root_dir) => { const child_window = await open_window(t, kDocumentMessageTarget); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-workers.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-workers.js similarity index 83% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-workers.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-workers.js index f7abf65554b..dbd8e5754d2 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemBaseHandle-postMessage-workers.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-postMessage-workers.js @@ -1,10 +1,10 @@ 'use strict'; // This script depends on the following scripts: -// /file-system-access/resources/messaging-helpers.js -// /file-system-access/resources/messaging-blob-helpers.js -// /file-system-access/resources/messaging-serialize-helpers.js -// /file-system-access/resources/test-helpers.js +// /fs/resources/messaging-helpers.js +// /fs/resources/messaging-blob-helpers.js +// /fs/resources/messaging-serialize-helpers.js +// /fs/resources/test-helpers.js // /service-workers/service-worker/resources/test-helpers.sub.js directory_test(async (t, root_dir) => { diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-getDirectoryHandle.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-getDirectoryHandle.js similarity index 99% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-getDirectoryHandle.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-getDirectoryHandle.js index 48a4ce4ce69..6a63edecc5f 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-getDirectoryHandle.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-getDirectoryHandle.js @@ -1,3 +1,5 @@ +'use strict'; + directory_test(async (t, root) => { await promise_rejects_dom( t, 'NotFoundError', root.getDirectoryHandle('non-existing-dir')); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-getFileHandle.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-getFileHandle.js similarity index 99% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-getFileHandle.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-getFileHandle.js index dddd67a7058..8685f08203c 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-getFileHandle.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-getFileHandle.js @@ -1,3 +1,5 @@ +'use strict'; + directory_test(async (t, dir) => { await promise_rejects_dom( t, 'NotFoundError', dir.getFileHandle('non-existing-file')); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-iteration.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-iteration.js similarity index 99% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-iteration.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-iteration.js index 3e721a0f017..815ae219362 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-iteration.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-iteration.js @@ -1,3 +1,5 @@ +'use strict'; + directory_test(async (t, root) => { const file_name1 = 'foo1.txt'; const file_name2 = 'foo2.txt'; diff --git a/tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-removeEntry.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-removeEntry.js new file mode 100644 index 00000000000..108b9135f97 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-removeEntry.js @@ -0,0 +1,18 @@ +'use strict'; + +directory_test(async (t, root) => { + const handle = + await createFileWithContents(t, 'file-to-remove', '12345', root); + await createFileWithContents(t, 'file-to-keep', 'abc', root); + + const writable = await cleanup_writable(t, await handle.createWritable()); + await promise_rejects_dom( + t, 'InvalidModificationError', root.removeEntry('file-to-remove')); + + await writable.close(); + await root.removeEntry('file-to-remove'); + + assert_array_equals( + await getSortedDirectoryEntries(root), + ['file-to-keep']); +}, 'removeEntry() while the file has an open writable fails'); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-resolve.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-resolve.js similarity index 100% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemDirectoryHandle-resolve.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemDirectoryHandle-resolve.js diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemFileHandle-create-sync-access-handle.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js similarity index 88% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemFileHandle-create-sync-access-handle.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js index 8efe685596b..302d4a5a7af 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemFileHandle-create-sync-access-handle.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js @@ -1,8 +1,8 @@ 'use strict'; // This script depends on the following scripts: -// /file-system-access/resources/messaging-helpers.js -// /file-system-access/resources/test-helpers.js +// /fs/resources/messaging-helpers.js +// /fs/resources/test-helpers.js directory_test(async (t, root_dir) => { assert_true( diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemFileHandle-getFile.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-getFile.js similarity index 99% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemFileHandle-getFile.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-getFile.js index 80593418bb1..4c9208332f2 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemFileHandle-getFile.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-getFile.js @@ -1,3 +1,5 @@ +'use strict'; + directory_test(async (t, root) => { const fileContents = 'awesome content'; let handle = await createFileWithContents(t, 'foo.txt', fileContents, /*parent=*/ root); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemFileHandle-move.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-move.js similarity index 84% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemFileHandle-move.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-move.js index a3be9f49afd..447ff9a78d9 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemFileHandle-move.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-move.js @@ -11,6 +11,14 @@ directory_test(async (t, root) => { assert_equals(await getFileSize(handle), 3); }, 'move(name) to rename a file'); +directory_test(async (t, root) => { + const handle = await createFileWithContents(t, 'file-before', 'foo', root); + await handle.move('file-after'); + const newhandle = await root.getFileHandle('file-after'); + assert_equals(await getFileContents(newhandle), 'foo'); + assert_equals(await getFileSize(newhandle), 3); +}, 'get a handle to a moved file'); + directory_test(async (t, root) => { const handle = await createFileWithContents(t, 'file-before', 'foo', root); await handle.move('file-before'); @@ -55,7 +63,7 @@ directory_test(async (t, root) => { directory_test(async (t, root) => { const handle = await createFileWithContents(t, 'file-before', 'foo', root); - await promise_rejects_js(t, TypeError, handle.move('#$23423@352^*3243')); + await promise_rejects_js(t, TypeError, handle.move('test/test')); assert_array_equals(await getSortedDirectoryEntries(root), ['file-before']); assert_equals(await getFileContents(handle), 'foo'); @@ -66,7 +74,7 @@ directory_test(async (t, root) => { const handle = await createFileWithContents(t, 'file-before', 'abc', root); // Cannot rename handle with an active writable. - const stream = await handle.createWritable(); + const stream = await cleanup_writable(t, await handle.createWritable()); await promise_rejects_dom( t, 'NoModificationAllowedError', handle.move('file-after')); @@ -82,14 +90,16 @@ directory_test(async (t, root) => { await createFileWithContents(t, 'file-after', '123', root); // Cannot overwrite a handle with an active writable. - const stream = await handle_dest.createWritable(); + const stream = await cleanup_writable(t, await handle_dest.createWritable()); await promise_rejects_dom( t, 'NoModificationAllowedError', handle.move('file-after')); - // Can move handle once the writable is closed. + // Can't move handle to overwrite an existing file. await stream.close(); - await handle.move('file-after'); - assert_array_equals(await getSortedDirectoryEntries(root), ['file-after']); + await promise_rejects_dom( + t, 'InvalidModificationError', handle.move('file-after')); + assert_array_equals( + await getSortedDirectoryEntries(root), ['file-after', 'file-before']); }, 'move(name) while the destination file has an open writable fails'); @@ -129,15 +139,15 @@ directory_test(async (t, root) => { const dir_src = await root.getDirectoryHandle('dir-src', {create: true}); const dir_dest = await root.getDirectoryHandle('dir-dest', {create: true}); const file = await createFileWithContents(t, 'file', 'abc', dir_src); - await file.move(dir_dest, ''); + await promise_rejects_js(t, TypeError, file.move(dir_dest, '')); assert_array_equals( await getSortedDirectoryEntries(root), ['dir-dest/', 'dir-src/']); - assert_array_equals(await getSortedDirectoryEntries(dir_src), []); - assert_array_equals(await getSortedDirectoryEntries(dir_dest), ['file']); + assert_array_equals(await getSortedDirectoryEntries(dir_src), ['file']); + assert_array_equals(await getSortedDirectoryEntries(dir_dest), []); assert_equals(await getFileContents(file), 'abc'); assert_equals(await getFileSize(file), 3); -}, 'move(dir, "") to move a file to a new directory'); +}, 'move(dir, "") to move a file to a new directory fails'); directory_test(async (t, root) => { const dir_src = await root.getDirectoryHandle('dir-src', {create: true}); @@ -182,33 +192,6 @@ directory_test(async (t, root) => { assert_equals(await getFileContents(handle), 'foo'); }, 'move(dir) can be called multiple times'); -directory_test(async (t, root) => { - const dir1 = await root.getDirectoryHandle('dir1', {create: true}); - const dir2 = await root.getDirectoryHandle('dir2', {create: true}); - const handle = await createFileWithContents(t, 'file', 'foo', root); - - await handle.move(dir1, ""); - assert_array_equals( - await getSortedDirectoryEntries(root), ['dir1/', 'dir2/']); - assert_array_equals(await getSortedDirectoryEntries(dir1), ['file']); - assert_array_equals(await getSortedDirectoryEntries(dir2), []); - assert_equals(await getFileContents(handle), 'foo'); - - await handle.move(dir2, ""); - assert_array_equals( - await getSortedDirectoryEntries(root), ['dir1/', 'dir2/']); - assert_array_equals(await getSortedDirectoryEntries(dir1), []); - assert_array_equals(await getSortedDirectoryEntries(dir2), ['file']); - assert_equals(await getFileContents(handle), 'foo'); - - await handle.move(root, ""); - assert_array_equals( - await getSortedDirectoryEntries(root), ['dir1/', 'dir2/', 'file']); - assert_array_equals(await getSortedDirectoryEntries(dir1), []); - assert_array_equals(await getSortedDirectoryEntries(dir2), []); - assert_equals(await getFileContents(handle), 'foo'); -}, 'move(dir, "") can be called multiple times'); - directory_test(async (t, root) => { const dir1 = await root.getDirectoryHandle('dir1', {create: true}); const dir2 = await root.getDirectoryHandle('dir2', {create: true}); @@ -238,8 +221,7 @@ directory_test(async (t, root) => { directory_test(async (t, root) => { const handle = await createFileWithContents(t, 'file-before', 'foo', root); - await promise_rejects_js( - t, TypeError, handle.move(root, '#$23423@352^*3243')); + await promise_rejects_js(t, TypeError, handle.move(root, '..')); assert_array_equals(await getSortedDirectoryEntries(root), ['file-before']); assert_equals(await getFileContents(handle), 'foo'); @@ -252,7 +234,7 @@ directory_test(async (t, root) => { const file = await createFileWithContents(t, 'file', 'abc', dir_src); // Cannot move handle with an active writable. - const stream = await file.createWritable(); + const stream = await cleanup_writable(t, await file.createWritable()); await promise_rejects_dom(t, 'NoModificationAllowedError', file.move(dir_dest)); assert_array_equals( @@ -275,7 +257,7 @@ directory_test(async (t, root) => { const file = await createFileWithContents(t, 'file-before', 'abc', dir_src); // Cannot move handle with an active writable. - const stream = await file.createWritable(); + const stream = await cleanup_writable(t, await file.createWritable()); await promise_rejects_dom(t, 'NoModificationAllowedError', file.move(dir_dest)); assert_array_equals( @@ -300,7 +282,7 @@ directory_test(async (t, root) => { const file_dest = await createFileWithContents(t, 'file', '123', dir_dest); // Cannot overwrite handle with an active writable. - const stream = await file_dest.createWritable(); + const stream = await cleanup_writable(t, await file_dest.createWritable()); await promise_rejects_dom(t, 'NoModificationAllowedError', file.move(dir_dest)); assert_array_equals( @@ -308,15 +290,11 @@ directory_test(async (t, root) => { // Assert the file is still in the source directory. assert_array_equals(await getSortedDirectoryEntries(dir_src), ['file']); - // Can move handle once the writable is closed. + // Can't move handle to overwrite an existing file. await stream.close(); - await file.move(dir_dest); - assert_array_equals( - await getSortedDirectoryEntries(root), ['dir-dest/', 'dir-src/']); - assert_array_equals(await getSortedDirectoryEntries(dir_src), []); - assert_array_equals(await getSortedDirectoryEntries(dir_dest), ['file']); - assert_equals(await getFileContents(file), 'abc'); - assert_equals(await getFileSize(file), 3); + await promise_rejects_dom( + t, 'InvalidModificationError', file.move(dir_dest)); + assert_array_equals(await getSortedDirectoryEntries(dir_src), ['file']); }, 'move(dir) while the destination file has an open writable fails'); directory_test(async (t, root) => { @@ -327,7 +305,7 @@ directory_test(async (t, root) => { await createFileWithContents(t, 'file-dest', '123', dir_dest); // Cannot overwrite handle with an active writable. - const stream = await file_dest.createWritable(); + const stream = await cleanup_writable(t, await file_dest.createWritable()); await promise_rejects_dom( t, 'NoModificationAllowedError', file.move(dir_dest, 'file-dest')); @@ -336,13 +314,12 @@ directory_test(async (t, root) => { // Assert the file is still in the source directory. assert_array_equals(await getSortedDirectoryEntries(dir_src), ['file-src']); - // Can move handle once the writable is closed. + // Can't move handle to overwrite an existing file. await stream.close(); - await file.move(dir_dest, 'file-dest'); - assert_array_equals( - await getSortedDirectoryEntries(root), ['dir-dest/', 'dir-src/']); - assert_array_equals(await getSortedDirectoryEntries(dir_src), []); - assert_array_equals(await getSortedDirectoryEntries(dir_dest), ['file-dest']); + await promise_rejects_dom( + t, 'InvalidModificationError', file.move(dir_dest, 'file-dest')); + // Assert the file is still in the source directory. + assert_array_equals(await getSortedDirectoryEntries(dir_src), ['file-src']); assert_equals(await getFileContents(file), 'abc'); assert_equals(await getFileSize(file), 3); }, 'move(dir, name) while the destination file has an open writable fails'); diff --git a/tests/wpt/web-platform-tests/fs/script-tests/FileSystemSyncAccessHandle-flush.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemSyncAccessHandle-flush.js new file mode 100644 index 00000000000..580da69cc95 --- /dev/null +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemSyncAccessHandle-flush.js @@ -0,0 +1,8 @@ +'use strict'; + +// This script depends on the following scripts: +// /fs/resources/messaging-helpers.js + +sync_access_handle_test(async handle => { + await handle.flush(); +}, 'Test flush on an empty file.'); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemWritableFileStream-piped.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemWritableFileStream-piped.js similarity index 99% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemWritableFileStream-piped.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemWritableFileStream-piped.js index 64637c9febf..847fefa2175 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemWritableFileStream-piped.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemWritableFileStream-piped.js @@ -1,3 +1,5 @@ +'use strict'; + directory_test(async (t, root) => { const handle = await createEmptyFile(t, 'foo_string.txt', root); const wfs = await handle.createWritable(); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemWritableFileStream-write.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemWritableFileStream-write.js similarity index 97% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemWritableFileStream-write.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemWritableFileStream-write.js index ea4915a1410..70ba72f2245 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemWritableFileStream-write.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemWritableFileStream-write.js @@ -1,3 +1,5 @@ +'use strict'; + directory_test(async (t, root) => { const handle = await createEmptyFile(t, 'empty_blob', root); const stream = await handle.createWritable(); @@ -326,6 +328,15 @@ directory_test(async (t, root) => { }, 'WriteParams: write missing data param'); +directory_test(async (t, root) => { + const handle = await createEmptyFile(t, 'content.txt', root); + const stream = await handle.createWritable(); + + await promise_rejects_js( + t, TypeError, stream.write({type: 'write', data: null}), 'write with null data'); + +}, 'WriteParams: write null data param'); + directory_test(async (t, root) => { const handle = await createFileWithContents( t, 'content.txt', 'seekable', root); diff --git a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemWritableFileStream.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemWritableFileStream.js similarity index 99% rename from tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemWritableFileStream.js rename to tests/wpt/web-platform-tests/fs/script-tests/FileSystemWritableFileStream.js index 1cebb993556..d9c4f35335c 100644 --- a/tests/wpt/web-platform-tests/file-system-access/script-tests/FileSystemWritableFileStream.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemWritableFileStream.js @@ -1,3 +1,5 @@ +'use strict'; + directory_test(async (t, root) => { const handle = await createEmptyFile(t, 'trunc_shrink', root); const stream = await handle.createWritable(); diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-iframe-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-iframe-manual.html index 327fc3d21d6..f9444919e22 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-iframe-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-iframe-manual.html @@ -16,7 +16,10 @@ async_test(t => { iframeDocument.onfullscreenerror = t.unreached_func("iframe fullscreenerror event"); trusted_click(t, () => { - iframeDocument.body.requestFullscreen(); + iframeDocument.body.requestFullscreen().then(t.unreached_func("promise should be rejected"), + () => { + assert_true(true, "promise is rejected correctly"); + }); iframe.remove(); // No events will be fired, end test after 100ms. step_timeout(t.step_func_done(() => { diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-manual.html index 89e77b5ff95..55824be1764 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-manual.html @@ -16,7 +16,10 @@ async_test(t => { }); trusted_click(t, () => { - target.requestFullscreen(); + target.requestFullscreen().then(t.unreached_func("promise should be rejected"), + () => { + assert_true(true, "promise is rejected correctly"); + }); target.remove(); }, document.body); }); diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-options.tentative.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-options.tentative.html index 3646a6f0e9f..7930dbe6fa5 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-options.tentative.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-options.tentative.html @@ -1,7 +1,6 @@ Element#requestFullscreen({ screen }) tentative support - - + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/fullscreen-display-contents-ref.html b/tests/wpt/web-platform-tests/fullscreen/api/fullscreen-display-contents-ref.html new file mode 100644 index 00000000000..2fe14fae34d --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/fullscreen-display-contents-ref.html @@ -0,0 +1,8 @@ + +Test that display:contents on fullscreen elements acts like display:block + + +
    Fullscreen Element
    +

    Fullscreen is display:block

    +

    Fullscreen::backdrop is display:block

    +

    After exiting fullscreen, element is display:contents

    diff --git a/tests/wpt/web-platform-tests/fullscreen/api/fullscreen-display-contents.html b/tests/wpt/web-platform-tests/fullscreen/api/fullscreen-display-contents.html new file mode 100644 index 00000000000..618b4d4848c --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/fullscreen-display-contents.html @@ -0,0 +1,49 @@ + + +Test that display:contents on fullscreen elements acts like display:block + + + + + + + +
    Fullscreen Element
    +

    Fullscreen is display:INVALID

    +

    Fullscreen::backdrop is display:INVALID

    +

    After exiting fullscreen, element is display:INVALID

    + + + + diff --git a/tests/wpt/web-platform-tests/fullscreen/crashtests/backdrop-list-item.html b/tests/wpt/web-platform-tests/fullscreen/crashtests/backdrop-list-item.html new file mode 100644 index 00000000000..c5f58263ff3 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/crashtests/backdrop-list-item.html @@ -0,0 +1,13 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/fullscreen/crashtests/chrome-1312699.html b/tests/wpt/web-platform-tests/fullscreen/crashtests/chrome-1312699.html new file mode 100644 index 00000000000..c783b0d9cc9 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/crashtests/chrome-1312699.html @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fullscreen/crashtests/content-visibility-crash.html b/tests/wpt/web-platform-tests/fullscreen/crashtests/content-visibility-crash.html new file mode 100644 index 00000000000..63111d03e3f --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/crashtests/content-visibility-crash.html @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-iframe-ref.html b/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-iframe-ref.html new file mode 100644 index 00000000000..3126fe19426 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-iframe-ref.html @@ -0,0 +1,2 @@ + + diff --git a/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-iframe.html b/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-iframe.html new file mode 100644 index 00000000000..710d1b48f18 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-iframe.html @@ -0,0 +1,22 @@ + + +::backdrop for a fullscreen iframe element + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-object-ref.html b/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-object-ref.html new file mode 100644 index 00000000000..6c7071a727d --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-object-ref.html @@ -0,0 +1,14 @@ + + +
    diff --git a/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-object.html b/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-object.html new file mode 100644 index 00000000000..be285b76124 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/rendering/backdrop-object.html @@ -0,0 +1,23 @@ + + +::backdrop for a fullscreen object element + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fullscreen/trusted-click.js b/tests/wpt/web-platform-tests/fullscreen/trusted-click.js index 7ee0669eece..240ee01c234 100644 --- a/tests/wpt/web-platform-tests/fullscreen/trusted-click.js +++ b/tests/wpt/web-platform-tests/fullscreen/trusted-click.js @@ -1,5 +1,9 @@ -// Invokes callback from a trusted click event, to satisfy -// https://html.spec.whatwg.org/#triggered-by-user-activation +// Invokes callback from a trusted click event. +// +// TODO(mustaq): This method needs a cleanup. This is based on an old version +// of the HTML spec. The new spec doesn't require a callback because the user +// activation is visible across the Window object: +// https://html.spec.whatwg.org/multipage/interaction.html#tracking-user-activation. function trusted_click(test, callback, container) { var document = container.ownerDocument; diff --git a/tests/wpt/web-platform-tests/gamepad/gamepad-default-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/gamepad/gamepad-default-feature-policy.https.sub.html index 347f40b2a4e..f4b4d759471 100644 --- a/tests/wpt/web-platform-tests/gamepad/gamepad-default-feature-policy.https.sub.html +++ b/tests/wpt/web-platform-tests/gamepad/gamepad-default-feature-policy.https.sub.html @@ -37,8 +37,8 @@ "getGamepads()", t, cross_origin_src, - expect_feature_unavailable_default + expect_feature_available_default ); - }, header + " disallows cross-origin by default."); + }, header + " allows cross-origin by default."); - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/gamepad/gamepad-secure-context.html b/tests/wpt/web-platform-tests/gamepad/gamepad-secure-context.html index 034595ebdb6..28641220fd8 100644 --- a/tests/wpt/web-platform-tests/gamepad/gamepad-secure-context.html +++ b/tests/wpt/web-platform-tests/gamepad/gamepad-secure-context.html @@ -5,7 +5,21 @@ diff --git a/tests/wpt/web-platform-tests/generic-sensor/META.yml b/tests/wpt/web-platform-tests/generic-sensor/META.yml index bf48f80f808..916bc8074f1 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/META.yml +++ b/tests/wpt/web-platform-tests/generic-sensor/META.yml @@ -1,6 +1,5 @@ spec: https://w3c.github.io/sensors/ suggested_reviewers: - - zqzhang - riju - rakuco - Honry diff --git a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js index 11c9f50f4ab..1d1a012380f 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js +++ b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js @@ -155,4 +155,32 @@ function run_generic_sensor_iframe_tests(sensorName) { iframe.parentNode.removeChild(iframe); window.focus(); }, `${sensorName}: losing a document's frame with an active sensor does not crash`); + + sensor_test(async t => { + assert_implements(sensorName in self, `${sensorName} is not supported.`); + const iframe = document.createElement('iframe'); + iframe.allow = featurePolicies.join(';') + ';'; + iframe.src = 'https://{{host}}:{{ports[https][0]}}/generic-sensor/resources/iframe_sensor_handler.html'; + + // Create sensor in the iframe (we do not care whether this is a + // cross-origin nested context in this test). + const iframeLoadWatcher = new EventWatcher(t, iframe, 'load'); + document.body.appendChild(iframe); + await iframeLoadWatcher.wait_for('load'); + + // The purpose of this message is to initialize the mock backend in the + // iframe. We are not going to use the sensor created there. + await send_message_to_iframe(iframe, {command: 'create_sensor', + type: sensorName}); + + const iframeSensor = new iframe.contentWindow[sensorName](); + assert_not_equals(iframeSensor, null); + + // Remove iframe from main document. |iframeSensor| no longer has a + // non-null browsing context. Calling start() should probably throw an + // error when called from a non-fully active document, but that depends on + // https://github.com/w3c/sensors/issues/415 + iframe.parentNode.removeChild(iframe); + iframeSensor.start(); + }, `${sensorName}: calling start() in a non-fully active document does not crash`); } diff --git a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js index 26ff6919599..2f910806dfd 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js +++ b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js @@ -33,10 +33,9 @@ function runGenericSensorTests(sensorName, throw new TypeError('readingData.expectedReadings must be an array of ' + 'arrays.'); } - if (readings.length != expectedReadings.length) { - throw new TypeError('readingData.readings and ' + - 'readingData.expectedReadings must have the same ' + - 'length.'); + if (readings.length < expectedReadings.length) { + throw new TypeError('readingData.readings\' length must be bigger than ' + + 'or equal to readingData.expectedReadings\' length.'); } if (expectedRemappedReadings && !validateReadingFormat(expectedRemappedReadings)) { @@ -44,8 +43,8 @@ function runGenericSensorTests(sensorName, 'array of arrays.'); } if (expectedRemappedReadings && - readings.length != expectedRemappedReadings.length) { - throw new TypeError('readingData.readings and ' + + expectedReadings.length != expectedRemappedReadings.length) { + throw new TypeError('readingData.expectedReadings and ' + 'readingData.expectedRemappedReadings must have the same ' + 'length.'); } @@ -205,7 +204,7 @@ function runGenericSensorTests(sensorName, assert_false(sensor.hasReading); const mockSensor = await sensorProvider.getCreatedSensor(sensorName); - await mockSensor.setSensorReading(readings); + mockSensor.setSensorReading(readings); await sensorWatcher.wait_for("reading"); const expected = new RingBuffer(expectedReadings).next().value; @@ -229,7 +228,7 @@ function runGenericSensorTests(sensorName, sensor2.start(); const mockSensor = await sensorProvider.getCreatedSensor(sensorName); - await mockSensor.setSensorReading(readings); + mockSensor.setSensorReading(readings); await Promise.all([sensorWatcher1.wait_for("reading"), sensorWatcher2.wait_for("reading")]); @@ -248,6 +247,8 @@ function runGenericSensorTests(sensorName, assert_true(verificationFunction(expected, sensor2, /*isNull=*/true)); }, `${sensorName}: sensor reading is correct.`); + // Tests that readings maps to expectedReadings correctly. Due to threshold + // check and rounding some values might be discarded or changed. sensor_test(async (t, sensorProvider) => { assert_implements(sensorName in self, `${sensorName} is not supported.`); const sensor = new sensorType(); @@ -257,6 +258,26 @@ function runGenericSensorTests(sensorName, const mockSensor = await sensorProvider.getCreatedSensor(sensorName); await mockSensor.setSensorReading(readings); + for (let expectedReading of expectedReadings) { + await sensorWatcher.wait_for("reading"); + assert_true(sensor.hasReading, "hasReading"); + assert_true(verificationFunction(expectedReading, sensor), + "verification"); + } + + sensor.stop(); + }, `${sensorName}: Test that readings are all mapped to expectedReadings\ + correctly.`); + + sensor_test(async (t, sensorProvider) => { + assert_implements(sensorName in self, `${sensorName} is not supported.`); + const sensor = new sensorType(); + const sensorWatcher = new EventWatcher(t, sensor, ["reading", "error"]); + sensor.start(); + + const mockSensor = await sensorProvider.getCreatedSensor(sensorName); + mockSensor.setSensorReading(readings); + await sensorWatcher.wait_for("reading"); const cachedTimeStamp1 = sensor.timestamp; @@ -316,7 +337,7 @@ function runGenericSensorTests(sensorName, sensor.start(); const mockSensor = await sensorProvider.getCreatedSensor(sensorName); - await mockSensor.setSensorReading(readings); + mockSensor.setSensorReading(readings); const expectedBuffer = new RingBuffer(expectedReadings); await sensorWatcher.wait_for("reading"); @@ -353,7 +374,7 @@ function runGenericSensorTests(sensorName, // sensor.start(); // const mockSensor = await sensorProvider.getCreatedSensor(sensorName); -// await mockSensor.setSensorReading(readings); +// mockSensor.setSensorReading(readings); // await sensorWatcher.wait_for("reading"); // const expected = new RingBuffer(expectedReadings).next().value; @@ -382,7 +403,7 @@ function runGenericSensorTests(sensorName, await eventWatcher.wait_for("activate"); const mockSensor = await sensorProvider.getCreatedSensor(sensorName); - await mockSensor.setSensorReading(readings); + mockSensor.setSensorReading(readings); // We need |fastSensorFrequency| because 60Hz might be higher than a sensor // type's maximum allowed frequency. @@ -407,6 +428,45 @@ function runGenericSensorTests(sensorName, }, "Sampling frequency has dropped to slowSensor's requested frequency"); }, `${sensorName}: frequency hint works.`); + sensor_test(async (t, sensorProvider) => { + assert_implements(sensorName in self, `${sensorName} is not supported.`); + + const sensor1 = new sensorType(); + const sensor2 = new sensorType(); + + return new Promise((resolve, reject) => { + sensor1.addEventListener('reading', () => { + sensor2.addEventListener('activate', () => { + try { + assert_true(sensor1.activated); + assert_true(sensor1.hasReading); + assert_false(verificationFunction(null, sensor1, /*isNull=*/true)); + assert_not_equals(sensor1.timestamp, null); + + assert_true(sensor2.activated); + assert_false(verificationFunction(null, sensor2, /*isNull=*/true)); + assert_not_equals(sensor2.timestamp, null); + } catch (e) { + reject(e); + } + }, { once: true }); + sensor2.addEventListener('reading', () => { + try { + assert_true(sensor2.activated); + assert_true(sensor2.hasReading); + assert_sensor_equals(sensor1, sensor2); + resolve(); + } catch (e) { + reject(e); + } + }, { once: true }); + sensor2.start(); + }, { once: true }); + sensor1.start(); + }); + }, `${sensorName}: Readings delivered by shared platform sensor are\ + immediately accessible to all sensors.`); + // Re-enable after https://github.com/w3c/sensors/issues/361 is fixed. // test(() => { // assert_throws_dom("NotSupportedError", @@ -452,7 +512,7 @@ function runGenericSensorTests(sensorName, sensor2.start(); const mockSensor = await sensorProvider.getCreatedSensor(sensorName); - await mockSensor.setSensorReading(readings); + mockSensor.setSensorReading(readings); await Promise.all([sensorWatcher1.wait_for("reading"), sensorWatcher2.wait_for("reading")]); diff --git a/tests/wpt/web-platform-tests/generic-sensor/resources/generic-sensor-helpers.js b/tests/wpt/web-platform-tests/generic-sensor/resources/generic-sensor-helpers.js index 7070daa0516..aa101547ff1 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/resources/generic-sensor-helpers.js +++ b/tests/wpt/web-platform-tests/generic-sensor/resources/generic-sensor-helpers.js @@ -86,3 +86,56 @@ function verifyGeoSensorReading(pattern, {latitude, longitude, altitude, function verifyProximitySensorReading(pattern, {distance, max, near, timestamp}, isNull) { return verifySensorReading(pattern, [distance, max, near], timestamp, isNull); } + +// Assert that two Sensor objects have the same properties and values. +// +// Verifies that ``actual`` and ``expected`` have the same sensor properties +// and, if so, that their values are the same. +// +// @param {Sensor} actual - Test value. +// @param {Sensor} expected - Expected value. +function assert_sensor_equals(actual, expected) { + assert_true( + actual instanceof Sensor, + 'assert_sensor_equals: actual must be a Sensor'); + assert_true( + expected instanceof Sensor, + 'assert_sensor_equals: expected must be a Sensor'); + + // These properties vary per sensor type. + const CUSTOM_PROPERTIES = [ + ['illuminance'], ['quaternion'], ['x', 'y', 'z'], + [ + 'latitude', 'longitude', 'altitude', 'accuracy', 'altitudeAccuracy', + 'heading', 'speed' + ] + ]; + + // These properties are present on all objects derived from Sensor. + const GENERAL_PROPERTIES = ['timestamp']; + + for (let customProperties of CUSTOM_PROPERTIES) { + if (customProperties.every(p => p in actual) && + customProperties.every(p => p in expected)) { + customProperties.forEach(p => { + if (customProperties == 'quaternion') { + assert_array_equals( + actual[p], expected[p], + `assert_sensor_equals: property '${p}' does not match`); + } else { + assert_equals( + actual[p], expected[p], + `assert_sensor_equals: property '${p}' does not match`); + } + }); + GENERAL_PROPERTIES.forEach(p => { + assert_equals( + actual[p], expected[p], + `assert_sensor_equals: property '${p}' does not match`); + }); + return; + } + } + + assert_true(false, 'assert_sensor_equals: sensors have different attributes'); +} diff --git a/tests/wpt/web-platform-tests/geolocation-API/PositionOptions.https.html b/tests/wpt/web-platform-tests/geolocation-API/PositionOptions.https.html index 828224d50de..6b36d66d735 100644 --- a/tests/wpt/web-platform-tests/geolocation-API/PositionOptions.https.html +++ b/tests/wpt/web-platform-tests/geolocation-API/PositionOptions.https.html @@ -1,101 +1,93 @@ - - + + Geolocation Test: PositionOptions tests - + - diff --git a/tests/wpt/web-platform-tests/geolocation-API/clearWatch_TypeError.html b/tests/wpt/web-platform-tests/geolocation-API/clearWatch_TypeError.html deleted file mode 100644 index 14b861bfc0a..00000000000 --- a/tests/wpt/web-platform-tests/geolocation-API/clearWatch_TypeError.html +++ /dev/null @@ -1,22 +0,0 @@ - - -Geolocation Test: clearWatch TypeError tests - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/geolocation-API/clearWatch_TypeError.https.html b/tests/wpt/web-platform-tests/geolocation-API/clearWatch_TypeError.https.html new file mode 100644 index 00000000000..37ebeca885f --- /dev/null +++ b/tests/wpt/web-platform-tests/geolocation-API/clearWatch_TypeError.https.html @@ -0,0 +1,13 @@ + + +Geolocation Test: clearWatch TypeError tests + + + + diff --git a/tests/wpt/web-platform-tests/geolocation-API/disabled-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/geolocation-API/disabled-by-feature-policy.https.sub.html new file mode 100644 index 00000000000..26fa7218a6d --- /dev/null +++ b/tests/wpt/web-platform-tests/geolocation-API/disabled-by-feature-policy.https.sub.html @@ -0,0 +1,71 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/geolocation-API/disabled-by-feature-policy.https.sub.html.headers b/tests/wpt/web-platform-tests/geolocation-API/disabled-by-feature-policy.https.sub.html.headers new file mode 100644 index 00000000000..7e75481ea6d --- /dev/null +++ b/tests/wpt/web-platform-tests/geolocation-API/disabled-by-feature-policy.https.sub.html.headers @@ -0,0 +1 @@ +Feature-Policy: geolocation 'none' diff --git a/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html b/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html new file mode 100644 index 00000000000..30de411cb7a --- /dev/null +++ b/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html @@ -0,0 +1,36 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy-attribute.https.sub.html b/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy-attribute.https.sub.html new file mode 100644 index 00000000000..49a6d777d66 --- /dev/null +++ b/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy-attribute.https.sub.html @@ -0,0 +1,34 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy.https.sub.html new file mode 100644 index 00000000000..955ed10632e --- /dev/null +++ b/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy.https.sub.html @@ -0,0 +1,51 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy.https.sub.html.headers b/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy.https.sub.html.headers new file mode 100644 index 00000000000..40e9bc16ff9 --- /dev/null +++ b/tests/wpt/web-platform-tests/geolocation-API/enabled-by-feature-policy.https.sub.html.headers @@ -0,0 +1 @@ +Feature-Policy: geolocation * diff --git a/tests/wpt/web-platform-tests/geolocation-API/enabled-on-self-origin-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/geolocation-API/enabled-on-self-origin-by-feature-policy.https.sub.html new file mode 100644 index 00000000000..12ff86fa4e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/geolocation-API/enabled-on-self-origin-by-feature-policy.https.sub.html @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/geolocation-API/enabled-on-self-origin-by-feature-policy.https.sub.html.headers b/tests/wpt/web-platform-tests/geolocation-API/enabled-on-self-origin-by-feature-policy.https.sub.html.headers new file mode 100644 index 00000000000..b83264eee76 --- /dev/null +++ b/tests/wpt/web-platform-tests/geolocation-API/enabled-on-self-origin-by-feature-policy.https.sub.html.headers @@ -0,0 +1 @@ +Feature-Policy: geolocation 'self' diff --git a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_IDL.https.html b/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_IDL.https.html deleted file mode 100644 index 1688c862789..00000000000 --- a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_IDL.https.html +++ /dev/null @@ -1,151 +0,0 @@ - - - -Geolocation Test: getCurrentPosition tests - - - - -

    Clear all Geolocation permissions before running this test. If prompted for permission, please allow.

    -
    - - diff --git a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_TypeError.html b/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_TypeError.html deleted file mode 100644 index 6726e8ab6c7..00000000000 --- a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_TypeError.html +++ /dev/null @@ -1,55 +0,0 @@ - - -Geolocation Test: getCurrentPosition TypeError tests - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_TypeError.https.html b/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_TypeError.https.html new file mode 100644 index 00000000000..9da8ac1d292 --- /dev/null +++ b/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_TypeError.https.html @@ -0,0 +1,61 @@ + + +Geolocation Test: getCurrentPosition TypeError tests + + + + + diff --git a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission-manual.html b/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission-manual.html deleted file mode 100644 index 20003cdff1d..00000000000 --- a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission-manual.html +++ /dev/null @@ -1,21 +0,0 @@ - - -Call getCurrentPosition, check that there is UI appearing with the document host - - -

    Clear all Geolocation permissions before running this test.

    - -

    Test passes if there is a permission prompt including the host and no FAIL.

    -
    - - diff --git a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_allow-manual.html b/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_allow-manual.html deleted file mode 100644 index 4628275e321..00000000000 --- a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_allow-manual.html +++ /dev/null @@ -1,32 +0,0 @@ - - -User asked to approve/remember, then asked to revoke, then reload. The permission dialogue should reappear - - -

    Clear all Geolocation permissions before running this test. If prompted for permission, please allow.

    - -
    - - diff --git a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_allow.https.html b/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_allow.https.html index 95171099159..102b8b4d11e 100644 --- a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_allow.https.html +++ b/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_allow.https.html @@ -1,34 +1,52 @@ - - -Geolocation Test: getCurrentPosition location access allowed - - - - - -

    Clear all Geolocation permissions before running this test. If prompted for permission, please allow.

    -
    - + + +Geolocation Test: getCurrentPosition() location access + + + + + diff --git a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_deny-manual.html b/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_deny-manual.html deleted file mode 100644 index b468a65da2b..00000000000 --- a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_deny-manual.html +++ /dev/null @@ -1,34 +0,0 @@ - - -User asked to deny/remember, then asked to revoke, then reload. The permission dialogue should reappear - - -

    Clear all Geolocation permissions before running this test. If prompted for permission, please deny.

    - -
    - - diff --git a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_deny.https.html b/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_deny.https.html index 50129608ac7..54bba9aeabf 100644 --- a/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_deny.https.html +++ b/tests/wpt/web-platform-tests/geolocation-API/getCurrentPosition_permission_deny.https.html @@ -1,32 +1,29 @@ - - + + Geolocation Test: getCurrentPosition location access denied - - - - - -

    Clear all Geolocation permissions before running this test. If prompted for permission, please deny.

    -
    - + + + + + diff --git a/tests/wpt/web-platform-tests/geolocation-API/idlharness.https.window.js b/tests/wpt/web-platform-tests/geolocation-API/idlharness.https.window.js index 176bae86af9..57cbf59d208 100644 --- a/tests/wpt/web-platform-tests/geolocation-API/idlharness.https.window.js +++ b/tests/wpt/web-platform-tests/geolocation-API/idlharness.https.window.js @@ -1,17 +1,28 @@ // META: script=/resources/WebIDLParser.js // META: script=/resources/idlharness.js +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js // https://www.w3.org/TR/geolocation-API/ -idl_test( - ['geolocation'], - ['hr-time', 'html'], - idl_array => { - self.audio = document.createElement('audio'); - self.video = document.createElement('video'); +window.onload = async () => { + await test_driver.set_permission({ name: "geolocation" }, "denied"); + const positionError = await new Promise((resolve, reject) => { + navigator.geolocation.getCurrentPosition(reject, resolve); + }); + + await test_driver.set_permission({ name: "geolocation" }, "granted"); + const position = await new Promise((resolve, reject) => { + navigator.geolocation.getCurrentPosition(resolve, reject); + }); + + idl_test(["geolocation"], ["hr-time", "html"], (idl_array) => { idl_array.add_objects({ - Navigator: ['navigator'], - Geolocation: ['navigator.geolocation'], + Navigator: ["navigator"], + Geolocation: ["navigator.geolocation"], + GeolocationPositionError: [positionError], + GeolocationPosition: [position], + GeolocationCoordinates: [position.coords], }); - } -); + }); +}; diff --git a/tests/wpt/web-platform-tests/geolocation-API/non-fully-active.https.html b/tests/wpt/web-platform-tests/geolocation-API/non-fully-active.https.html index d75c787cabf..13853c0ef86 100644 --- a/tests/wpt/web-platform-tests/geolocation-API/non-fully-active.https.html +++ b/tests/wpt/web-platform-tests/geolocation-API/non-fully-active.https.html @@ -9,7 +9,10 @@ + + + diff --git a/tests/wpt/web-platform-tests/geolocation-API/watchPosition_TypeError.html b/tests/wpt/web-platform-tests/geolocation-API/watchPosition_TypeError.html deleted file mode 100644 index dd8287f5713..00000000000 --- a/tests/wpt/web-platform-tests/geolocation-API/watchPosition_TypeError.html +++ /dev/null @@ -1,55 +0,0 @@ - - -Geolocation Test: watchPosition TypeError tests - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/geolocation-API/watchPosition_TypeError.https.html b/tests/wpt/web-platform-tests/geolocation-API/watchPosition_TypeError.https.html new file mode 100644 index 00000000000..4ae7a890371 --- /dev/null +++ b/tests/wpt/web-platform-tests/geolocation-API/watchPosition_TypeError.https.html @@ -0,0 +1,65 @@ + + +Geolocation Test: watchPosition TypeError tests + + + + + diff --git a/tests/wpt/web-platform-tests/geolocation-API/watchPosition_permission-manual.html b/tests/wpt/web-platform-tests/geolocation-API/watchPosition_permission-manual.html deleted file mode 100644 index e00980192d5..00000000000 --- a/tests/wpt/web-platform-tests/geolocation-API/watchPosition_permission-manual.html +++ /dev/null @@ -1,21 +0,0 @@ - - -Call watchPosition, check that there is UI appearing with the document host - - -

    Clear all Geolocation permissions before running this test.

    - -

    Test passes if there is a permission prompt including the host and no FAIL.

    -
    - - diff --git a/tests/wpt/web-platform-tests/geolocation-API/watchPosition_permission_deny.https.html b/tests/wpt/web-platform-tests/geolocation-API/watchPosition_permission_deny.https.html index 1e2a3c4bf4c..d47f2b5594a 100644 --- a/tests/wpt/web-platform-tests/geolocation-API/watchPosition_permission_deny.https.html +++ b/tests/wpt/web-platform-tests/geolocation-API/watchPosition_permission_deny.https.html @@ -1,33 +1,45 @@ - - + + Geolocation Test: watchPosition location access denied - - - - - -

    Clear all Geolocation permissions before running this test. If prompted for permission, please deny.

    -
    - + + + + + diff --git a/tests/wpt/web-platform-tests/gyroscope/META.yml b/tests/wpt/web-platform-tests/gyroscope/META.yml index 6a48535e3c7..8f553a86ca3 100644 --- a/tests/wpt/web-platform-tests/gyroscope/META.yml +++ b/tests/wpt/web-platform-tests/gyroscope/META.yml @@ -1,6 +1,5 @@ spec: https://w3c.github.io/gyroscope/ suggested_reviewers: - - zqzhang - riju - Honry - rakuco diff --git a/tests/wpt/web-platform-tests/hr-time/idlharness-shadowrealm.window.js b/tests/wpt/web-platform-tests/hr-time/idlharness-shadowrealm.window.js new file mode 100644 index 00000000000..3209db5f41b --- /dev/null +++ b/tests/wpt/web-platform-tests/hr-time/idlharness-shadowrealm.window.js @@ -0,0 +1,2 @@ +// META: script=/resources/idlharness-shadowrealm.js +idl_test_shadowrealm(["hr-time"], ["html", "dom"]); diff --git a/tests/wpt/web-platform-tests/hr-time/navigation-start-post-before-unload.html b/tests/wpt/web-platform-tests/hr-time/navigation-start-post-before-unload.html new file mode 100644 index 00000000000..88ee5db77eb --- /dev/null +++ b/tests/wpt/web-platform-tests/hr-time/navigation-start-post-before-unload.html @@ -0,0 +1,33 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/hr-time/resources/post.html b/tests/wpt/web-platform-tests/hr-time/resources/post.html new file mode 100644 index 00000000000..b8541016dd7 --- /dev/null +++ b/tests/wpt/web-platform-tests/hr-time/resources/post.html @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html-media-capture/META.yml b/tests/wpt/web-platform-tests/html-media-capture/META.yml index 3dd015f3ecb..ecbf633fd5e 100644 --- a/tests/wpt/web-platform-tests/html-media-capture/META.yml +++ b/tests/wpt/web-platform-tests/html-media-capture/META.yml @@ -1,3 +1,3 @@ spec: https://w3c.github.io/html-media-capture/ suggested_reviewers: - - zqzhang + - anssiko diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/anonymous-iframe-popup.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/anonymous-iframe-popup.tentative.https.window.js similarity index 96% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/anonymous-iframe-popup.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/anonymous-iframe/anonymous-iframe-popup.tentative.https.window.js index 6e82aefc65b..66ca0bf2938 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/anonymous-iframe-popup.tentative.https.window.js +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/anonymous-iframe-popup.tentative.https.window.js @@ -2,7 +2,7 @@ // META: script=/common/get-host-info.sub.js // META: script=/common/utils.js // META: script=/common/dispatcher/dispatcher.js -// META: script=../credentialless/resources/common.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js const {ORIGIN, REMOTE_ORIGIN} = get_host_info(); const control_iframe = document.createElement('iframe'); diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/anonymous-window.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/anonymous-window.tentative.https.window.js new file mode 100644 index 00000000000..16a242aacac --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/anonymous-window.tentative.https.window.js @@ -0,0 +1,50 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js + +const {ORIGIN} = get_host_info(); + +promise_test_parallel(async t => { + const iframe = document.createElement("iframe"); + iframe.src = ORIGIN + "/common/blank.html?pipe=status(204)"; + iframe.anonymous = false; + document.body.appendChild(iframe); + iframe.anonymous = true; + iframe.contentWindow.modified = true; + iframe.src = ORIGIN + "/common/blank.html"; + // Wait for navigation to complete. + await new Promise(resolve => iframe.onload = resolve); + assert_true(iframe.anonymous); + assert_true(iframe.contentWindow.anonymouslyFramed); + assert_equals(undefined, iframe.contentWindow.modified); +}, "Anonymous (false => true) => window not reused."); + +promise_test_parallel(async t => { + const iframe = document.createElement("iframe"); + iframe.src = ORIGIN + "/common/blank.html?pipe=status(204)"; + iframe.anonymous = true; + document.body.appendChild(iframe); + iframe.anonymous = false; + iframe.contentWindow.modified = true; + iframe.src = ORIGIN + "/common/blank.html"; + // Wait for navigation to complete. + await new Promise(resolve => iframe.onload = resolve); + assert_false(iframe.anonymous); + assert_false(iframe.contentWindow.anonymouslyFramed); + assert_equals(undefined, iframe.contentWindow.modified); +}, "Anonymous (true => false) => window not reused."); + +promise_test_parallel(async t => { + const iframe = document.createElement("iframe"); + iframe.anonymous = true; + iframe.src = ORIGIN + "/common/blank.html?pipe=status(204)"; + document.body.appendChild(iframe); + iframe.anonymous = true; + iframe.contentWindow.modified = true; + iframe.src = ORIGIN + "/common/blank.html"; + // Wait for navigation to complete. + await new Promise(resolve => iframe.onload = resolve); + assert_true(iframe.anonymous); + assert_true(iframe.contentWindow.anonymouslyFramed); + assert_true(iframe.contentWindow.modified); +}, "Anonymous (true => true) => window reused."); diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/cache-storage.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/cache-storage.tentative.https.window.js new file mode 100644 index 00000000000..8ce6410290a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/cache-storage.tentative.https.window.js @@ -0,0 +1,60 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js +// META: script=./resources/common.js + +// A script storing a value into the CacheStorage. +const store_script = (key, value, done) => ` + const request = new Request("/${key}.txt"); + const response = new Response("${value}", { + headers: { "content-type": "plain/txt" } + }); + const cache = await caches.open("v1"); + const value = await cache.put(request, response.clone()); + send("${done}", "stored"); +`; + +// A script loading a value from the CacheStorage. +const load_script = (key, done) => ` + const cache = await caches.open("v1"); + const request = new Request("/${key}.txt"); + try { + const response = await cache.match(request); + const value = await response.text(); + send("${done}", value); + } catch (error) { + send("${done}", "not found"); + } +`; + +promise_test(async test => { + const origin = get_host_info().HTTPS_REMOTE_ORIGIN; + const key_1 = token(); + const key_2 = token(); + + // 2 actors: An anonymous iframe and a normal one. + const iframe_anonymous = newAnonymousIframe(origin); + const iframe_normal = newIframe(origin); + const response_queue_1 = token(); + const response_queue_2 = token(); + + // 1. Each of them store a value in CacheStorage with different keys. + send(iframe_anonymous , store_script(key_1, "value_1", response_queue_1)); + send(iframe_normal, store_script(key_2, "value_2", response_queue_2)); + assert_equals(await receive(response_queue_1), "stored"); + assert_equals(await receive(response_queue_2), "stored"); + + // 2. Each of them tries to retrieve the value from opposite side, without + // success. + send(iframe_anonymous , load_script(key_2, response_queue_1)); + send(iframe_normal, load_script(key_1, response_queue_2)); + assert_equals(await receive(response_queue_1), "not found"); + assert_equals(await receive(response_queue_2), "not found"); + + // 3. Each of them tries to retrieve the value from their side, with success: + send(iframe_anonymous , load_script(key_1, response_queue_1)); + send(iframe_normal, load_script(key_2, response_queue_2)); + assert_equals(await receive(response_queue_1), "value_1"); + assert_equals(await receive(response_queue_2), "value_2"); +}) diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/cookie-store.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/cookie-store.tentative.https.window.js similarity index 97% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/cookie-store.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/anonymous-iframe/cookie-store.tentative.https.window.js index 60a856c7584..5338c8551f0 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/cookie-store.tentative.https.window.js +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/cookie-store.tentative.https.window.js @@ -2,7 +2,7 @@ // META: script=/common/get-host-info.sub.js // META: script=/common/utils.js // META: script=/common/dispatcher/dispatcher.js -// META: script=../credentialless/resources/common.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js // META: script=./resources/common.js // A set of tests, checking cookies defined from within an anonymous iframe diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/cookie.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/cookie.tentative.https.window.js similarity index 98% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/cookie.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/anonymous-iframe/cookie.tentative.https.window.js index e9921330dde..18d8f4b492d 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/cookie.tentative.https.window.js +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/cookie.tentative.https.window.js @@ -1,7 +1,7 @@ // META: script=/common/get-host-info.sub.js // META: script=/common/utils.js // META: script=/common/dispatcher/dispatcher.js -// META: script=../credentialless/resources/common.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js // META: script=./resources/common.js const same_origin = get_host_info().HTTPS_ORIGIN; diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/embedding.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/embedding.tentative.https.window.js new file mode 100644 index 00000000000..1a023947fc4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/embedding.tentative.https.window.js @@ -0,0 +1,117 @@ +// META: variant=?1-2 +// META: variant=?3-4 +// META: variant=?5-6 +// META: variant=?7-8 +// META: variant=?9-10 +// META: variant=?11-12 +// META: variant=?13-last +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/subset-tests.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js +// META: script=./resources/common.js +// META: script=./resources/embedding-test.js + +const {REMOTE_ORIGIN} = get_host_info(); + +// variant = 1 +subsetTest(embeddingTest, + "Parent embeds same-origin anonymous iframe", { + expectation: EXPECT_LOAD, +}); + +// variant = 2 +subsetTest(embeddingTest, + "Parent embeds cross-origin anonymous iframe", { + child_origin: REMOTE_ORIGIN, + expectation: EXPECT_LOAD, +}); + +// variant = 3 +subsetTest(embeddingTest, + "COEP:require-corp parent embeds same-origin anonymous iframe", { + parent_headers: coep_require_corp, + expectation: EXPECT_LOAD, +}); + +// variant = 4 +subsetTest(embeddingTest, + "COEP:require-corp parent embeds cross-origin anonymous iframe", { + parent_headers: coep_require_corp, + child_origin: REMOTE_ORIGIN, + expectation: EXPECT_LOAD, +}); + +// variant = 5 +subsetTest(embeddingTest, + "COEP:credentialless parent embeds same-origin anonymous iframe", { + parent_headers: coep_credentialless, + expectation: EXPECT_LOAD, +}); + +// variant = 6 +subsetTest(embeddingTest, + "COEP:credentialless parent embeds cross-origin anonymous iframe", { + parent_headers: coep_credentialless, + child_origin: REMOTE_ORIGIN, + expectation: EXPECT_LOAD, +}); + +// variant = 7 +// Regression test for https://crbug.com/1314369 +subsetTest(embeddingTest, + "COOP:same-origin + COEP:require-corp embeds same-origin anonymous iframe", { + parent_headers: coop_same_origin + coep_require_corp, + expectation: EXPECT_LOAD, +}); + +// variant = 8 +// Regression test for https://crbug.com/1314369 +subsetTest(embeddingTest, + "COOP:same-origin + COEP:require-corp embeds cross-origin anonymous iframe", { + parent_headers: coop_same_origin + coep_require_corp, + child_origin: REMOTE_ORIGIN, + expectation: EXPECT_LOAD, +}); + +// variant = 9 +// Regression test for https://crbug.com/1314369 +subsetTest(embeddingTest, + "COOP:same-origin + COEP:credentialless embeds same-origin anonymous iframe", { + parent_headers: coop_same_origin + coep_credentialless, + expectation: EXPECT_LOAD, +}); + +// variant = 10 +// Regression test for https://crbug.com/1314369 +subsetTest(embeddingTest, + "COOP:same-origin + COEP:credentialless embeds cross-origin anonymous iframe", { + parent_headers: coop_same_origin + coep_credentialless, + child_origin: REMOTE_ORIGIN, + expectation: EXPECT_LOAD, +}); + +// variant = 11 +subsetTest(embeddingTest, + "Parents embeds a CSP:frame-ancestore anonymous iframe", { + child_headers: "|headers(Content-Security-Policy,frame-ancestors 'none')", + expectation: EXPECT_BLOCK, +}); + +// variant = 12 +subsetTest(embeddingTest, + "Cross-Origin-Isolated parent embeds same-origin COEP anonymous iframe", { + parent_headers: coop_same_origin + coep_require_corp, + child_headers: coop_same_origin + coep_require_corp, + expectation: EXPECT_LOAD, +}); + +// variant = 13 +subsetTest(embeddingTest, + "Cross-Origin-Isolated parent embeds cross-origin COEP anonymous iframe", { + parent_headers: coop_same_origin + coep_require_corp, + child_headers: coop_same_origin + coep_require_corp, + child_origin: REMOTE_ORIGIN, + expectation: EXPECT_LOAD, +}); diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/fenced-frame-bypass.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/fenced-frame-bypass.tentative.https.window.js new file mode 100644 index 00000000000..6cfd2c34d19 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/fenced-frame-bypass.tentative.https.window.js @@ -0,0 +1,63 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js +// META: script=./resources/common.js +// META: timeout=long + +setup(() => { + assert_implements(window.HTMLFencedFrameElement, + "HTMLFencedFrameElement is not supported."); +}) + +// 4 actors: +// A (this document) +// ┌─────────────────────┴──┠+// ┌─┼───────────────────┠D (anonymous-iframe) +// │ B (fenced-frame) │ +// │ │ │ +// │ C (anonymous-iframe)│ +// └─────────────────────┘ +// +// This test whether the two anonymous iframe can communicate and bypass the +// fencedframe boundary. This shouldn't happen. +promise_test(async test => { + const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN; + const msg_queue = token(); + + // Create the the 3 actors. + const anonymous_iframe_1 = newAnonymousIframe(cross_origin); + const fenced_frame = newFencedFrame(cross_origin); + send(fenced_frame, ` + const importScript = ${importScript}; + await importScript("/common/utils.js"); + await importScript("/html/cross-origin-embedder-policy/credentialless" + + "/resources/common.js"); + await importScript("/html/anonymous-iframe/resources/common.js"); + const support_loading_mode_fenced_frame = + "|header(Supports-Loading-Mode,fenced-frame)"; + const anonymous_iframe_2 = + newAnonymousIframe("${cross_origin}", support_loading_mode_fenced_frame); + send("${msg_queue}", anonymous_iframe_2); + `); + const anonymous_iframe_2 = await receive(msg_queue); + + // Try to communicate using BroadCastChannel, in between the two + // AnonymousIframe. + const bc_key = token(); + send(anonymous_iframe_1, ` + const bc = new BroadcastChannel("${bc_key}"); + bc.onmessage = event => send("${msg_queue}", event.data); + send("${msg_queue}", "BroadcastChannel registered"); + `); + assert_equals(await receive(msg_queue), "BroadcastChannel registered"); + await send(anonymous_iframe_2, ` + const bc = new BroadcastChannel("${bc_key}"); + bc.postMessage("Can communicate"); + `); + test.step_timeout(() => { + send(msg_queue, "Cannot communicate"); + }, 4000); + + assert_equals(await receive(msg_queue), "Cannot communicate"); +}) diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/fenced-frame.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/fenced-frame.tentative.https.window.js new file mode 100644 index 00000000000..f5f71bfe0b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/fenced-frame.tentative.https.window.js @@ -0,0 +1,39 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js +// META: script=./resources/common.js +// META: timeout=long + +setup(() => { + assert_implements(window.HTMLFencedFrameElement, + "HTMLFencedFrameElement is not supported."); +}) + +// Check whether this anonymous bit propagates toward FencedFrame. It shouldn't. +promise_test(async test => { + const origin = get_host_info().HTTPS_ORIGIN; + const msg_queue = token(); + + // 1. Create an anonymous iframe. + const frame_anonymous = newAnonymousIframe(origin); + + // 2. Create a FencedFrame within it. + send(frame_anonymous, ` + const importScript = ${importScript}; + await importScript("/common/utils.js"); + await importScript("/html/cross-origin-embedder-policy/credentialless" + + "/resources/common.js"); + await importScript("/html/anonymous-iframe/resources/common.js"); + const frame_fenced = newFencedFrame("${origin}"); + send("${msg_queue}", frame_fenced); + `); + const frame_fenced = await receive(msg_queue); + + // 3. Expect it not to be considered anonymous. + send(frame_fenced, ` + send("${msg_queue}", window.anonymouslyFramed); + `); + assert_equals(await receive(msg_queue), "false", + "Check window.anonymouslyFramed in FencedFrame"); +}, 'FencedFrame within an AnonymousIframe is not anonymous') diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/indexeddb.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/indexeddb.tentative.https.window.js new file mode 100644 index 00000000000..197d7828c84 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/indexeddb.tentative.https.window.js @@ -0,0 +1,104 @@ +// META: timeout=long +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js +// META: script=./resources/common.js + +// "token()" is used to get unique value for every execution of the test. This +// avoids potential side effects of one run toward the second. +const g_db_store = token(); +const g_db_name = token(); +const g_db_version = 1; + +// A script storing "|id|=|value|" in IndexedDB. +const write_script = (id, value, done) => ` + // Open the database: + const request = indexedDB.open("${g_db_name}", "${g_db_version}"); + request.onupgradeneeded = () => { + request.result.createObjectStore("${g_db_store}", {keyPath: "id"}); + }; + await new Promise(r => request.onsuccess = r); + const db = request.result; + + // Write the value: + const transaction_write = db.transaction("${g_db_store}", "readwrite"); + transaction_write.objectStore("${g_db_store}").add({ + id: "${id}", + value: "${value}", + }); + await transaction_write.complete; + + db.close(); + send("${done}", "Done"); +`; + +// A script retrieving what was stored inside IndexedDB. +const read_script = (done) => ` + // Open the database: + const request = indexedDB.open("${g_db_name}", "${g_db_version}"); + await new Promise(r => request.onsuccess = r); + const db = request.result; + + // Read: + const transaction_read = db.transaction("${g_db_store}", "readonly"); + const get_all = transaction_read.objectStore("${g_db_store}").getAll(); + await new Promise(r => transaction_read.oncomplete = r); + + db.close(); + send("${done}", JSON.stringify(get_all.result)); +`; + +promise_test(async test => { + // 4 actors: 2 anonymous iframe and 2 normal iframe. + const origin = get_host_info().HTTPS_REMOTE_ORIGIN; + const iframes = [ + newAnonymousIframe(origin), + newAnonymousIframe(origin), + newIframe(origin), + newIframe(origin), + ]; + + // 1. Write a different key-value pair from the iframes in IndexedDB: + const keys = iframes.map(token); + const values = iframes.map(token); + const response_queues = iframes.map(token); + await Promise.all(iframes.map(async (_, i) => { + send(iframes[i], write_script(keys[i], values[i], response_queues[i])); + assert_equals(await receive(response_queues[i]), "Done"); + })); + + // 2. Read the state from every iframes: + const states = await Promise.all(iframes.map(async (_, i) => { + send(iframes[i], read_script(response_queues[i])); + const reply = JSON.parse(await receive(response_queues[i])); + + const state = {} + for(entry of reply) + state[entry.id] = entry.value; + return state; + })); + + + // Verify the two anonymous iframe share the same state and the normal iframe + // share a second state + assert_equals(states[0][keys[0]], values[0]); + assert_equals(states[0][keys[1]], values[1]); + assert_equals(states[0][keys[2]], undefined); + assert_equals(states[0][keys[3]], undefined); + + assert_equals(states[1][keys[0]], values[0]); + assert_equals(states[1][keys[1]], values[1]); + assert_equals(states[1][keys[2]], undefined); + assert_equals(states[1][keys[3]], undefined); + + assert_equals(states[2][keys[0]], undefined); + assert_equals(states[2][keys[1]], undefined); + assert_equals(states[2][keys[2]], values[2]); + assert_equals(states[2][keys[3]], values[3]); + + assert_equals(states[3][keys[0]], undefined); + assert_equals(states[3][keys[1]], undefined); + assert_equals(states[3][keys[2]], values[2]); + assert_equals(states[3][keys[3]], values[3]); +}) diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/initial-empty-document.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/initial-empty-document.tentative.https.window.js new file mode 100644 index 00000000000..48600f53b12 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/initial-empty-document.tentative.https.window.js @@ -0,0 +1,34 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js + +const {ORIGIN} = get_host_info(); + +promise_test_parallel(async t => { + const parent = document.createElement("iframe"); + parent.anonymous = true; + document.body.appendChild(parent); + parent.src = ORIGIN + "/common/blank.html"; + // Wait for navigation to complete. + await new Promise(resolve => parent.onload = resolve); + assert_true(parent.anonymous); + + const child = document.createElement("iframe"); + parent.contentDocument.body.appendChild(child); + assert_false(child.anonymous); + assert_true(child.contentWindow.anonymouslyFramed); +}, "Initial empty document inherits from parent's document."); + +promise_test_parallel(async t => { + const parent = document.createElement("iframe"); + document.body.appendChild(parent); + parent.src = ORIGIN + "/common/blank.html"; + // Wait for navigation to complete. + await new Promise(resolve => parent.onload = resolve); + assert_false(parent.anonymous); + + const child = document.createElement("iframe"); + child.anonymous = true; + parent.contentDocument.body.appendChild(child); + assert_true(child.anonymous); + assert_true(child.contentWindow.anonymouslyFramed); +}, "Initial empty document inherits from its's iframe's anonymous attribute."); diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/local-storage-initial-empty-document.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/local-storage-initial-empty-document.tentative.https.window.js new file mode 100644 index 00000000000..985699e25f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/local-storage-initial-empty-document.tentative.https.window.js @@ -0,0 +1,70 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js +// META: script=./resources/common.js + +// This test verifies the behavior of the initial empty document nested inside +// anonymous iframes. +// +// The following tree of frames and documents is used: +// A +// ├──B (anonymous) +// │ └──D (initial empty document) +// └──C (control) +// └──E (initial empty document) +// +// Storage used for D and E must be different. +promise_test(async test => { + const iframe_B = newAnonymousIframe(origin); + const iframe_C = newIframe(origin); + + // Create iframe_D and store a value in localStorage. + const key_D = token(); + const value_D = "value_D"; + const queue_B = token(); + send(iframe_B, ` + const iframe_D = document.createElement("iframe"); + document.body.appendChild(iframe_D); + iframe_D.contentWindow.localStorage.setItem("${key_D}","${value_D}"); + send("${queue_B}", "Done"); + `); + + // Create iframe_E and store a value in localStorage. + const key_E = token(); + const value_E = "value_E"; + const queue_C = token(); + send(iframe_C, ` + const iframe_E = document.createElement("iframe"); + document.body.appendChild(iframe_E); + iframe_E.contentWindow.localStorage.setItem("${key_E}","${value_E}"); + send("${queue_C}", "Done"); + `); + + assert_equals(await receive(queue_B), "Done"); + assert_equals(await receive(queue_C), "Done"); + + // Try to load both values from both contexts: + send(iframe_B, ` + const iframe_D = document.querySelector("iframe"); + const value_D = iframe_D.contentWindow.localStorage.getItem("${key_D}"); + const value_E = iframe_D.contentWindow.localStorage.getItem("${key_E}"); + send("${queue_B}", value_D); + send("${queue_B}", value_E); + `); + send(iframe_C, ` + const iframe_E = document.querySelector("iframe"); + const value_D = iframe_E.contentWindow.localStorage.getItem("${key_D}"); + const value_E = iframe_E.contentWindow.localStorage.getItem("${key_E}"); + send("${queue_C}", value_D); + send("${queue_C}", value_E); + `); + + // Verify the anonymous iframe and the normal one do not have access to each + // other. + assert_equals(await receive(queue_B), value_D); // key_D + assert_equals(await receive(queue_B), ""); // key_E + assert_equals(await receive(queue_C), ""); // key_D + assert_equals(await receive(queue_C), value_E); // key_E +}, "Local storage is correctly partitioned with regards to anonymous iframe " + + "in initial empty documents."); diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/local-storage.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/local-storage.tentative.https.window.js new file mode 100644 index 00000000000..2734f12d9e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/local-storage.tentative.https.window.js @@ -0,0 +1,57 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js +// META: script=./resources/common.js + +// Make |iframe| to store |key|=|value| into LocalStorage. +const store = async (iframe, key, value) => { + const response_queue = token(); + send(iframe, ` + localStorage.setItem("${key}", "${value}"); + send("${response_queue}", "stored"); + `); + assert_equals(await receive(response_queue), "stored"); +}; + +// Make |iframe| to load |key| in LocalStorage. Check it matches the +// |expected_value|. +const load = async (iframe, key, expected_value) => { + const response_queue = token(); + send(iframe, ` + const value = localStorage.getItem("${key}"); + send("${response_queue}", value || "not found"); + `); + assert_equals(await receive(response_queue), expected_value); +}; + +promise_test(async test => { + const origin = get_host_info().HTTPS_REMOTE_ORIGIN; + const key_1 = token(); + const key_2 = token(); + + // 4 actors: 2 anonymous iframe and 2 normal iframe. + const iframe_anonymous_1 = newAnonymousIframe(origin); + const iframe_anonymous_2 = newAnonymousIframe(origin); + const iframe_normal_1 = newIframe(origin); + const iframe_normal_2 = newIframe(origin); + + // 1. Store a value in one anonymous iframe and one normal iframe. + await Promise.all([ + store(iframe_anonymous_1, key_1, "value_1"), + store(iframe_normal_1, key_2, "value_2"), + ]); + + // 2. Check what each of them can retrieve. + await Promise.all([ + load(iframe_anonymous_1, key_1, "value_1"), + load(iframe_anonymous_2, key_1, "value_1"), + load(iframe_anonymous_1, key_2, "not found"), + load(iframe_anonymous_2, key_2, "not found"), + + load(iframe_normal_1, key_1, "not found"), + load(iframe_normal_2, key_1, "not found"), + load(iframe_normal_1, key_2, "value_2"), + load(iframe_normal_2, key_2, "value_2"), + ]); +}, "Local storage is correctly partitioned with regards to anonymous iframe"); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js similarity index 87% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js index a62c7a9a2e0..d720008ccc7 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js @@ -28,8 +28,8 @@ promise_test(async t => { child.anonymous = true; t.add_cleanup(() => child.remove()); - child.src = - "../resources/navigate-none.sub.html?postMessageTo=top"; + child.src = "/html/cross-origin-embedder-policy/resources/" + + "navigate-none.sub.html?postMessageTo=top"; document.body.append(child); assert_true(await iframe_allowed(child), @@ -40,8 +40,8 @@ promise_test(async t => { // anonymous property from the parent. const grandchild = child.contentDocument.createElement("iframe"); - grandchild.src = - `../resources/navigate-none.sub.html?postMessageTo=top`; + grandchild.src = "/html/cross-origin-embedder-policy/resources/" + + "navigate-none.sub.html?postMessageTo=top"; child.contentDocument.body.append(grandchild); assert_true(await iframe_allowed(grandchild), diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js.headers b/tests/wpt/web-platform-tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js.headers similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js.headers rename to tests/wpt/web-platform-tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js.headers diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/resources/common.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/resources/common.js new file mode 100644 index 00000000000..e83bd094670 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/resources/common.js @@ -0,0 +1,55 @@ +// Create an anonymous iframe. The new document will execute any scripts sent +// toward the token it returns. +const newAnonymousIframe = (child_origin, opt_headers) => { + opt_headers ||= ""; + const sub_document_token = token(); + let iframe = document.createElement('iframe'); + iframe.src = child_origin + executor_path + opt_headers + + `&uuid=${sub_document_token}`; + iframe.anonymous = true; + document.body.appendChild(iframe); + return sub_document_token; +}; + +// Create a normal iframe. The new document will execute any scripts sent +// toward the token it returns. +const newIframe = (child_origin) => { + const sub_document_token = token(); + let iframe = document.createElement('iframe'); + iframe.src = child_origin + executor_path + `&uuid=${sub_document_token}`; + iframe.anonymous = false + document.body.appendChild(iframe); + return sub_document_token; +}; + +// Create a popup. The new document will execute any scripts sent toward the +// token it returns. +const newPopup = (test, origin) => { + const popup_token = token(); + const popup = window.open(origin + executor_path + `&uuid=${popup_token}`); + test.add_cleanup(() => popup.close()); + return popup_token; +} + +// Create a fenced frame. The new document will execute any scripts sent +// toward the token it returns. +const newFencedFrame = (child_origin) => { + const support_loading_mode_fenced_frame = + "|header(Supports-Loading-Mode,fenced-frame)"; + const sub_document_token = token(); + const fencedframe = document.createElement('fencedframe'); + fencedframe.src = child_origin + executor_path + + support_loading_mode_fenced_frame + + `&uuid=${sub_document_token}`; + document.body.appendChild(fencedframe); + return sub_document_token; +}; + +const importScript = (url) => { + const script = document.createElement("script"); + script.type = "text/javascript"; + script.src = url; + const loaded = new Promise(resolve => script.onload = resolve); + document.body.appendChild(script); + return loaded; +} diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/resources/embedding-test.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/resources/embedding-test.js new file mode 100644 index 00000000000..414d9cfc408 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/resources/embedding-test.js @@ -0,0 +1,72 @@ +// One document embeds another in an iframe. Both are loaded from the network. +// Check whether or not the child can load. + +// There are no interoperable ways to check an iframe failed to load. So a +// timeout is being used. See https://github.com/whatwg/html/issues/125 +// Moreover, we want to track progress, managing timeout explicitly allows to +// get a per-test results, even in case of failure of one. +setup({ explicit_timeout: true }); + +const EXPECT_LOAD = "load"; +const EXPECT_BLOCK = "block"; + +// Load an anonymous iframe. Control both the parent and the child headers. +// Check whether it loaded or not. +const embeddingTest = (description, { + parent_headers, + child_headers, + child_origin, + expectation, +}) => { + // Default values: + child_origin ||= globalThis.origin; + parent_headers ||= ""; + child_headers||= ""; + + const parent_origin = window.origin; + + promise_test_parallel(async test => { + const parent_token = token(); + const parent_url = parent_origin + executor_path + parent_headers + + `&uuid=${parent_token}`; + + const child_token = token(); + const child_url = child_origin + executor_path + child_headers + + `&uuid=${child_token}`; + + // Create the parent: + window.open(parent_url); + add_completion_callback(() => send(parent_token, "close()")); + + // The parent creates its child: + await send(parent_token, ` + const iframe = document.createElement("iframe"); + iframe.anonymous = true; + iframe.src = "${child_url}"; + document.body.appendChild(iframe); + `); + + // Ping the child to know whether it was allowed to load or not: + const reply_token = token(); + await send(child_token, ` + send("${reply_token}", "load"); + `); + + // There are no interoperable ways to check an iframe failed to load. So a + // timeout is being used. + // See https://github.com/whatwg/html/issues/125 + // Use a shorter timeout when it is expected to be reached. + // - The long delay reduces the false-positive rate. False-positive causes + // stability problems on bot, so a big delay is used to vanish them. + // https://crbug.com/1215956. + // - The short delay avoids delaying too much the test(s) for nothing and + // timing out. False-negative are not a problem, they just need not to + // overwhelm the true-negative, which is trivial to get. + step_timeout(() => send(reply_token, "block"), expectation == EXPECT_BLOCK + ? 2000 + : 6000 + ); + + assert_equals(await receive(reply_token), expectation); + }, description); +}; diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/resources/serviceworker-partitioning-helper.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/resources/serviceworker-partitioning-helper.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/resources/serviceworker-partitioning-helper.js rename to tests/wpt/web-platform-tests/html/anonymous-iframe/resources/serviceworker-partitioning-helper.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/resources/sharedworker-partitioning-helper.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/resources/sharedworker-partitioning-helper.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/resources/sharedworker-partitioning-helper.js rename to tests/wpt/web-platform-tests/html/anonymous-iframe/resources/sharedworker-partitioning-helper.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/serviceworker-partitioning.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/serviceworker-partitioning.tentative.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/serviceworker-partitioning.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/anonymous-iframe/serviceworker-partitioning.tentative.https.window.js diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/session-storage.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/session-storage.tentative.https.window.js new file mode 100644 index 00000000000..94fbd842ac6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/session-storage.tentative.https.window.js @@ -0,0 +1,57 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js +// META: script=./resources/common.js + +// Make |iframe| to store |key|=|value| into sessionStorage. +const store = async (iframe, key, value) => { + const response_queue = token(); + send(iframe, ` + sessionStorage.setItem("${key}", "${value}"); + send("${response_queue}", "stored"); + `); + assert_equals(await receive(response_queue), "stored"); +}; + +// Make |iframe| to load |key| in sessionStorage. Check it matches the +// |expected_value|. +const load = async (iframe, key, expected_value) => { + const response_queue = token(); + send(iframe, ` + const value = sessionStorage.getItem("${key}"); + send("${response_queue}", value || "not found"); + `); + assert_equals(await receive(response_queue), expected_value); +}; + +promise_test(async test => { + const origin = get_host_info().HTTPS_REMOTE_ORIGIN; + const key_1 = token(); + const key_2 = token(); + + // 4 actors: 2 anonymous iframe and 2 normal iframe. + const iframe_anonymous_1 = newAnonymousIframe(origin); + const iframe_anonymous_2 = newAnonymousIframe(origin); + const iframe_normal_1 = newIframe(origin); + const iframe_normal_2 = newIframe(origin); + + // 1. Store a value in one anonymous iframe and one normal iframe. + await Promise.all([ + store(iframe_anonymous_1, key_1, "value_1"), + store(iframe_normal_1, key_2, "value_2"), + ]); + + // 2. Check what each of them can retrieve. + await Promise.all([ + load(iframe_anonymous_1, key_1, "value_1"), + load(iframe_anonymous_2, key_1, "value_1"), + load(iframe_anonymous_1, key_2, "not found"), + load(iframe_anonymous_2, key_2, "not found"), + + load(iframe_normal_1, key_1, "not found"), + load(iframe_normal_2, key_1, "not found"), + load(iframe_normal_1, key_2, "value_2"), + load(iframe_normal_2, key_2, "value_2"), + ]); +}, "Session storage is correctly partitioned with regards to anonymous iframe"); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/sharedworker-partitioning.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/sharedworker-partitioning.tentative.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/sharedworker-partitioning.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/anonymous-iframe/sharedworker-partitioning.tentative.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/web-lock.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/web-lock.tentative.https.window.js similarity index 97% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/web-lock.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/anonymous-iframe/web-lock.tentative.https.window.js index fad21dfec9b..ed1da0b9ad7 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/web-lock.tentative.https.window.js +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/web-lock.tentative.https.window.js @@ -1,7 +1,7 @@ // META: script=/common/get-host-info.sub.js // META: script=/common/utils.js // META: script=/common/dispatcher/dispatcher.js -// META: script=../credentialless/resources/common.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js // META: script=./resources/common.js // A script acquiring a lock. It can be released using window.releaseLocks diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/dedicated-worker.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/dedicated-worker.html new file mode 100644 index 00000000000..b08588a8bd5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/dedicated-worker.html @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-1.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-1.html new file mode 100644 index 00000000000..6a48d0657b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-1.html @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-2.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-2.html new file mode 100644 index 00000000000..a767c4fa83e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-2.html @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-cors.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-cors.html new file mode 100644 index 00000000000..c04089a5e25 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-cors.html @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-redirects.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-redirects.html new file mode 100644 index 00000000000..b0b49d5f12a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-redirects.html @@ -0,0 +1,34 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/shared-worker.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/shared-worker.html new file mode 100644 index 00000000000..77139fd08aa --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/eligibility/shared-worker.html @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/focus.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/focus.html new file mode 100644 index 00000000000..3901a5417dd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/focus.html @@ -0,0 +1,73 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/pushstate.https.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/pushstate.https.html new file mode 100644 index 00000000000..218562254a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/pushstate.https.html @@ -0,0 +1,63 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/echo-worker.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/echo-worker.js new file mode 100644 index 00000000000..3e3ecb52e9f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/echo-worker.js @@ -0,0 +1,16 @@ +// On receiving a message from the parent Document, send back a message to the +// parent Document. This is used to wait for worker initialization and test +// that this worker is alive and working. + +// For dedicated workers. +self.addEventListener('message', event => { + postMessage(event.data); +}); + +// For shared workers. +onconnect = e => { + const port = e.ports[0]; + port.onmessage = event => { + port.postMessage(event.data); + } +}; diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/executor-pushstate.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/executor-pushstate.html new file mode 100644 index 00000000000..dcf4a798d00 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/executor-pushstate.html @@ -0,0 +1,13 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/executor.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/executor.html index 4741fb7690c..2d118bbe2b2 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/executor.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/executor.html @@ -1,52 +1,5 @@ - + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/executor.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/executor.js new file mode 100644 index 00000000000..67ce0681303 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/executor.js @@ -0,0 +1,64 @@ +const params = new URLSearchParams(window.location.search); +const uuid = params.get('uuid'); + +// Executor and BFCache detection + +// When navigating out from this page, always call +// `prepareNavigation(callback)` synchronously from the script injected by +// `RemoteContext.execute_script()`, and trigger navigation on or after the +// callback is called. +// prepareNavigation() suspends task polling and avoid in-flight fetch +// requests during navigation that might evict the page from BFCache. +// +// When we navigate to the page again, task polling is resumed, either +// - (BFCache cases) when the pageshow event listener added by +// prepareNavigation() is executed, or +// - (Non-BFCache cases) when `Executor.execute()` is called again during +// non-BFCache page loading. +// +// In such scenarios, `assert_bfcached()` etc. in `helper.sub.js` can determine +// whether the page is restored from BFCache or not, by observing +// - `isPageshowFired`: whether the pageshow event listener added by the +// prepareNavigation() before navigating out, and +// - `loadCount`: whether this inline script is evaluated again. +// - `isPageshowPersisted` is used to assert that `event.persisted` is true +// when restored from BFCache. + +window.isPageshowFired = false; +window.isPageshowPersisted = null; +window.loadCount = parseInt(localStorage.getItem(uuid + '.loadCount') || '0') + 1; +localStorage.setItem(uuid + '.loadCount', loadCount); + +window.pageShowPromise = new Promise(resolve => + window.addEventListener('pageshow', resolve, {once: true})); + +const executor = new Executor(uuid); + +window.prepareNavigation = function(callback) { + window.addEventListener( + 'pageshow', + (event) => { + window.isPageshowFired = true; + window.isPageshowPersisted = event.persisted; + executor.resume(); + }, + {once: true}); + executor.suspend(callback); +} + +// Try to disable BFCache by acquiring and never releasing a Web Lock. +// This requires HTTPS. +// Note: This is a workaround depending on non-specified WebLock+BFCache +// behavior, and doesn't work on Safari. We might want to introduce a +// test-only BFCache-disabling API instead in the future. +// https://github.com/web-platform-tests/wpt/issues/16359#issuecomment-795004780 +// https://crbug.com/1298336 +window.disableBFCache = () => { + return new Promise(resolve => { + // Use page's UUID as a unique lock name. + navigator.locks.request(uuid, () => { + resolve(); + return new Promise(() => {}); + }); + }); +}; diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/helper.sub.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/helper.sub.js index b2087d9de50..bae56869add 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/helper.sub.js +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/helper.sub.js @@ -67,7 +67,8 @@ const waitForPageShow = () => window.pageShowPromise; // Run a test that navigates A->B->A: // 1. Page A is opened by `params.openFunc(url)`. -// 2. `params.funcBeforeNavigation` is executed on page A. +// 2. `params.funcBeforeNavigation(params.argsBeforeNavigation)` is executed +// on page A. // 3. The window is navigated to page B on `params.targetOrigin`. // 4. The window is back navigated to page A (expecting BFCached). // @@ -104,7 +105,9 @@ function runEventTest(params, description) { runBfcacheTest(params, description); } -async function navigateAndThenBack(pageA, pageB, urlB) { +async function navigateAndThenBack(pageA, pageB, urlB, + funcBeforeBackNavigation, + argsBeforeBackNavigation) { await pageA.execute_script( (url) => { prepareNavigation(() => { @@ -115,6 +118,10 @@ async function navigateAndThenBack(pageA, pageB, urlB) { ); await pageB.execute_script(waitForPageShow); + if (funcBeforeBackNavigation) { + await pageB.execute_script(funcBeforeBackNavigation, + argsBeforeBackNavigation); + } await pageB.execute_script( () => { prepareNavigation(() => { history.back(); }); @@ -129,7 +136,10 @@ function runBfcacheTest(params, description) { openFunc: url => window.open(url, '_blank', 'noopener'), scripts: [], funcBeforeNavigation: () => {}, + argsBeforeNavigation: [], targetOrigin: originCrossSite, + funcBeforeBackNavigation: () => {}, + argsBeforeBackNavigation: [], shouldBeCached: true, funcAfterAssertion: () => {}, } @@ -143,6 +153,10 @@ function runBfcacheTest(params, description) { const urlA = executorPath + pageA.context_id; const urlB = params.targetOrigin + executorPath + pageB.context_id; + // So that tests can refer to these URLs for assertions if necessary. + pageA.url = originSameOrigin + urlA; + pageB.url = urlB; + params.openFunc(urlA); await pageA.execute_script(waitForPageShow); @@ -156,8 +170,11 @@ function runBfcacheTest(params, description) { }, [src]); } - await pageA.execute_script(params.funcBeforeNavigation); - await navigateAndThenBack(pageA, pageB, urlB); + await pageA.execute_script(params.funcBeforeNavigation, + params.argsBeforeNavigation); + await navigateAndThenBack(pageA, pageB, urlB, + params.funcBeforeBackNavigation, + params.argsBeforeBackNavigation); if (params.shouldBeCached) { await assert_bfcached(pageA); @@ -166,7 +183,47 @@ function runBfcacheTest(params, description) { } if (params.funcAfterAssertion) { - await params.funcAfterAssertion(pageA, pageB); + await params.funcAfterAssertion(pageA, pageB, t); } }, description); } + +// Call clients.claim() on the service worker +async function claim(t, worker) { + const channel = new MessageChannel(); + const saw_message = new Promise(function(resolve) { + channel.port1.onmessage = t.step_func(function(e) { + assert_equals(e.data, 'PASS', 'Worker call to claim() should fulfill.'); + resolve(); + }); + }); + worker.postMessage({type: "claim", port: channel.port2}, [channel.port2]); + await saw_message; +} + +// Assigns the current client to a local variable on the service worker. +async function storeClients(t, worker) { + const channel = new MessageChannel(); + const saw_message = new Promise(function(resolve) { + channel.port1.onmessage = t.step_func(function(e) { + assert_equals(e.data, 'PASS', 'storeClients'); + resolve(); + }); + }); + worker.postMessage({type: "storeClients", port: channel.port2}, [channel.port2]); + await saw_message; +} + +// Call storedClients.postMessage("") on the service worker +async function postMessageToStoredClients(t, worker) { + const channel = new MessageChannel(); + const saw_message = new Promise(function(resolve) { + channel.port1.onmessage = t.step_func(function(e) { + assert_equals(e.data, 'PASS', 'postMessageToStoredClients'); + resolve(); + }); + }); + worker.postMessage({type: "postMessageToStoredClients", + port: channel.port2}, [channel.port2]); + await saw_message; +} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/inflight-fetch-helper.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/inflight-fetch-helper.js new file mode 100644 index 00000000000..7832003b76b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/inflight-fetch-helper.js @@ -0,0 +1,47 @@ +// Delay after fetch start: +// - 0.0 seconds: before BFCache +// - 2.0 seconds: when in BFCache +// - 3.5 seconds: after restored from BFCache +function runTest(urlToFetch, hasCSP, shouldSucceed, description) { + runBfcacheTest({ + funcBeforeNavigation: async (urlToFetch, hasCSP) => { + if (hasCSP) { + // Set CSP. + const meta = document.createElement('meta'); + meta.setAttribute('http-equiv', 'Content-Security-Policy'); + meta.setAttribute('content', "connect-src 'self'"); + document.head.appendChild(meta); + } + + // Initiate a `fetch()`. + window.fetchPromise = fetch(urlToFetch); + + // Wait for 0.5 seconds to receive response headers for the fetch() + // before BFCache, if any. + await new Promise(resolve => setTimeout(resolve, 500)); + }, + argsBeforeNavigation: [urlToFetch, hasCSP], + funcBeforeBackNavigation: () => { + // Wait for 2 seconds before back navigating to pageA. + return new Promise(resolve => setTimeout(resolve, 2000)); + }, + funcAfterAssertion: async (pageA, pageB, t) => { + // Wait for fetch() completion and check the result. + const result = pageA.execute_script( + () => window.fetchPromise.then(r => r.text())); + if (shouldSucceed) { + assert_equals( + await result, + 'Body', + 'Fetch should complete successfully after restored from BFCache'); + } else { + await promise_rejects_js(t, TypeError, result, + 'Fetch should fail after restored from BFCache'); + } + } + }, 'Eligibility (in-flight fetch): ' + description); +} + +const url = new URL('../resources/slow.py', location); +const sameOriginUrl = url.href; +const crossSiteUrl = originCrossSite + url.pathname; diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js new file mode 100644 index 00000000000..ef0da2da1ed --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js @@ -0,0 +1,50 @@ +// A collection of helper functions that make use of the `remoteContextHelper` +// to test BFCache support and behavior. + +// Call `prepareForBFCache()` before navigating away from the page. This simply +// sets a variable in window. +async function prepareForBFCache(remoteContextHelper) { + await remoteContextHelper.executeScript(() => { + window.beforeBFCache = true; + }); +} + +// Call `getBeforeCache()` after navigating back to the page. This returns the +// value in window. +async function getBeforeBFCache(remoteContextHelper) { + return await remoteContextHelper.executeScript(() => { + return window.beforeBFCache; + }); +} + +// If the value in window is set to true, this means that the page was reloaded, +// i.e., the page was restored from BFCache. +// Call `prepareForBFCache()` before navigating away to call this function. +async function assert_implements_bfcache(remoteContextHelper) { + var beforeBFCache = await getBeforeBFCache(remoteContextHelper); + assert_implements_optional(beforeBFCache == true, 'BFCache not supported.'); +} + +// If the value in window is undefined, this means that the page was reloaded, +// i.e., the page was not restored from BFCache. +// Call `prepareForBFCache()` before navigating away to call this function. +async function assert_not_bfcached(remoteContextHelper) { + var beforeBFCache = await getBeforeBFCache(remoteContextHelper); + assert_equals(beforeBFCache, undefined); +} + +// A helper function that combines the steps of setting window property, +// navigating away and back, and making assertion on whether BFCache is +// supported. +async function assertBFCache(remoteContextHelper, shouldRestoreFromBFCache) { + await prepareForBFCache(remoteContextHelper); + // Navigate away and back. + const newRemoteContextHelper = await remoteContextHelper.navigateToNew(); + await newRemoteContextHelper.historyBack(); + + if (shouldRestoreFromBFCache) { + await assert_implements_bfcache(remoteContextHelper); + } else { + await assert_not_bfcached(remoteContextHelper); + } +} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/service-worker.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/service-worker.js new file mode 100644 index 00000000000..df9ce65acda --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/service-worker.js @@ -0,0 +1,44 @@ +self.addEventListener('message', function(event) { + if (event.data.type == "claim") { + self.clients.claim() + .then(function(result) { + if (result !== undefined) { + event.data.port.postMessage( + 'FAIL: claim() should be resolved with undefined'); + return; + } + event.data.port.postMessage('PASS'); + }) + .catch(function(error) { + event.data.port.postMessage('FAIL: exception: ' + error.name); + }); + } else if (event.data.type == "storeClients") { + self.clients.matchAll() + .then(function(result) { + self.storedClients = result; + event.data.port.postMessage("PASS"); + }); + } else if (event.data.type == "postMessageToStoredClients") { + for (let client of self.storedClients) { + client.postMessage("dummyValue"); + } + event.data.port.postMessage("PASS"); + } + }); + +self.addEventListener('fetch', e => { + if (e.request.url.match(/\/is-controlled/)) { + e.respondWith(new Response('controlled')); + } + else if (e.request.url.match(/\/get-clients-matchall/)) { + const options = { includeUncontrolled: true, type: 'all' }; + e.respondWith( + self.clients.matchAll(options) + .then(clients => { + const client_urls = []; + clients.forEach(client => client_urls.push(client.url)); + return new Response(JSON.stringify(client_urls)); + }) + ); + } + }); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/slow.py b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/slow.py new file mode 100644 index 00000000000..01bb3309b10 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/slow.py @@ -0,0 +1,13 @@ +import time + +def main(request, response): + delay_before_header = float(request.GET.first(b"delayBeforeHeader", 0)) / 1000 + delay_before_body = float(request.GET.first(b"delayBeforeBody", 0)) / 1000 + + time.sleep(delay_before_header) + if b"cors" in request.GET: + response.headers.set(b"Access-Control-Allow-Origin", b"*") + response.write_status_headers() + + time.sleep(delay_before_body) + response.writer.write_content(b"Body") diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/worker-helper.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/worker-helper.js new file mode 100644 index 00000000000..d5f3a0c8148 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/worker-helper.js @@ -0,0 +1,28 @@ +// Worker-related helper file to be used from executor.html. + +// The class `WorkerHelper` is exposed to `globalThis` because this should be +// used via `eval()`. +globalThis.WorkerHelper = class { + static pingWorker(worker) { + return new Promise((resolve, reject) => { + const message = 'message ' + Math.random(); + const onmessage = e => { + if (e.data === message) { + resolve('PASS'); + } else { + reject('pingWorker: expected ' + message + ' but got ' + e.data); + } + }; + worker.onerror = reject; + if (worker instanceof Worker) { + worker.addEventListener('message', onmessage, {once: true}); + worker.postMessage(message); + } else if (worker instanceof SharedWorker) { + worker.port.onmessage = onmessage; + worker.port.postMessage(message); + } else { + reject('Unexpected worker type'); + } + }); + } +}; diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-client-postmessage.https.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-client-postmessage.https.html new file mode 100644 index 00000000000..acc682a073a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-client-postmessage.https.html @@ -0,0 +1,71 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-clients-claim.https.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-clients-claim.https.html new file mode 100644 index 00000000000..d9540c221bd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-clients-claim.https.html @@ -0,0 +1,71 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-clients-matchall.https.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-clients-matchall.https.html new file mode 100644 index 00000000000..069529dbe47 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-clients-matchall.https.html @@ -0,0 +1,76 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-controlled-after-restore.https.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-controlled-after-restore.https.html new file mode 100644 index 00000000000..a937eb85ac5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-controlled-after-restore.https.html @@ -0,0 +1,54 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-unregister.https.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-unregister.https.html new file mode 100644 index 00000000000..1c3f81153c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/service-worker-unregister.https.html @@ -0,0 +1,67 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/storage-events.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/storage-events.html new file mode 100644 index 00000000000..6957496c307 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/storage-events.html @@ -0,0 +1,101 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/timers.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/timers.html new file mode 100644 index 00000000000..aab650f36e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/timers.html @@ -0,0 +1,68 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/document-state.tentative.https.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/document-state.tentative.https.html new file mode 100644 index 00000000000..d0e629f6312 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/document-state.tentative.https.html @@ -0,0 +1,91 @@ + + +Test the properties of a session history entry's document state + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-hash-twice.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-hash-twice.html new file mode 100644 index 00000000000..75889ef5175 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-hash-twice.html @@ -0,0 +1,38 @@ + + +Popstate/hashchange/load event ordering + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-hash.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-hash.html new file mode 100644 index 00000000000..f74d716d914 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-hash.html @@ -0,0 +1,32 @@ + + +Popstate/hashchange/load event ordering + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-pushState.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-pushState.html new file mode 100644 index 00000000000..4f9f3dad473 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-pushState.html @@ -0,0 +1,31 @@ + + +Popstate/hashchange/load event ordering + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-replaceState.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-replaceState.html new file mode 100644 index 00000000000..28148ff7b2d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/after-load-replaceState.html @@ -0,0 +1,30 @@ + + +Popstate/hashchange/load event ordering + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-hash-twice.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-hash-twice.html new file mode 100644 index 00000000000..7c8df118437 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-hash-twice.html @@ -0,0 +1,29 @@ + + +Popstate/hashchange/load event ordering + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-hash.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-hash.html new file mode 100644 index 00000000000..97c4636fad7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-hash.html @@ -0,0 +1,27 @@ + + +Popstate/hashchange/load event ordering + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-pushState.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-pushState.html new file mode 100644 index 00000000000..a08afa474f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-pushState.html @@ -0,0 +1,28 @@ + + +Popstate/hashchange/load event ordering + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-replaceState.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-replaceState.html new file mode 100644 index 00000000000..10d30038fb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/before-load-replaceState.html @@ -0,0 +1,26 @@ + + +Popstate/hashchange/load event ordering + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/pushState-inside-popstate.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/pushState-inside-popstate.html new file mode 100644 index 00000000000..35ada116edd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/pushState-inside-popstate.html @@ -0,0 +1,16 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/same-document-traverse-immediate.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/same-document-traverse-immediate.html new file mode 100644 index 00000000000..51ea20b289d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/same-document-traverse-immediate.html @@ -0,0 +1,38 @@ + + +Popstate/hashchange/load event ordering + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/same-document-traverse-wait.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/same-document-traverse-wait.html new file mode 100644 index 00000000000..39bc760ff73 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/event-order/same-document-traverse-wait.html @@ -0,0 +1,39 @@ + + +Popstate/hashchange/load event ordering + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html index 44ba631cf00..2b70375a143 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html @@ -10,10 +10,10 @@ async_test(t => { i.src = iframe_url; history.pushState("a", "", "#a"); - assert_equals(starting_history_length + 1, history.length); + assert_equals(history.length, starting_history_length + 1, "First history length"); i.onload = t.step_func(() => { - assert_equals(starting_history_length + 1, history.length); + assert_equals(history.length, starting_history_length + 1, "Second history length"); assert_equals(i.contentWindow.location.href, iframe_url); assert_equals(location.hash, "#a"); history.back(); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/srcdoc/consecutive-srcdoc.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/srcdoc/consecutive-srcdoc.html new file mode 100644 index 00000000000..9aab36b9862 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/srcdoc/consecutive-srcdoc.html @@ -0,0 +1,85 @@ + + +changing srcdoc to a different srcdoc + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/srcdoc/srcdoc-history-entries.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/srcdoc/srcdoc-history-entries.html new file mode 100644 index 00000000000..09f4094c5f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/srcdoc/srcdoc-history-entries.html @@ -0,0 +1,95 @@ + + +srcdoc history entries + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001-1.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001-1.html deleted file mode 100644 index df8d884e8d5..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001-1.html +++ /dev/null @@ -1,7 +0,0 @@ - -001-1 - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001-2.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001-2.html deleted file mode 100644 index 1cffc59b26c..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001-2.html +++ /dev/null @@ -1,5 +0,0 @@ - -001-2 - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001-3.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001-3.html deleted file mode 100644 index 5f1310e0744..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001-3.html +++ /dev/null @@ -1,5 +0,0 @@ - -001-3.html - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001.html deleted file mode 100644 index 7d99f6beb53..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/001.html +++ /dev/null @@ -1,20 +0,0 @@ - -Cross-origin navigation started from unload handler - - -
    - - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/002-1.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/002-1.html deleted file mode 100644 index 716e182ad53..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/002-1.html +++ /dev/null @@ -1,5 +0,0 @@ - -002-1 - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/002-2.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/002-2.html deleted file mode 100644 index a29a6bbcdb7..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/002-2.html +++ /dev/null @@ -1,5 +0,0 @@ - -002-2 - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/002.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/002.html deleted file mode 100644 index 0efc7016fc1..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/002.html +++ /dev/null @@ -1,23 +0,0 @@ - -Multiple simultaneous navigations - - -
    - - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.html deleted file mode 100644 index f31f6f47881..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.window.js new file mode 100644 index 00000000000..659f7321c0e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.window.js @@ -0,0 +1,45 @@ +// META: title=Navigation to about:srcdoc, not via srcdoc="", must be blocked +// META: script=../resources/helpers.js + +promise_test(async t => { + const iframe = await addSrcdocIframe(); + + iframe.contentWindow.location = "/common/blank.html"; + await waitForIframeLoad(iframe); + + iframe.contentWindow.location = "about:srcdoc"; + + // Fetching "about:srcdoc" should result in a network error, and navigating + // to a network error should produce an opaque-origin page. In particular, + // since the error page should end up being cross-origin to the parent + // frame, `contentDocument` should return `null`. + // + // If instead this results in a message because we re-loaded a srcdoc document + // from the contents of the srcdoc="" attribute, immediately fail. + await Promise.race([ + t.step_wait(() => iframe.contentDocument === null), + failOnMessage(iframe.contentWindow) + ]); +}, "Navigations to about:srcdoc via window.location must be blocked"); + +promise_test(async t => { + const iframe = await addSrcdocIframe(); + iframe.contentWindow.name = "test_frame"; + + iframe.contentWindow.location = "/common/blank.html"; + await waitForIframeLoad(iframe); + + window.open("about:srcdoc", "test_frame"); + + // Fetching "about:srcdoc" should result in a network error, and navigating + // to a network error should produce an opaque-origin page. In particular, + // since the error page should end up being cross-origin to the parent + // frame, `contentDocument` should return `null`. + // + // If instead this results in a message because we re-loaded a srcdoc document + // from the contents of the srcdoc="" attribute, immediately fail. + await Promise.race([ + t.step_wait(() => iframe.contentDocument === null), + failOnMessage(iframe.contentWindow) + ]); +}, "Navigations to about:srcdoc via window.open() must be blocked"); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/cross-origin-top-navigation-with-user-activation-in-parent.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/cross-origin-top-navigation-with-user-activation-in-parent.window.js index 8dbe667348a..42b4b208ee0 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/cross-origin-top-navigation-with-user-activation-in-parent.window.js +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/cross-origin-top-navigation-with-user-activation-in-parent.window.js @@ -1,6 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js - async_test(t => { addEventListener('message', t.step_func_done(e => { assert_equals(e.data, 'Denied'); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/cross-origin-top-navigation-without-user-activation.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/cross-origin-top-navigation-without-user-activation.window.js index bd7140f4597..57f0bce247e 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/cross-origin-top-navigation-without-user-activation.window.js +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/cross-origin-top-navigation-without-user-activation.window.js @@ -1,6 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js - async_test(t => { addEventListener('message', t.step_func_done(e => { assert_equals(e.data, 'Denied'); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html new file mode 100644 index 00000000000..b9108f99377 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html @@ -0,0 +1,39 @@ + +load event for empty iframe in relation to the event loop + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-nosrc.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-nosrc.html new file mode 100644 index 00000000000..b89d3bb54b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-nosrc.html @@ -0,0 +1,178 @@ + + +Navigations on iframe without src attribute + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-204-fragment.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-204-fragment.html new file mode 100644 index 00000000000..2a472f6a6d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-204-fragment.html @@ -0,0 +1,144 @@ + + +Fragment navigations on iframe with src set to URL that doesn't load a document (HTTP 204) + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-204-pushState-replaceState.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-204-pushState-replaceState.html new file mode 100644 index 00000000000..8a97fd36a4f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-204-pushState-replaceState.html @@ -0,0 +1,66 @@ + + +pushState/replaceState on iframe with src set to URL that doesn't load a document (HTTP 204) + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-204.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-204.html new file mode 100644 index 00000000000..f7bade68fbd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-204.html @@ -0,0 +1,178 @@ + + +Navigations on iframe with src set to URL that doesn't load a new document + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html new file mode 100644 index 00000000000..a75257d91cf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html @@ -0,0 +1,124 @@ + + +Navigations immediately after appending iframe with src='about:blank' + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-wait-for-load.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-wait-for-load.html new file mode 100644 index 00000000000..b7066ce521d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-wait-for-load.html @@ -0,0 +1,134 @@ + + +Navigations after iframe with src='about:blank' finished loading + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/resources/code-injector.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/resources/code-injector.html new file mode 100644 index 00000000000..631b95f9edb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/resources/code-injector.html @@ -0,0 +1,8 @@ + + +Subframe + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/resources/helpers.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/resources/helpers.js index aa78fdc37b4..8d9473a9497 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/resources/helpers.js +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/resources/helpers.js @@ -9,3 +9,113 @@ function assertNoLoadAndPageshowEvent(t, target) { setTimeout(resolve, 50); }); } + +const url204 = "/common/blank.html?pipe=status(204)"; +const postMessageToOpenerOnLoad = ` + window.onload = () => { + window.opener.postMessage("loaded", "*") + } + `; + +// -- Start of helpers for iframe initial empty document tests. + +// Creates an iframe with an unset src and appends it to the document. +window.insertIframe = (t) => { + const iframe = document.createElement("iframe"); + t.add_cleanup(() => iframe.remove()); + document.body.append(iframe); + return iframe; +}; + +// Creates an iframe with src set to a URL that doesn't commit a new document +// (results in a HTTP 204 response) and appends it to the document. +window.insertIframeWith204Src = (t) => { + const iframe = document.createElement("iframe"); + iframe.src = url204; + t.add_cleanup(() => iframe.remove()); + document.body.append(iframe); + return iframe; +}; + +// Creates an iframe with src="about:blank" and appends it to the document. +window.insertIframeWithAboutBlankSrc = (t) => { + const iframe = document.createElement("iframe"); + t.add_cleanup(() => iframe.remove()); + iframe.src = "about:blank"; + document.body.append(iframe); + return iframe; +}; + +// Creates an iframe with src="about:blank", appends it to the document, and +// waits for the non-initial about:blank document finished loading. +window.insertIframeWithAboutBlankSrcWaitForLoad = async (t) => { + const iframe = insertIframeWithAboutBlankSrc(t); + const aboutBlankLoad = new Promise(resolve => { + // In some browsers, the non-initial about:blank navigation commits + // asynchronously, while in other browsers, it would commit synchronously. + // This means we can't wait for the "load" event as it might have already + // ran. Instead, just wait for 100ms before resolving, as the non-initial + // about:blank navigation will most likely take less than 100 ms to commit. + t.step_timeout(resolve, 100); + }); + await aboutBlankLoad; + return iframe; +}; + +// Waits for the "load" event for |urlRelativeToThisDocument| to run on +// |iframe|. +window.waitForLoad = (t, iframe, urlRelativeToThisDocument) => { + return new Promise(resolve => { + iframe.addEventListener("load", t.step_func(() => { + assert_equals(iframe.contentWindow.location.href, (new URL(urlRelativeToThisDocument, location.href)).href); + + // Wait a bit longer to ensure all history stuff has settled, e.g. the document is "completely loaded" + // (which happens from a queued task). + setTimeout(resolve, 0); + }), { once: true }); + }); +}; + +// -- End of helpers for iframe initial empty document tests. + +// -- Start of helpers for opened windows' initial empty document tests. + +// window.open() to a URL that doesn't load a new document (results in a HTTP +// 204 response). This should create a new window that stays on the initial +// empty document. +window.windowOpen204 = (t) => { + const openedWindow = window.open(url204); + t.add_cleanup(() => openedWindow.close()); + return openedWindow; +}; + +// window.open() (no URL set). This should create a new window that stays on +// the initial empty document as it won't trigger a non-initial about:blank +// navigation. +window.windowOpenNoURL = (t) => { + const openedWindow = window.open(); + t.add_cleanup(() => openedWindow.close()); + return openedWindow; +}; + +// window.open("about:blank"). This should create a new window that stays on +// the initial empty document as it won't trigger a non-initial about:blank +// navigation. +window.windowOpenAboutBlank = (t) => { + const openedWindow = window.open("about:blank"); + t.add_cleanup(() => openedWindow.close()); + return openedWindow; +}; + +// Waits for a postMessage with data set to |message| is received on the current +// window. +window.waitForMessage = (t, message) => { + return new Promise(resolve => { + window.addEventListener("message", t.step_func((event) => { + if (event.data == message) + resolve(); + })); + }); +}; + +// -- End of helpers for opened windows' initial empty document tests. diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-204-fragment.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-204-fragment.html new file mode 100644 index 00000000000..bb47cd38202 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-204-fragment.html @@ -0,0 +1,63 @@ + + +Fragment navigation on initial empty document created through window.open(url-with-204-response) + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-204-pushState-replaceState.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-204-pushState-replaceState.html new file mode 100644 index 00000000000..b5382b189f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-204-pushState-replaceState.html @@ -0,0 +1,61 @@ + + +Fragment navigation on initial empty document created through window.open(url-with-204-response) + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-204.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-204.html new file mode 100644 index 00000000000..6461b3c8fc4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-204.html @@ -0,0 +1,81 @@ + + +Navigations on window.open() with URL that doesn't load a new document + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-aboutblank.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-aboutblank.html new file mode 100644 index 00000000000..f3033d6a219 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-aboutblank.html @@ -0,0 +1,81 @@ + + +Navigations on window.open(about:blank) after waiting for it to load + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-history-length.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-history-length.html new file mode 100644 index 00000000000..ab89bc40980 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-history-length.html @@ -0,0 +1,31 @@ + + +history.length value on window.open()-ed window + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-nourl.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-nourl.html new file mode 100644 index 00000000000..801f77ad485 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/window-open-nourl.html @@ -0,0 +1,78 @@ + + +Navigations on window.open() to URL that doesn't load a new document + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml new file mode 100644 index 00000000000..b23bef59175 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml @@ -0,0 +1,37 @@ + + + + + + + + javascript: URL navigation to a string must create a HTML document using the correct properties + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-no-beforeunload.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-no-beforeunload.window.js new file mode 100644 index 00000000000..47e8f11797d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-no-beforeunload.window.js @@ -0,0 +1,80 @@ +// META: script=../resources/helpers.js + +for (const stringCompletion of [false, true]) { + const testNameSuffix = stringCompletion ? ": string completion" : ": undefined completion"; + + testNoBeforeunload( + { testRunnerWindow: "top", stringCompletion }, + async (t, urlToSet) => { + const iframe = await addIframe(); + iframe.contentWindow.location.href = urlToSet; + + return iframe.contentWindow; + }, + `Navigating an iframe via location.href to a javascript: URL must not fire beforeunload${testNameSuffix}` + ); + + testNoBeforeunload( + { testRunnerWindow: "top", stringCompletion }, + async (t, urlToSet) => { + const iframe = await addIframe(); + iframe.src = urlToSet; + + return iframe.contentWindow; + }, + `Navigating an iframe via src="" to a javascript: URL after insertion must not fire beforeunload${testNameSuffix}` + ); + + testNoBeforeunload( + { testRunnerWindow: "opener", stringCompletion }, + async (t, urlToSet) => { + const w = await openWindow("/common/blank.html", t); + w.location.href = urlToSet; + + return w; + }, + `Navigating an opened window via location.href to a javascript: URL must not fire beforeunload${testNameSuffix}` + ); + + + testNoBeforeunload( + { testRunnerWindow: "opener", stringCompletion }, + async (t, urlToSet) => { + const w = await openWindow("../resources/has-iframe.html", t); + w.frames[0].onbeforeunload = t.unreached_func("beforeunload must not fire on the iframe"); + w.location.href = urlToSet; + + return w; + }, + `Navigating an opened window with an iframe via location.href to a javascript: URL must not fire beforeunload on the iframe${testNameSuffix}` + ); +} + +function testNoBeforeunload({ testRunnerWindow, stringCompletion }, setupAndNavigateFunc, description) { + promise_test(async t => { + t.add_cleanup(() => { + delete window.resolveTestPromise; + }); + + const ranPromise = new Promise(resolve => { + window.resolveTestPromise = resolve; + }); + + const urlToSet = makeURL({ testRunnerWindow, stringCompletion }); + const w = await setupAndNavigateFunc(t, urlToSet); + w.onbeforeunload = t.unreached_func("beforeunload must not fire"); + + await ranPromise; + if (stringCompletion) { + await waitForMessage(w); + } + }, description); +} + +function makeURL({ testRunnerWindow, stringCompletion }) { + const completion = stringCompletion ? + `"a string";` : + `undefined;`; + + return `javascript:window.${testRunnerWindow}.resolveTestPromise();${completion};`; +} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-task-queuing.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-task-queuing.html new file mode 100644 index 00000000000..1bb05bfb190 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-task-queuing.html @@ -0,0 +1,58 @@ + + +javascript: URL task queuing + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-location-assign.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-location-assign.html new file mode 100644 index 00000000000..cb2984d4093 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-location-assign.html @@ -0,0 +1,27 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-location-href.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-location-href.html new file mode 100644 index 00000000000..02ff214ed52 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-location-href.html @@ -0,0 +1,27 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-location.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-location.html new file mode 100644 index 00000000000..fae17dd2ac1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-location.html @@ -0,0 +1,27 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-window-open.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-window-open.html new file mode 100644 index 00000000000..0a391ef28ec --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-window-open.html @@ -0,0 +1,28 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/entry/entry.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/entry/entry.html new file mode 100644 index 00000000000..82fecfdd38e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/entry/entry.html @@ -0,0 +1,4 @@ + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/entry/target.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/entry/target.html new file mode 100644 index 00000000000..5ceaeaf07e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/entry/target.html @@ -0,0 +1,2 @@ + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/incumbent/empty.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/incumbent/empty.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/incumbent/target.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/incumbent/target.html new file mode 100644 index 00000000000..5ceaeaf07e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/incumbent/target.html @@ -0,0 +1,2 @@ + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/relevant/empty.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/relevant/empty.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/relevant/target.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/relevant/target.html new file mode 100644 index 00000000000..5ceaeaf07e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/relevant/target.html @@ -0,0 +1,2 @@ + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/resources/context-helper.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/resources/context-helper.js new file mode 100644 index 00000000000..dda338b4ccb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/resources/context-helper.js @@ -0,0 +1,34 @@ +// Usage: in the top-level Window, include: +// +// +// +// +// +// Then `scriptToRun` is evaluated, with: +// - The entry Realm is that of entry/entry.html +// - The incumbent Realm is that of incumbent/empty.html +// - The relevant Realm of `relevantWindow`, `relevantWindow.location` etc. is +// that of relevant/empty.html + +window.scriptToRun = ''; + +const entryUrl = new URL('entry/entry.html', location).href; +const incumbentUrl = new URL('incumbent/empty.html', location).href; +const relevantUrl = new URL('relevant/empty.html', location).href; + +function go() { + const entry = document.querySelector('#entry'); + const incumbent = entry.contentDocument.querySelector('#incumbent'); + const incumbentScript = incumbent.contentDocument.createElement('script'); + incumbentScript.textContent = ` + function go() { + const relevantWindow = + parent.document.querySelector('#relevant').contentWindow; + ${window.scriptToRun} + } + `; + incumbent.contentDocument.head.appendChild(incumbentScript); + incumbent.contentWindow.go(); +} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/resources/target.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/resources/target.js new file mode 100644 index 00000000000..e3a507b0d89 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/resources/target.js @@ -0,0 +1,11 @@ +window.onload = function() { + let testWindow; + if (opener) { + testWindow = opener.top; + } else { + testWindow = top; + } + testWindow.postMessage( + {location: location.href, referrer: document.referrer}, + "*"); +} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigate-cross-origin-iframe-to-same-url-with-fragment-fire-load-event.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigate-cross-origin-iframe-to-same-url-with-fragment-fire-load-event.html new file mode 100644 index 00000000000..f74bbfd7d3f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigate-cross-origin-iframe-to-same-url-with-fragment-fire-load-event.html @@ -0,0 +1,31 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html new file mode 100644 index 00000000000..f4e4e36f372 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html @@ -0,0 +1,58 @@ + + +location.href unparseable URL throws a SyntaxError DOMException + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js new file mode 100644 index 00000000000..f23e2c440b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js @@ -0,0 +1,15 @@ +// META: title=Cross-origin navigation started from unload handler must be ignored +// META: script=../resources/helpers.js + +promise_test(async () => { + const iframe = await addIframe(); + + iframe.contentWindow.addEventListener("unload", () => { + iframe.contentWindow.location.href = "//{{hosts[][www]}}/common/blank.html?fail"; + }); + + iframe.src = "/common/blank.html?pass"; + + await waitForIframeLoad(iframe); + assert_equals(iframe.contentWindow.location.search, "?pass"); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-data-url.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-data-url.window.js new file mode 100644 index 00000000000..cf39b01107f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-data-url.window.js @@ -0,0 +1,15 @@ +// META: title=data: URL navigation started from unload handler must be ignored +// META: script=../resources/helpers.js + +promise_test(async () => { + const iframe = await addIframe(); + + iframe.contentWindow.addEventListener("unload", () => { + iframe.contentWindow.location.href = + `data:text/html,unload`; + }); + + iframe.src = + `data:text/html,load`; + assert_equals(await waitForMessage(iframe.contentWindow), "pass"); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-javascript-url.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-javascript-url.window.js new file mode 100644 index 00000000000..abbcb888a0a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-javascript-url.window.js @@ -0,0 +1,15 @@ +// META: title=javascript: URL navigation started from unload handler must be ignored +// META: script=../resources/helpers.js + +promise_test(async () => { + const iframe = await addIframe(); + + iframe.contentWindow.addEventListener("unload", () => { + iframe.contentWindow.location.href = + `javascript:"unload"`; + }); + + iframe.src = + `javascript:"load"`; + assert_equals(await waitForMessage(iframe.contentWindow), "pass"); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js new file mode 100644 index 00000000000..826af4b75b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js @@ -0,0 +1,15 @@ +// META: title=Same-origin navigation started from unload handler must be ignored +// META: script=../resources/helpers.js + +promise_test(async () => { + const iframe = await addIframe(); + + iframe.contentWindow.addEventListener("unload", () => { + iframe.contentWindow.location.href = "/common/blank.html?fail"; + }); + + iframe.src = "/common/blank.html?pass"; + + await waitForIframeLoad(iframe); + assert_equals(iframe.contentWindow.location.search, "?pass"); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url-1.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url-1.html deleted file mode 100644 index 8c412e657e4..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url-1.html +++ /dev/null @@ -1,7 +0,0 @@ - -001-1 - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url.html deleted file mode 100644 index 7a8be3e917d..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url.html +++ /dev/null @@ -1,20 +0,0 @@ - -Same-origin navigation started from unload handler - - -
    - - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-1.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-1.html deleted file mode 100644 index 4b52fe3cfba..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-1.html +++ /dev/null @@ -1,7 +0,0 @@ - -001-1 - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html deleted file mode 100644 index 536d580cbd9..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html +++ /dev/null @@ -1,20 +0,0 @@ - -Same-origin navigation started from unload handler - - -
    - - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/plugin-document.historical.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/plugin-document.historical.html new file mode 100644 index 00000000000..547917b795a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/plugin-document.historical.html @@ -0,0 +1,22 @@ + + +Same-origin PDFs must not create accessible Document objects + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/redirect-to-unparseable-url.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/redirect-to-unparseable-url.html new file mode 100644 index 00000000000..b025f344788 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/redirect-to-unparseable-url.html @@ -0,0 +1,71 @@ + + +Session history interaction with redirects to unparseable URLs + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/no-cache-single-redirect.py b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/no-cache-single-redirect.py new file mode 100644 index 00000000000..9d3aff817d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/no-cache-single-redirect.py @@ -0,0 +1,21 @@ +# This handler receives requests identified by UUIDs that have mandatory +# `location` query parameters. Every other request for the same URL will result +# in a redirect to the URL described by `location`. When we don't redirect, we +# simply return the HTML document "No redirect". +def main(request, response): + response.headers.set(b"Cache-Control", b"no-store") + + uuid = request.GET.first(b"uuid") + value = request.server.stash.take(uuid) + + if value is None: + response.status = 302 + location = request.GET.first(b"location") + response.headers.set(b"Location", location) + # Ensure that the next time this uuid is request, we don't redirect. + request.server.stash.put(uuid, "sentinel value") + else: + # If we're in this branch, then `value` is not none, but the stash now + # has `None` associated with `uuid`, which means on the next request for + # this `uuid` we'll end up in the above branch instead. + return ([(b"Content-Type", b"text/html")], b"No redirect") diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/portable-document-format-sample-valid.pdf b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/portable-document-format-sample-valid.pdf new file mode 100644 index 00000000000..d008b1f23a7 Binary files /dev/null and b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/portable-document-format-sample-valid.pdf differ diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/portable-document-format-sample-valid.pdf.headers b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/portable-document-format-sample-valid.pdf.headers new file mode 100644 index 00000000000..5a8e57e4823 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/portable-document-format-sample-valid.pdf.headers @@ -0,0 +1 @@ +Content-Type: application/pdf diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/xhtml-and-non-utf-8.xhtml b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/xhtml-and-non-utf-8.xhtml new file mode 100644 index 00000000000..3aacf33f1ce --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/resources/xhtml-and-non-utf-8.xhtml @@ -0,0 +1,9 @@ + + + + + A test document used when you need something very non-default + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/README.md b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/README.md new file mode 100644 index 00000000000..cc313a155a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/README.md @@ -0,0 +1,11 @@ +# Overlapping navigation and traversal tests + +These tests follow the behavior outlined in the +[session history rewrite](https://github.com/whatwg/html/pull/6315). + + discusses these results. + +We are not yet 100% sure on this behavior, especially for overlapping +traversal cases where the spec is complex and some of the tests don't +seem to match any browser. Please feel free to discuss on the spec +issue. diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/anchor-fragment-history-back-on-click.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/anchor-fragment-history-back-on-click.html new file mode 100644 index 00000000000..a081bec514e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/anchor-fragment-history-back-on-click.html @@ -0,0 +1,40 @@ + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-nav.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-cross-document-nav.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-nav.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-cross-document-nav.html diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-traversal.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-cross-document-traversal.html similarity index 89% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-traversal.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-cross-document-traversal.html index 1173f3a39b9..341f66a9965 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-traversal.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-cross-document-traversal.html @@ -5,8 +5,8 @@ diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-nav.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-same-document-nav.html similarity index 90% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-nav.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-same-document-nav.html index 1b2aeaecfcc..99525cb3edc 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-nav.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-same-document-nav.html @@ -6,8 +6,8 @@ diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-traversal.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-same-document-traversal.html similarity index 84% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-traversal.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-same-document-traversal.html index fac6624091a..2ff91be7e14 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-traversal.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-same-document-traversal.html @@ -5,8 +5,9 @@ diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-stop.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-stop.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-stop.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-stop.html diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-nav.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-cross-document-nav.html similarity index 92% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-nav.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-cross-document-nav.html index 05d4705df16..5141259d085 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-nav.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-cross-document-nav.html @@ -6,9 +6,8 @@ diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-traversal.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-cross-document-traversal.html similarity index 80% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-traversal.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-cross-document-traversal.html index ec8b37427f2..97907df23db 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-traversal.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-cross-document-traversal.html @@ -5,25 +5,22 @@ @@ -57,14 +54,11 @@ promise_test(async t => { iframe.contentWindow.history.forward(); assert_equals(iframe.contentWindow.location.search, "?2", "must not go forward synchronously"); - await waitForLoad(iframe); - assert_equals(iframe.contentWindow.location.search, "?1", "first load event must be going back"); - iframe.onload = t.unreached_func("second load event"); await waitForPotentialNetworkLoads(t); - assert_equals(iframe.contentWindow.location.search, "?1", "must stay on ?1"); -}, "cross-document traversals in opposite directions: the second is ignored"); + assert_equals(iframe.contentWindow.location.search, "?2", "must stay on ?2"); +}, "cross-document traversals in opposite directions: the result is going nowhere"); promise_test(async t => { const iframe = await createIframe(t); @@ -86,14 +80,11 @@ promise_test(async t => { iframe.contentWindow.history.forward(); assert_equals(iframe.contentWindow.location.search, "?2", "must not go forward synchronously"); - await waitForLoad(iframe); - assert_equals(iframe.contentWindow.location.search, "?1", "first load event must be going back"); - iframe.onload = t.unreached_func("second load event"); await waitForPotentialNetworkLoads(t); - assert_equals(iframe.contentWindow.location.search, "?1", "must stay on ?1"); -}, "cross-document traversals in opposite directions, second traversal invalid at queuing time: the second is ignored"); + assert_equals(iframe.contentWindow.location.search, "?2", "must stay on ?2"); +}, "cross-document traversals in opposite directions, second traversal invalid at queuing time but valid at the time it is run: the result is going nowhere"); promise_test(async t => { const iframe = await createIframe(t); @@ -119,13 +110,13 @@ promise_test(async t => { assert_equals(iframe.contentWindow.location.search, "?3", "must not go back synchronously (2)"); await waitForLoad(iframe); - assert_equals(iframe.contentWindow.location.search, "?2", "first load event must be going back"); + assert_equals(iframe.contentWindow.location.search, "?1", "first load event must be going back"); iframe.onload = t.unreached_func("second load event"); await waitForPotentialNetworkLoads(t); - assert_equals(iframe.contentWindow.location.search, "?2", "must stay on ?2"); -}, "cross-document traversals in the same (back) direction: the second is ignored"); + assert_equals(iframe.contentWindow.location.search, "?1", "must stay on ?1"); +}, "cross-document traversals in the same (back) direction: the result is going -2 with only one load event"); promise_test(async t => { const iframe = await createIframe(t); @@ -159,11 +150,11 @@ promise_test(async t => { assert_equals(iframe.contentWindow.location.search, "?1", "must not go forward synchronously (2)"); await waitForLoad(iframe); - assert_equals(iframe.contentWindow.location.search, "?2", "first load event must be going forward"); + assert_equals(iframe.contentWindow.location.search, "?3", "first load event must be going forward"); iframe.onload = t.unreached_func("second load event"); await waitForPotentialNetworkLoads(t); - assert_equals(iframe.contentWindow.location.search, "?2", "must stay on ?2"); -}, "cross-document traversals in the same (forward) direction: the second is ignored"); + assert_equals(iframe.contentWindow.location.search, "?3", "must stay on ?3"); +}, "cross-document traversals in the same (forward) direction: the result is going +2 with only one load event"); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-same-document-nav.html similarity index 75% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-same-document-nav.html index 5d3850ff4e2..df6258f9b3d 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-same-document-nav.html @@ -5,11 +5,8 @@ @@ -38,9 +35,9 @@ promise_test(async t => { assert_equals(iframe.contentWindow.location.search, "?2"); assert_equals(iframe.contentWindow.location.hash, "#3"); - // Eventually ends up on ?2 - await t.step_wait(() => iframe.contentWindow.location.search === "?2" && iframe.contentWindow.location.hash === ""); -}, "same-document traversals are not canceled by fragment navigations"); + // Eventually ends up on ?1 + await t.step_wait(() => iframe.contentWindow.location.search === "?1" && iframe.contentWindow.location.hash === ""); +}, "same-document traversals + fragment navigations"); promise_test(async t => { const iframe = await createIframe(t); @@ -63,7 +60,7 @@ promise_test(async t => { iframe.contentWindow.history.pushState(null, "", "?3"); assert_equals(iframe.contentWindow.location.search, "?3"); - // Eventually ends up on ?2 - await t.step_wait(() => iframe.contentWindow.location.search === "?2"); -}, "same-document traversals are not canceled by pushState()"); + // Eventually ends up on ?1 + await t.step_wait(() => iframe.contentWindow.location.search === "?1"); +}, "same-document traversals + pushState()"); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-traversal.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-same-document-traversal.html similarity index 80% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-traversal.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-same-document-traversal.html index 0a9154ca8f8..3c37c46b64c 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-traversal.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-same-document-traversal.html @@ -5,22 +5,8 @@ @@ -53,15 +39,15 @@ promise_test(async t => { await waitForLoad(iframe); assert_equals(iframe.contentWindow.location.search, "?1", "first load event must be going back (search)"); - assert_equals(iframe.contentWindow.location.hash, "#2", "first load event must be going back (hash)"); + assert_equals(iframe.contentWindow.location.hash, "", "first load event must be going back (hash)"); iframe.contentWindow.onhashchange = t.unreached_func("hashchange event"); iframe.onload = t.unreached_func("second load event"); await waitForPotentialNetworkLoads(t); - assert_equals(iframe.contentWindow.location.search, "?1", "must stay on ?1#2 (search)"); - assert_equals(iframe.contentWindow.location.hash, "#2", "must stay on ?1#2 (hash)"); -}, "traversals in the same (back) direction: the second is ignored"); + assert_equals(iframe.contentWindow.location.search, "?1", "must stay on ?1 (search)"); + assert_equals(iframe.contentWindow.location.hash, "", "must stay on ?1 (hash)"); +}, "traversals in the same (back) direction: coalesced"); promise_test(async t => { const iframe = await createIframe(t); @@ -96,13 +82,13 @@ promise_test(async t => { await waitForLoad(iframe); assert_equals(iframe.contentWindow.location.search, "?2", "first load event must be going forward (search)"); - assert_equals(iframe.contentWindow.location.hash, "", "first load event must be going forward (hash)"); + assert_equals(iframe.contentWindow.location.hash, "#3", "first load event must be going forward (hash)"); iframe.contentWindow.onhashchange = t.unreached_func("hashchange event"); iframe.onload = t.unreached_func("second load event"); await waitForPotentialNetworkLoads(t); assert_equals(iframe.contentWindow.location.search, "?2", "must stay on ?2"); - assert_equals(iframe.contentWindow.location.hash, "", "must stay on ?2"); -}, "traversals in the same (forward) direction: the second is ignored"); + assert_equals(iframe.contentWindow.location.hash, "#3", "must stay on ?2"); +}, "traversals in the same (forward) direction: coalesced"); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-stop.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-stop.html similarity index 81% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-stop.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-stop.html index 49d97e72a65..6202eb92262 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-stop.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-stop.html @@ -5,9 +5,11 @@ diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/forward-to-pruned-entry.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/forward-to-pruned-entry.html new file mode 100644 index 00000000000..8e1c349e216 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/forward-to-pruned-entry.html @@ -0,0 +1,24 @@ + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/nav-cancelation-1.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/nav-cancelation-1.html new file mode 100644 index 00000000000..b52fa049771 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/nav-cancelation-1.html @@ -0,0 +1,62 @@ + + +Parent main frame cancels a same-origin child whose navigation is pending + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/nav-cancelation-2.sub.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/nav-cancelation-2.sub.html new file mode 100644 index 00000000000..c081513b7c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/nav-cancelation-2.sub.html @@ -0,0 +1,178 @@ + + +Grandparent main frame cancels a navigation in a cross-origin grandchild + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/resources/helpers.mjs b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/resources/helpers.mjs new file mode 100644 index 00000000000..79384979209 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/resources/helpers.mjs @@ -0,0 +1,52 @@ +export function createIframe(t) { + return new Promise((resolve, reject) => { + const iframe = document.createElement("iframe"); + iframe.onload = () => resolve(iframe); + iframe.onerror = () => reject(new Error("Could not load iframe")); + iframe.src = "/common/blank.html"; + + t.add_cleanup(() => iframe.remove()); + document.body.append(iframe); + }); +} + +export function delay(t, ms) { + return new Promise(resolve => t.step_timeout(resolve, ms)); +} + +export function waitForLoad(obj) { + return new Promise(resolve => { + obj.addEventListener("load", resolve, { once: true }); + }); +} + +export function waitForHashchange(obj) { + return new Promise(resolve => { + obj.addEventListener("hashchange", resolve, { once: true }); + }); +} + +export function waitForPopstate(obj) { + return new Promise(resolve => { + obj.addEventListener("popstate", resolve, { once: true }); + }); +} + +// This is used when we want to end the test by asserting some load doesn't +// happen, but we're not sure how long to wait. We could just wait a long-ish +// time (e.g. a second), but that makes the tests slow. Instead, assume that +// network loads take roughly the same time. Then, you can use this function to +// wait a small multiple of the duration of a separate iframe load; this should +// be long enough to catch any problems. +export async function waitForPotentialNetworkLoads(t) { + const before = performance.now(); + + // Sometimes we're doing something, like a traversal, which cancels our first + // attempt at iframe loading. In that case we bail out after 100 ms and try + // again. (Better ideas welcome...) + await Promise.race([createIframe(t), delay(t, 100)]); + await createIframe(t); + + const after = performance.now(); + await delay(t, after - before); +} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/resources/nav-cancelation-2-helper.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/resources/nav-cancelation-2-helper.html new file mode 100644 index 00000000000..a0b4acda2ea --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/resources/nav-cancelation-2-helper.html @@ -0,0 +1,18 @@ + + +Page with child frame that navigates slowly + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/slow.py b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/resources/slow.py similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/slow.py rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/resources/slow.py diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-cross-document-nav.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-nav-cross-document-nav.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-cross-document-nav.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-nav-cross-document-nav.html diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-cross-document-traversal.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-nav-cross-document-traversal.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-cross-document-traversal.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-nav-cross-document-traversal.html diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-same-document-nav.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-nav-same-document-nav.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-same-document-nav.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-nav-same-document-nav.html diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-same-document-traversal.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-nav-same-document-traversal.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-same-document-traversal.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-nav-same-document-traversal.html diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-stop.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-nav-stop.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-stop.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-nav-stop.html diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-cross-document-nav.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-cross-document-nav.html new file mode 100644 index 00000000000..37960c3c540 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-cross-document-nav.html @@ -0,0 +1,42 @@ + + +Cross-document navigations during same-document traversals + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-cross-document-traversal.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-cross-document-traversal.html similarity index 86% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-cross-document-traversal.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-cross-document-traversal.html index 5dfd3e12fb6..a48f4d484ff 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-cross-document-traversal.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-cross-document-traversal.html @@ -5,19 +5,9 @@ @@ -94,5 +84,5 @@ promise_test(async t => { await waitForLoad(iframe); assert_equals(iframe.contentWindow.location.search, "?3", "first load event must be going forward (search)"); assert_equals(iframe.contentWindow.location.hash, "#2", "first load event must be going forward (hash)"); -}, "traversals in the same (forward) direction: the second is queued up"); +}, "traversals in the same (forward) direction: queued up"); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-same-document-nav.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-same-document-nav.html new file mode 100644 index 00000000000..5094651ab5b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-same-document-nav.html @@ -0,0 +1,57 @@ + + +Same-document navigations during same-document traversals + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-traversal-hashchange.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-same-document-traversal-hashchange.html similarity index 88% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-traversal-hashchange.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-same-document-traversal-hashchange.html index 43aefa071d8..df5ea5caab0 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-traversal-hashchange.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-same-document-traversal-hashchange.html @@ -5,27 +5,11 @@ diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-traversal-pushstate.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-same-document-traversal-pushstate.html similarity index 88% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-traversal-pushstate.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-same-document-traversal-pushstate.html index 026173387a0..47c7d6e3dce 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-traversal-pushstate.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-same-document-traversal-pushstate.html @@ -5,27 +5,11 @@ diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-stop.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-stop.html similarity index 76% rename from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-stop.html rename to tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-stop.html index ffa2f1413b3..2f0570380a8 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-stop.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-stop.html @@ -5,9 +5,11 @@ diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/README.md b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/README.md deleted file mode 100644 index 02d2e94a0df..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Overlapping navigation and traversal tests - -While developing [app history](https://wicg.github.io/app-history/), @domenic -noticed that cancelation of navigations and history traversals is not very -well-defined in the spec. - -On the spec side, this will probably be fixed as part of, or after, the -[session history rewrite](https://github.com/whatwg/html/pull/6315). - -In the meantime, this directory contains tests which try to match most browsers, -or picks one of the potential behaviors. - - discusses these results. diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/forward-to-pruned-entry.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/forward-to-pruned-entry.html deleted file mode 100644 index f5f9a2c804f..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/forward-to-pruned-entry.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/helpers.mjs b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/helpers.mjs deleted file mode 100644 index d2ecb9d9bc2..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/helpers.mjs +++ /dev/null @@ -1,45 +0,0 @@ -export function createIframe(t) { - return new Promise((resolve, reject) => { - const iframe = document.createElement("iframe"); - iframe.onload = () => resolve(iframe); - iframe.onerror = () => reject(new Error("Could not load iframe")); - iframe.src = "/common/blank.html"; - - t.add_cleanup(() => iframe.remove()); - document.body.append(iframe); - }); -} - -export function delay(t, ms) { - return new Promise(resolve => t.step_timeout(resolve, ms)); -} - -export function waitForLoad(obj) { - return new Promise(resolve => { - obj.addEventListener("load", resolve, { once: true }); - }); -} - -export function waitForHashchange(obj) { - return new Promise(resolve => { - obj.addEventListener("hashchange", resolve, { once: true }); - }); -} - -export function waitForPopstate(obj) { - return new Promise(resolve => { - obj.addEventListener("popstate", resolve, { once: true }); - }); -} - -// This is used when we want to end the test by asserting some load doesn't -// happen, but we're not sure how long to wait. We could just wait a long-ish -// time (e.g. a second), but that makes the tests slow. Instead, assume that -// network loads take roughly the same time, so by waiting for 2x the duration -// of a separate iframe load, we would have caught any problems. -export async function waitForPotentialNetworkLoads(t) { - const before = performance.now(); - await createIframe(t); - const after = performance.now(); - await delay(t, after - before); -} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-cross-document-nav.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-cross-document-nav.html deleted file mode 100644 index 3978a2c5320..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-cross-document-nav.html +++ /dev/null @@ -1,44 +0,0 @@ - - -Cross-document navigations during same-document traversals - - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-nav.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-nav.html deleted file mode 100644 index 7142cbb0611..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-nav.html +++ /dev/null @@ -1,59 +0,0 @@ - - -Same-document navigations during same-document traversals - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/read-media/cross-origin-video.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/read-media/cross-origin-video.html new file mode 100644 index 00000000000..b99658facb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/read-media/cross-origin-video.html @@ -0,0 +1,32 @@ + +Test cross origin load of media document in parts + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/read-media/resources/iframe-document.sub.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/read-media/resources/iframe-document.sub.html new file mode 100644 index 00000000000..69523efa7ab --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/read-media/resources/iframe-document.sub.html @@ -0,0 +1,5 @@ + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addHTML.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addHTML.window.js new file mode 100644 index 00000000000..0c093cc4625 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addHTML.window.js @@ -0,0 +1,20 @@ +// META: title=RemoteContextWrapper addHtml +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +// This tests that arguments passed to the constructor are respected. +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + + const main = await rcHelper.addWindow(); + await assertSimplestScriptRuns(main); + + await main.addHTML('
    div-content
    '); + await assertFunctionRuns( + main, () => document.getElementById('div-id').textContent, 'div-content'); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addIframe.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addIframe.window.js new file mode 100644 index 00000000000..c1630e46800 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addIframe.window.js @@ -0,0 +1,40 @@ +// META: title=RemoteContextWrapper addIframe +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +// This tests that arguments passed to the constructor are respected. +promise_test(async t => { + // Precondition: Test was loaded from the HTTP_ORIGIN. + assert_equals( + location.origin, get_host_info()['HTTP_ORIGIN'], + 'test window was loaded on HTTP_ORIGIN'); + + const rcHelper = new RemoteContextHelper(); + + const main = await rcHelper.addWindow(); + + const headerName = 'x-wpt-test-header'; + const headerValue = 'test-escaping()'; + const iframe = await main.addIframe( + /*extraConfig=*/ { + origin: 'HTTP_REMOTE_ORIGIN', + scripts: ['/common/get-host-info.sub.js', './resources/test-script.js'], + headers: [[headerName, headerValue]], + }, + /*attributes=*/ {id: 'test-id'}, + ); + + await assertSimplestScriptRuns(iframe); + await assertFunctionRuns(iframe, () => testFunction(), 'testFunction exists'); + await assertOriginIsAsExpected(iframe, get_host_info()['HTTP_REMOTE_ORIGIN']); + await assertHeaderIsAsExpected(iframe, headerName, headerValue); + + assert_equals( + await main.executeScript(() => document.getElementById('test-id').id), + 'test-id', 'verify id'); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addScripts.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addScripts.window.js new file mode 100644 index 00000000000..01cf06c65d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addScripts.window.js @@ -0,0 +1,19 @@ +// META: title=RemoteContextWrapper addScripts +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +// This tests that arguments passed to the constructor are respected. +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + + const main = await rcHelper.addWindow(); + await assertSimplestScriptRuns(main); + + await main.addScripts(['./resources/test-script.js']); + await assertFunctionRuns(main, () => testFunction(), 'testFunction exists'); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-defaults.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-defaults.window.js new file mode 100644 index 00000000000..34fa9cd39a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-defaults.window.js @@ -0,0 +1,15 @@ +// META: title=RemoteContextHelper with defaults +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + const main = await rcHelper.addWindow(); + await assertSimplestScriptRuns(main); + await assertOriginIsAsExpected(main, location.origin); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-extra-config.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-extra-config.window.js new file mode 100644 index 00000000000..112d2d726ee --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-extra-config.window.js @@ -0,0 +1,36 @@ +// META: title=RemoteContextHelper addWindow with extra config +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +// This tests that arguments passed to the constructor are respected. +promise_test(async t => { + const header1Name = 'x-wpt-test-header1'; + const header1Value = 'test-escaping1()'; + const rcHelper = new RemoteContextHelper({ + origin: 'HTTP_REMOTE_ORIGIN', + scripts: ['/common/get-host-info.sub.js', './resources/test-script.js'], + headers: [[header1Name, header1Value]], + }); + + const header2Name = 'x-wpt-test-header2'; + const header2Value = 'test-escaping2()'; + const main = await rcHelper.addWindow( + { + origin: location.origin, + scripts: [new URL('./resources/test-script2.js', location).toString()], + headers: [[header2Name, header2Value]], + }, + ); + + await assertSimplestScriptRuns(main); + await assertFunctionRuns(main, () => testFunction(), 'testFunction exists'); + await assertFunctionRuns(main, () => testFunction2(), 'testFunction2 exists'); + await assertOriginIsAsExpected(main, location.origin); + await assertHeaderIsAsExpected(main, header1Name, header1Value); + await assertHeaderIsAsExpected(main, header2Name, header2Value); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-features.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-features.window.js new file mode 100644 index 00000000000..329c55e6262 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-features.window.js @@ -0,0 +1,23 @@ +// META: title=RemoteContextHelper addWindow features +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + { + const main = await rcHelper.addWindow(); + await assertSimplestScriptRuns(main); + await assertWindowHasOpenerEquals(main, true); + } + { + const main = await rcHelper.addWindow( + /*extraConfig=*/ null, /*options=*/ {features: 'noopener'}); + await assertSimplestScriptRuns(main); + await assertWindowHasOpenerEquals(main, false); + } +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-invalid-origin.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-invalid-origin.window.js new file mode 100644 index 00000000000..58aee312cc2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-invalid-origin.window.js @@ -0,0 +1,21 @@ +// META: title=RemoteContextHelper addWindow with extra config +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +// This tests that arguments passed to the constructor are respected. +promise_test(async t => { + const header1Name = 'x-wpt-test-header1'; + const header1Value = 'test-escaping1()'; + const rcHelper = new RemoteContextHelper({ + origin: 'INVALID', + }); + + promise_rejects_js( + t, RangeError, rcHelper.addWindow(), + 'Exception should be thrown for invalid origin.'); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-startOn.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-startOn.window.js new file mode 100644 index 00000000000..0f57a87638a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-startOn.window.js @@ -0,0 +1,19 @@ +// META: title=RemoteContextHelper addWindow target +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + const main = await rcHelper.addWindow({startOn: 'pageshow'}); + await assertSimplestScriptRuns(main); + await assert_equals( + await main.executeScript(() => { + return executorStartEvent.type; + }), + 'pageshow'); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-target.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-target.window.js new file mode 100644 index 00000000000..3f742048b41 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWindow-target.window.js @@ -0,0 +1,17 @@ +// META: title=RemoteContextHelper addWindow target +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + const name = 'a name'; + const main = await rcHelper.addWindow( + /*extraConfig=*/ null, /*options=*/ {target: name}); + await assertSimplestScriptRuns(main); + await assertWindowNameEquals(main, name); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWorker.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWorker.window.js new file mode 100644 index 00000000000..d4ba8b03127 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/addWorker.window.js @@ -0,0 +1,29 @@ +// META: title=RemoteContextWrapper addWorker +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +// This tests that arguments passed to the constructor are respected. +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + + const main = await rcHelper.addWindow(); + + const headerName = 'x-wpt-test-header'; + const headerValue = 'test-escaping()'; + const worker = await main.addWorker( + { + scripts: ['/common/get-host-info.sub.js', './resources/test-script.js'], + headers: [[headerName, headerValue]], + }, + ); + + await assertSimplestScriptRuns(worker); + await assertFunctionRuns(worker, () => testFunction(), 'testFunction exists'); + await assertOriginIsAsExpected(worker, location.origin); + await assertHeaderIsAsExpected(worker, headerName, headerValue); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/constructor.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/constructor.window.js new file mode 100644 index 00000000000..dcbb3dabbc1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/constructor.window.js @@ -0,0 +1,38 @@ +// META: title=RemoteContextHelper constructor +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +// This tests that arguments passed to the constructor are respected. +promise_test(async t => { + // Precondition: Test was loaded from the HTTP_ORIGIN. + assert_equals( + location.origin, get_host_info()['HTTP_ORIGIN'], + 'test window was loaded on HTTP_ORIGIN'); + + const headerName = 'x-wpt-test-header'; + const headerValue = 'test-escaping()'; + const rcHelper = new RemoteContextHelper({ + origin: 'HTTP_REMOTE_ORIGIN', + scripts: [ + '/common/get-host-info.sub.js', + './resources/test-script.js', + ], + headers: [[headerName, headerValue]], + }); + + + const main = await rcHelper.addWindow(); + + await assertSimplestScriptRuns(main); + await assertFunctionRuns(main, () => testFunction(), 'testFunction exists'); + + // Verify that the origin is different. + await assertOriginIsAsExpected(main, get_host_info()['HTTP_REMOTE_ORIGIN']); + + await assertHeaderIsAsExpected(main, headerName, headerValue); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/createContext-bad-executorCreator.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/createContext-bad-executorCreator.window.js new file mode 100644 index 00000000000..bf245811737 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/createContext-bad-executorCreator.window.js @@ -0,0 +1,20 @@ +// META: title=RemoteContextHelper createContext with throwing/rejecting executorCreators. +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js + +'use strict'; + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + + const err = new Error('something bad!'); + promise_rejects_exactly( + t, err, rcHelper.createContext({ executorCreator() { throw err; } }), + 'Sync exception must be rethrown'); + + promise_rejects_exactly( + t, err, rcHelper.createContext({ executorCreator() { return Promise.reject(err); } }), + 'Async rejection must be rethrown'); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigateToNew.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigateToNew.window.js new file mode 100644 index 00000000000..f7dd3f8325a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigateToNew.window.js @@ -0,0 +1,37 @@ +// META: title=RemoteContextWrapper navigateToNew +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +promise_test(async t => { + // Precondition: Test was loaded from the HTTP_ORIGIN. + assert_equals( + location.origin, get_host_info()['HTTP_ORIGIN'], + 'test window was loaded on HTTP_ORIGIN'); + + const rcHelper = new RemoteContextHelper(); + + const main = await rcHelper.addWindow(); + + const headerName = 'x-wpt-test-header'; + const headerValue = 'test-escaping()'; + const newMain = await main.navigateToNew( + { + origin: 'HTTP_REMOTE_ORIGIN', + scripts: ['/common/get-host-info.sub.js', './resources/test-script.js'], + headers: [[headerName, headerValue]], + }, + ); + + await assertSimplestScriptRuns(newMain); + await assertFunctionRuns( + newMain, () => testFunction(), 'testFunction exists'); + + const remoteOrigin = get_host_info()['HTTP_REMOTE_ORIGIN']; + await assertOriginIsAsExpected(newMain, remoteOrigin); + await assertHeaderIsAsExpected(newMain, headerName, headerValue); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-bfcache.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-bfcache.window.js new file mode 100644 index 00000000000..1fa90a90642 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-bfcache.window.js @@ -0,0 +1,35 @@ +// META: title=RemoteContextHelper navigation using BFCache +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + + // Open a window with noopener so that BFCache will work. + const rc1 = await rcHelper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + + // Add a pageshow listener to stash the event. + await rc1.executeScript(() => { + window.addEventListener('pageshow', (event) => { + window.pageshowEvent = event; + }); + }); + + // Navigate away. + const rc2 = await rc1.navigateToNew(); + await assertSimplestScriptRuns(rc2); + + // Navigate back. + await rc2.historyBack(); + + // Verify that the document was BFCached. + assert_true(await rc1.executeScript(() => { + return window.pageshowEvent.persisted; + })); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-helpers.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-helpers.window.js new file mode 100644 index 00000000000..079e20661ea --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-helpers.window.js @@ -0,0 +1,28 @@ +// META: title=RemoteContextHelper navigation helpers +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js +// META: timeout=long + +'use strict'; + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + const rc1 = await rcHelper.addWindow(); + await assertSimplestScriptRuns(rc1); + + const rc2 = await rc1.navigateToNew(); + await assertSimplestScriptRuns(rc2); + + await rc2.historyBack(); + await assertSimplestScriptRuns(rc1); + + await rc1.historyForward(); + await assertSimplestScriptRuns(rc2); + + const rc3 = await rc2.navigateToNew(); + await rc3.historyGo(-2); + await assertSimplestScriptRuns(rc1); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-same-document.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-same-document.window.js new file mode 100644 index 00000000000..6f637e2b907 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-same-document.window.js @@ -0,0 +1,39 @@ +// META: title=RemoteContextHelper navigation using BFCache +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/test-helper.js + +'use strict'; + +async function assertLocationIs(remoteContextWrapper, expectedLocation) { + assert_equals( + await remoteContextWrapper.executeScript(() => { + return location.toString(); + }), + expectedLocation, 'verify location'); +} + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + + const rc = await rcHelper.addWindow(); + + const oldLocation = await rc.executeScript(() => { + return location.toString(); + }); + const newLocation = oldLocation + '#fragment'; + + // Navigate to same document. + await rc.navigateTo(newLocation); + + // Verify that the window navigated. + await assertLocationIs(rc, newLocation); + + // Navigate back. + await rc.historyBack(oldLocation); + + // Verify that the window navigated back and the executor is running. + await assertLocationIs(rc, oldLocation); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-helper.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-helper.js new file mode 100644 index 00000000000..71cd87e5539 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-helper.js @@ -0,0 +1,48 @@ +async function assertSimplestScriptRuns(remoteContextWrapper) { + assert_equals( + await remoteContextWrapper.executeScript(() => { + return 1; + }), + 1, 'simplest script runs'); +} + +async function assertFunctionRuns( + remoteContextWrapper, functionToRun, expectedReturn) { + assert_equals( + await remoteContextWrapper.executeScript(functionToRun), expectedReturn, + 'function runs'); +} + +async function assertOriginIsAsExpected(remoteContextWrapper, expectedOrigin) { + assert_equals( + await remoteContextWrapper.executeScript(() => { + return location.origin; + }), + expectedOrigin, 'verify origin'); +} + +async function assertWindowNameEquals(remoteContextWrapper, expectedName) { + assert_equals( + await remoteContextWrapper.executeScript(() => { + return window.name; + }), + expectedName, 'verify name'); +} + +async function assertWindowHasOpenerEquals(remoteContextWrapper, hasParent) { + assert_equals( + await remoteContextWrapper.executeScript(() => { + return !!window.opener; + }), + hasParent, 'verify opener'); +} + +async function assertHeaderIsAsExpected( + remoteContextWrapper, headerName, headerValue) { + assert_equals( + headerValue, + await remoteContextWrapper.executeScript(async (headerName) => { + const res = await fetch(location); + return res.headers.get(headerName); + }, [headerName]), 'header is set'); +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-script.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-script.js new file mode 100644 index 00000000000..d1c02cab298 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-script.js @@ -0,0 +1,3 @@ +function testFunction() { + return 'testFunction exists'; +} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-script2.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-script2.js new file mode 100644 index 00000000000..f9e72c442bb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-script2.js @@ -0,0 +1,3 @@ +function testFunction2() { + return 'testFunction2 exists'; +} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor-common.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor-common.js new file mode 100644 index 00000000000..8df42de28c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor-common.js @@ -0,0 +1,17 @@ +// Functions available by default in the executor. + +'use strict'; + +let executor; + +// Expects addScript to be present (window or worker version). +function addScripts(urls) { + return Promise.all(urls.map(addScript)); +} + +function startExecutor() { + const params = new URLSearchParams(location.search); + addScripts(params.getAll('script')); + const uuid = params.get('uuid'); + executor = new Executor(uuid); +} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor-window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor-window.js new file mode 100644 index 00000000000..bc9ff6faf10 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor-window.js @@ -0,0 +1,70 @@ +// Functions available by default in the executor. + +'use strict'; + +let executorStartEvent = null; + +function requestExecutor() { + const params = new URLSearchParams(location.search); + const startOn = params.get('startOn'); + + if (startOn) { + addEventListener(startOn, (e) => { + executorStartEvent = e; + startExecutor(); + }); + } else { + startExecutor(); + } +} + +function addScript(url) { + const script = document.createElement('script'); + script.src = url; + const promise = new Promise((resolve, reject) => { + script.onload = () => resolve(url); + script.onerror = (e) => reject(e); + }); + document.body.appendChild(script); + return promise; +} + +/** + * Suspends the executor and executes the function in `fnString` when it has + * suspended. Installs a pageshow handler to resume the executor if the + * document is BFCached. Installs a hashchange handler to detect when the + * navigation did not change documents. + * + * This returns nothing because fn is invoke after waiting for the document to + * be suspended. If we were to return a promise, the executor could not suspend + * until that promise resolved but the promise cannot resolve until the executor + * is suspended. This could be avoided by adding support + * directly in the dispatcher for tasks suspend immediately after execution. + * + * @param {string} fnString A stringified function to be executed. + * @param {any[]} args The arguments to pass to the function. + */ +function executeScriptToNavigate(fnString, args) { + // Only one of these listeners should run. + const controller = new AbortController(); + window.addEventListener('pageshow', (event) => { + controller.abort(); + executor.resume(); + }, {signal: controller.signal, once: true}); + window.addEventListener('hashchange', (event) => { + controller.abort(); + const oldURLObject = new URL(event.oldURL); + const newURLObject = new URL(event.newURL); + oldURLObject.hash = ''; + newURLObject.hash = ''; + // If only the hash-fragment changed then the navigation was + // same-document and we should resume the executor. + if (oldURLObject.toString() == newURLObject.toString()) { + executor.resume(); + } + }, {signal: controller.signal, once: true}); + + executor.suspend(() => { + eval(fnString).apply(null, args); + }); +} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor-worker.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor-worker.js new file mode 100644 index 00000000000..49ce6bd52a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor-worker.js @@ -0,0 +1,9 @@ +'use strict'; + +importScripts('/common/dispatcher/dispatcher.js', './executor-common.js'); + +function addScript(url) { + importScripts(url); +} + +startExecutor(); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor.sub.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor.sub.html new file mode 100644 index 00000000000..38f4429d91e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/executor.sub.html @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js new file mode 100644 index 00000000000..7a4b399af88 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js @@ -0,0 +1,524 @@ +'use strict'; + +// Requires: +// - /common/dispatcher/dispatcher.js +// - /common/utils.js +// - /common/get-host-info.sub.js if automagic conversion of origin names to +// URLs is used. + +/** + * This provides a more friendly interface to remote contexts in dispatches.js. + * The goal is to make it easy to write multi-window/-frame/-worker tests where + * the logic is entirely in 1 test file and there is no need to check in any + * other file (although it is often helpful to check in files of JS helper + * functions that are shared across remote context). + * + * So for example, to test that history traversal works, we create a new window, + * navigate it to a new document, go back and then go forward. + * + * @example + * promise_test(async t => { + * const rcHelper = new RemoteContextHelper(); + * const rc1 = await rcHelper.addWindow(); + * const rc2 = await rc1.navigateToNew(); + * assert_equals(await rc2.executeScript(() => 'here'), 'here', 'rc2 is live'); + * rc2.historyBack(); + * assert_equals(await rc1.executeScript(() => 'here'), 'here', 'rc1 is live'); + * rc1.historyForward(); + * assert_equals(await rc2.executeScript(() => 'here'), 'here', 'rc2 is live'); + * }); + * + * Note on the correspondence between remote contexts and + * `RemoteContextWrapper`s. A remote context is entirely determined by its URL. + * So navigating away from one and then back again will result in a remote + * context that can be controlled by the same `RemoteContextWrapper` instance + * before and after navigation. Messages sent to a remote context while it is + * destroyed or in BFCache will be queued and processed if that that URL is + * navigated back to. + * + * Navigation: + * This framework does not keep track of the history of the frame tree and so it + * is up to the test script to keep track of what remote contexts are currently + * active and to keep references to the corresponding `RemoteContextWrapper`s. + * + * Any action that leads to navigation in the remote context must be executed + * using + * @see RemoteContextWrapper.navigate. + */ + +{ + const RESOURCES_PATH = + '/html/browsers/browsing-the-web/remote-context-helper/resources'; + const WINDOW_EXECUTOR_PATH = `${RESOURCES_PATH}/executor.sub.html`; + const WORKER_EXECUTOR_PATH = `${RESOURCES_PATH}/executor-worker.js`; + + /** + * Turns a string into an origin. If `origin` is null this will return the + * current document's origin. If `origin` contains not '/', this will attempt + * to use it as an index in `get_host_info()`. Otherwise returns the input + * origin. + * @private + * @param {string|null} origin The input origin. + * @return {string|null} The output origin. + * @throws {RangeError} is `origin` cannot be found in + * `get_host_info()`. + */ + function finalizeOrigin(origin) { + if (!origin) { + return location.origin; + } + if (!origin.includes('/')) { + const origins = get_host_info(); + if (origin in origins) { + return origins[origin]; + } else { + throw new RangeError( + `${origin} is not a key in the get_host_info() object`); + } + } + return origin; + } + + /** + * @private + * @param {string} url + * @returns {string} Absolute url using `location` as the base. + */ + function makeAbsolute(url) { + return new URL(url, location).toString(); + } + + /** + * Represents a configuration for a remote context executor. + */ + class RemoteContextConfig { + /** + * @param {Object} [options] + * @param {string} [options.origin] A URL or a key in `get_host_info()`. + * @see finalizeOrigin for how origins are handled. + * @param {string[]} [options.scripts] A list of script URLs. The current + * document will be used as the base for relative URLs. + * @param {[string, string][]} [options.headers] A list of pairs of name + * and value. The executor will be served with these headers set. + * @param {string} [options.startOn] If supplied, the executor will start + * when this event occurs, e.g. "pageshow", + * (@see window.addEventListener). This only makes sense for + * window-based executors, not worker-based. + */ + constructor( + {origin, scripts = [], headers = [], startOn} = {}) { + this.origin = origin; + this.scripts = scripts; + this.headers = headers; + this.startOn = startOn; + } + + /** + * If `config` is not already a `RemoteContextConfig`, one is constructed + * using `config`. + * @private + * @param {object} [config] + * @returns + */ + static ensure(config) { + if (!config) { + return DEFAULT_CONTEXT_CONFIG; + } + return new RemoteContextConfig(config); + } + + /** + * Merges `this` with another `RemoteContextConfig` and to give a new + * `RemoteContextConfig`. `origin` is replaced by the other if present, + * `headers` and `scripts` are concatenated with `this`'s coming first. + * @param {RemoteContextConfig} extraConfig + * @returns {RemoteContextConfig} + */ + merged(extraConfig) { + let origin = this.origin; + if (extraConfig.origin) { + origin = extraConfig.origin; + } + let startOn = this.startOn; + if (extraConfig.startOn) { + startOn = extraConfig.startOn; + } + const headers = this.headers.concat(extraConfig.headers); + const scripts = this.scripts.concat(extraConfig.scripts); + return new RemoteContextConfig({ + origin, + headers, + scripts, + startOn, + }); + } + } + + /** + * The default `RemoteContextConfig` to use if none is supplied. It has no + * origin, headers or scripts. + * @constant {RemoteContextConfig} + */ + const DEFAULT_CONTEXT_CONFIG = new RemoteContextConfig(); + + /** + * This class represents a configuration for creating remote contexts. This is + * the entry-point + * for creating remote contexts, providing @see addWindow . + */ + class RemoteContextHelper { + /** + * @param {RemoteContextConfig|object} config The configuration + * for this remote context. + */ + constructor(config) { + this.config = RemoteContextConfig.ensure(config); + } + + /** + * Creates a new remote context and returns a `RemoteContextWrapper` giving + * access to it. + * @private + * @param {Object} options + * @param {(url: string) => Promise} options.executorCreator A + * function that takes a URL and causes the browser to navigate some + * window to that URL, e.g. via an iframe or a new window. + * @param {RemoteContextConfig|object} [options.extraConfig] If supplied, + * extra configuration for this remote context to be merged with + * `this`'s existing config. If it's not a `RemoteContextConfig`, it + * will be used to construct a new one. + * @returns {Promise} + */ + async createContext({ + executorCreator, + extraConfig, + isWorker = false, + }) { + const config = + this.config.merged(RemoteContextConfig.ensure(extraConfig)); + + const origin = finalizeOrigin(config.origin); + const url = new URL( + isWorker ? WORKER_EXECUTOR_PATH : WINDOW_EXECUTOR_PATH, origin); + + // UUID is needed for executor. + const uuid = token(); + url.searchParams.append('uuid', uuid); + + if (config.headers) { + addHeaders(url, config.headers); + } + for (const script of config.scripts) { + url.searchParams.append('script', makeAbsolute(script)); + } + + if (config.startOn) { + url.searchParams.append('startOn', config.startOn); + } + + await executorCreator(url.href); + return new RemoteContextWrapper(new RemoteContext(uuid), this, url.href); + } + + /** + * Creates a window with a remote context. @see createContext for + * @param {RemoteContextConfig|object} [extraConfig] Will be + * merged with `this`'s config. + * @param {Object} [options] + * @param {string} [options.target] Passed to `window.open` as the + * 2nd argument + * @param {string} [options.features] Passed to `window.open` as the + * 3rd argument + * @returns {Promise} + */ + addWindow(extraConfig, options) { + return this.createContext({ + executorCreator: windowExecutorCreator(options), + extraConfig, + }); + } + } + // Export this class. + self.RemoteContextHelper = RemoteContextHelper; + + /** + * Attaches header to the URL. See + * https://web-platform-tests.org/writing-tests/server-pipes.html#headers + * @param {string} url the URL to which headers should be attached. + * @param {[[string, string]]} headers a list of pairs of head-name, + * header-value. + */ + function addHeaders(url, headers) { + function escape(s) { + return s.replace('(', '\\(').replace(')', '\\)'); + } + const formattedHeaders = headers.map((header) => { + return `header(${escape(header[0])}, ${escape(header[1])})`; + }); + url.searchParams.append('pipe', formattedHeaders.join('|')); + } + + function windowExecutorCreator({target = '_blank', features} = {}) { + return url => { + window.open(url, target, features); + }; + } + + function elementExecutorCreator( + remoteContextWrapper, elementName, attributes) { + return url => { + return remoteContextWrapper.executeScript((url, elementName, attributes) => { + const el = document.createElement(elementName); + for (const attribute in attributes) { + el.setAttribute(attribute, attributes[attribute]); + } + el.src = url; + document.body.appendChild(el); + }, [url, elementName, attributes]); + }; + } + + function workerExecutorCreator() { + return url => { + new Worker(url); + }; + } + + function navigateExecutorCreator(remoteContextWrapper) { + return url => { + return remoteContextWrapper.navigate((url) => { + window.location = url; + }, [url]); + }; + } + + /** + * This class represents a remote context running an executor (a + * window/frame/worker that can receive commands). It is the interface for + * scripts to control remote contexts. + * + * Instances are returned when new remote contexts are created (e.g. + * `addFrame` or `navigateToNew`). + */ + class RemoteContextWrapper { + /** + * This should only be constructed by `RemoteContextHelper`. + * @private + */ + constructor(context, helper) { + this.context = context; + this.helper = helper; + } + + /** + * Executes a script in the remote context. + * @param {function} fn The script to execute. + * @param {any[]} args An array of arguments to pass to the script. + * @returns {Promise} The return value of the script (after + * being serialized and deserialized). + */ + async executeScript(fn, args) { + return this.context.execute_script(fn, args); + } + + /** + * Adds a string of HTML to the executor's document. + * @param {string} html + * @returns {Promise} + */ + async addHTML(html) { + return this.executeScript((htmlSource) => { + document.body.insertAdjacentHTML('beforebegin', htmlSource); + }, [html]); + } + + /** + * Adds scripts to the executor's document. + * @param {string[]} urls A list of URLs. URLs are relative to the current + * document. + * @returns {Promise} + */ + async addScripts(urls) { + if (!urls) { + return []; + } + return this.executeScript(urls => { + return addScripts(urls); + }, [urls.map(makeAbsolute)]); + } + + /** + * Adds an iframe to the current document. + * @param {RemoteContextConfig} [extraConfig] + * @param {[string, string][]} [attributes] A list of pairs of strings + * of attribute name and value these will be set on the iframe element + * when added to the document. + * @returns {Promise} The remote context. + */ + addIframe(extraConfig, attributes = {}) { + return this.helper.createContext({ + executorCreator: elementExecutorCreator(this, 'iframe', attributes), + extraConfig, + }); + } + + /** + * Adds a dedicated worker to the current document. + * @param {RemoteContextConfig} [extraConfig] + * @returns {Promise} The remote context. + */ + addWorker(extraConfig) { + return this.helper.createContext({ + executorCreator: workerExecutorCreator(), + extraConfig, + isWorker: true, + }); + } + + /** + * Executes a script in the remote context that will perform a navigation. + * To do this safely, we must suspend the executor and wait for that to + * complete before executing. This ensures that all outstanding requests are + * completed and no more can start. It also ensures that the executor will + * restart if the page goes into BFCache or it was a same-document + * navigation. It does not return a value. + * + * NOTE: We cannot monitor whether and what navigations are happening. The + * logic has been made as robust as possible but is not fool-proof. + * + * Foolproof rule: + * - The script must perform exactly one navigation. + * - If that navigation is a same-document history traversal, you must + * `await` the result of `waitUntilLocationIs`. (Same-document non-traversal + * navigations do not need this extra step.) + * + * More complex rules: + * - The script must perform a navigation. If it performs no navigation, + * the remote context will be left in the suspended state. + * - If the script performs a direct same-document navigation, it is not + * necessary to use this function but it will work as long as it is the only + * navigation performed. + * - If the script performs a same-document history navigation, you must + * `await` the result of `waitUntilLocationIs`. + * + * @param {function} fn The script to execute. + * @param {any[]} args An array of arguments to pass to the script. + * @returns {Promise} + */ + navigate(fn, args) { + return this.executeScript((fnText, args) => { + executeScriptToNavigate(fnText, args); + }, [fn.toString(), args]); + } + + /** + * Navigates to the given URL, by executing a script in the remote + * context that will perform navigation with the `location.href` + * setter. + * + * Be aware that performing a cross-document navigation using this + * method will cause this `RemoteContextWrapper` to become dormant, + * since the remote context it points to is no longer active and + * able to receive messages. You also won't be able to reliably + * tell when the navigation finishes; the returned promise will + * fulfill when the script finishes running, not when the navigation + * is done. As such, this is most useful for testing things like + * unload behavior (where it doesn't matter) or prerendering (where + * there is already a `RemoteContextWrapper` for the destination). + * For other cases, using `navigateToNew()` will likely be better. + * + * @param {string|URL} url The URL to navigate to. + * @returns {Promise} + */ + navigateTo(url) { + return this.navigate(url => { + location.href = url; + }, [url.toString()]); + } + + /** + * Navigates the context to a new document running an executor. + * @param {RemoteContextConfig} [extraConfig] + * @returns {Promise} The remote context. + */ + async navigateToNew(extraConfig) { + return this.helper.createContext({ + executorCreator: navigateExecutorCreator(this), + extraConfig, + }); + } + + ////////////////////////////////////// + // Navigation Helpers. + // + // It is up to the test script to know which remote context will be + // navigated to and which `RemoteContextWrapper` should be used after + // navigation. + // + // NOTE: For a same-document history navigation, the caller use `await` a + // call to `waitUntilLocationIs` in order to know that the navigation has + // completed. For convenience the method below can return the promise to + // wait on, if passed the expected location. + + async waitUntilLocationIs(expectedLocation) { + return this.executeScript(async (expectedLocation) => { + if (location.href === expectedLocation) { + return; + } + + // Wait until the location updates to the expected one. + await new Promise(resolve => { + const listener = addEventListener('hashchange', (event) => { + if (event.newURL === expectedLocation) { + removeEventListener(listener); + resolve(); + } + }); + }); + }, [expectedLocation]); + } + + /** + * Performs a history traversal. + * @param {integer} n How many steps to traverse. @see history.go + * @param {string} [expectedLocation] If supplied will be passed to @see waitUntilLocationIs. + * @returns {Promise} + */ + async historyGo(n, expectedLocation) { + await this.navigate((n) => { + history.go(n); + }, [n]); + if (expectedLocation) { + await this.waitUntilLocationIs(expectedLocation); + } + } + + /** + * Performs a history traversal back. + * @param {string} [expectedLocation] If supplied will be passed to @see waitUntilLocationIs. + * @returns {Promise} + */ + async historyBack(expectedLocation) { + await this.navigate(() => { + history.back(); + }); + if (expectedLocation) { + await this.waitUntilLocationIs(expectedLocation); + } + } + + /** + * Performs a history traversal back. + * @param {string} [expectedLocation] If supplied will be passed to @see waitUntilLocationIs. + * @returns {Promise} + */ + async historyForward(expectedLocation) { + await this.navigate(() => { + history.forward(); + }); + if (expectedLocation) { + await this.waitUntilLocationIs(expectedLocation); + } + } + } +} diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/resources/has-iframe.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/resources/has-iframe.html new file mode 100644 index 00000000000..e6dfba1011a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/resources/has-iframe.html @@ -0,0 +1,7 @@ + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/resources/helpers.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/resources/helpers.js new file mode 100644 index 00000000000..b19addfadfa --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/resources/helpers.js @@ -0,0 +1,84 @@ +// This file contains general helpers for navigation/history tests. The goal is +// to make tests more imperative and ordered, instead of requiring lots of +// nested callbacks and jumping back and forth. However, +// html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// might be even better at that, so prefer that when you can. +// +// TODO(domenic): consider unifying with +// overlapping-navigations-and-traversals/resources/helpers.mjs. + +window.openWindow = (url, t) => { + const w = window.open(url); + t?.add_cleanup(() => w.close()); + + return new Promise(resolve => { + w.addEventListener("load", () => resolve(w), { once: true }); + }); +}; + +window.addIframe = (url = "/common/blank.html", doc = document) => { + const iframe = doc.createElement("iframe"); + iframe.src = url; + doc.body.append(iframe); + + return new Promise(resolve => { + iframe.addEventListener("load", () => resolve(iframe), { once: true }); + }); +}; + +window.addSrcdocIframe = async () => { + const iframe = document.createElement("iframe"); + iframe.srcdoc = ` diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/unload-main-frame-cross-origin.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/unload-main-frame-cross-origin.window.js new file mode 100644 index 00000000000..65b4e533f64 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/unload-main-frame-cross-origin.window.js @@ -0,0 +1,34 @@ +// META: title=Unload runs in main frame when navigating cross-origin. +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + + const rc1 = await rcHelper.addWindow(); + + t.add_cleanup(() => localStorage.removeItem('unload')); + + // Initialize storage and add "unload" event handler. + await rc1.executeScript(() => { + localStorage.setItem('unload', 'not yet'); + addEventListener('unload', () => { + localStorage.setItem('unload', 'ran'); + }); + }); + + // Navigate away. + const rc2 = await rc1.navigateToNew( + {extraRemoteContextConfig: {origin: 'HTTP_REMOTE_ORIGIN'}}); + + // Navigate back. + await rc2.historyBack(); + + // Test that the unload handler wrote to storage. + // Running it in the remote context after going back should ensure that the + // navigation (and therefore the unload handler) has completed. + assert_equals( + await rc1.executeScript(() => localStorage.getItem('unload')), 'ran'); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/unload-main-frame-same-origin.window.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/unload-main-frame-same-origin.window.js new file mode 100644 index 00000000000..5a95455c4ce --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/unload-main-frame-same-origin.window.js @@ -0,0 +1,33 @@ +// META: title=Unload runs in main frame when navigating same-origin. +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + + const rc1 = await rcHelper.addWindow(); + + t.add_cleanup(() => localStorage.removeItem('unload')); + + // Initialize storage and add "unload" event handler. + await rc1.executeScript(() => { + localStorage.setItem('unload', 'not yet'); + addEventListener('unload', () => { + localStorage.setItem('unload', 'ran'); + }); + }); + + // Navigate away. + const rc2 = await rc1.navigateToNew(); + + // Navigate back. + await rc2.historyBack(); + + // Test that the unload handler wrote to storage. + // Running it in the remote context after going back should ensure that the + // navigation (and therefore the unload handler) has completed. + assert_equals( + await rc1.executeScript(() => localStorage.getItem('unload')), 'ran'); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history-associated-with-document.window.js b/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history-associated-with-document.window.js new file mode 100644 index 00000000000..94c1b2cf6b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history-associated-with-document.window.js @@ -0,0 +1,6 @@ +// META: title=the History object must be associated with the Document object, not the Window object +// META: script=/common/object-association.js + +// See https://github.com/whatwg/html/issues/2566. + +testIsPerDocument("history"); diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history-state-after-bfcache.window.js b/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history-state-after-bfcache.window.js new file mode 100644 index 00000000000..5f04890a728 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history-state-after-bfcache.window.js @@ -0,0 +1,43 @@ +// META: title=Navigating back to a bfcached page does not reset history.state +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js + +// See https://github.com/whatwg/html/issues/6652. + +'use strict'; + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + + // Open a window with noopener so that BFCache will work. + const rc = await rcHelper.addWindow(null, { features: "noopener" }); + + // Add a pageshow listener to stash the event, and set history.state using replaceState(). + await rc.executeScript(() => { + window.addEventListener('pageshow', (event) => { + window.pageshowEvent = event; + }); + + history.replaceState({ foo: 'bar' }, '', ''); + window.stashedHistoryState = history.state; + }); + + const rc2 = await rc.navigateToNew(); + await rc2.historyBack(); + + assert_implements_optional( + await rc.executeScript(() => window.pageshowEvent.persisted), + 'precondition: document was bfcached' + ); + + assert_equals( + await rc.executeScript(() => history.state.foo), + 'bar', + 'history.state was restored correctly' + ); + + assert_true( + await rc.executeScript(() => window.stashedHistoryState === history.state), + 'history.state did not get serialized and deserialized'); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history_go_zero_which_document.window.js b/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history_go_zero_which_document.window.js new file mode 100644 index 00000000000..f697783f3e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history_go_zero_which_document.window.js @@ -0,0 +1,27 @@ +// META: title=history.go(0) on an iframe must reload the iframe's document, not the parent document +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js + +promise_test(async () => { + const rcHelper = new RemoteContextHelper(); + const main = await rcHelper.addWindow(); + await main.addIframe(); + + await main.executeScript(() => { + window.didNotGetReloaded = true; + + const iframe = document.querySelector("iframe"); + + // This goes beyond the original test case in https://github.com/whatwg/html/issues/2436, and + // tests where current realm != relevant realm. The spec says to use relevant realm so the + // result is still, iframe must reload, not parent. + History.prototype.go.call(iframe.contentWindow.history, 0); + + return new Promise(resolve => { + iframe.addEventListener("load", resolve); + }); + }); + + assert_true(await main.executeScript(() => window.didNotGetReloaded)); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history_properties_only_fully_active.html b/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history_properties_only_fully_active.html index bc09507f0ad..2b2c3085260 100644 --- a/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history_properties_only_fully_active.html +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/history_properties_only_fully_active.html @@ -9,14 +9,15 @@ test(function(t) { var ifr = document.getElementById("child"); var cached_history = ifr.contentWindow.history; + var cached_DOMException = ifr.contentWindow.DOMException; ifr.remove(); - assert_throws_dom("SecurityError", function() { cached_history.length; }); - assert_throws_dom("SecurityError", function() { cached_history.scrollRestoration; }); - assert_throws_dom("SecurityError", function() { cached_history.state; }); - assert_throws_dom("SecurityError", function() { cached_history.go(0); }); - assert_throws_dom("SecurityError", function() { cached_history.back(); }); - assert_throws_dom("SecurityError", function() { cached_history.forward(); }); - assert_throws_dom("SecurityError", function() { cached_history.pushState(1, document.title, "?x=1"); }); - assert_throws_dom("SecurityError", function() { cached_history.replaceState(2, document.title, "?x=2"); }); + assert_throws_dom("SecurityError", cached_DOMException, function() { cached_history.length; }); + assert_throws_dom("SecurityError", cached_DOMException, function() { cached_history.scrollRestoration; }); + assert_throws_dom("SecurityError", cached_DOMException, function() { cached_history.state; }); + assert_throws_dom("SecurityError", cached_DOMException, function() { cached_history.go(0); }); + assert_throws_dom("SecurityError", cached_DOMException, function() { cached_history.back(); }); + assert_throws_dom("SecurityError", cached_DOMException, function() { cached_history.forward(); }); + assert_throws_dom("SecurityError", cached_DOMException, function() { cached_history.pushState(1, document.title, "?x=1"); }); + assert_throws_dom("SecurityError", cached_DOMException, function() { cached_history.replaceState(2, document.title, "?x=2"); }); }); diff --git a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/location-properties-smoke-test.html b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/location-properties-smoke-test.html new file mode 100644 index 00000000000..1d1c1136a6d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/location-properties-smoke-test.html @@ -0,0 +1,65 @@ + + + + Verify that certain location interface properties are protected cross-origin. + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/sandboxing/popup-from-initial-empty-sandboxed-document.window.js b/tests/wpt/web-platform-tests/html/browsers/sandboxing/popup-from-initial-empty-sandboxed-document.window.js index e70a52ae8a1..1ae4fad0cba 100644 --- a/tests/wpt/web-platform-tests/html/browsers/sandboxing/popup-from-initial-empty-sandboxed-document.window.js +++ b/tests/wpt/web-platform-tests/html/browsers/sandboxing/popup-from-initial-empty-sandboxed-document.window.js @@ -8,9 +8,6 @@ // popup using the WindowProxy of a new iframe that is still on the initial // empty document. Check that the sandbox flags are properly inherited. -const executorUrl = uuid => - (new URL(`./resources/executor.html?uuid=${uuid}`, window.location)).href; - // Return true if the execution context is sandboxed. const isSandboxed = () => { try { @@ -26,7 +23,7 @@ promise_test(async test => { // 1. Create a sandboxed iframe, allowing popups, same-origin and scripts. const iframe_token = token(); const iframe_document = new RemoteContext(iframe_token); - const iframe_url = executorUrl(iframe_token); + const iframe_url = remoteExecutorUrl(iframe_token); const iframe = document.createElement("iframe"); iframe.sandbox = "allow-same-origin allow-scripts allow-popups"; iframe.src = iframe_url; @@ -38,12 +35,12 @@ promise_test(async test => { // using it's WindowProxy. The popup must inherit sandbox flags. const popup_token = token(); const popup_document = new RemoteContext(popup_token); - const popup_url = executorUrl(popup_token); + const popup_url = remoteExecutorUrl(popup_token); iframe_document.execute_script((popup_url) => { let iframe = document.createElement("iframe"); iframe.name = "iframe_name"; document.body.appendChild(iframe); iframe_name.open(popup_url); - }, [popup_url]); + }, [popup_url.href]); assert_true(await popup_document.execute_script(isSandboxed), "popup is sandboxed"); }); diff --git a/tests/wpt/web-platform-tests/html/browsers/sandboxing/resources/executor.html b/tests/wpt/web-platform-tests/html/browsers/sandboxing/resources/executor.html deleted file mode 100644 index 67b9783fec4..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/sandboxing/resources/executor.html +++ /dev/null @@ -1,7 +0,0 @@ - - diff --git a/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-document-open-mutation.window.js b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-document-open-mutation.window.js new file mode 100644 index 00000000000..713ca612c5a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-document-open-mutation.window.js @@ -0,0 +1,37 @@ +// Return whether the current context is sandboxed or not. The implementation do +// not matter much, but might have to change over time depending on what side +// effect sandbox flag have. Feel free to update as needed. +const is_sandboxed = () => { + try { + document.domain = document.domain; + return "not sandboxed"; + } catch (error) { + return "sandboxed"; + } +}; + +promise_test(async test => { + const message = new Promise(r => window.addEventListener("message", r)); + + const iframe_unsandboxed = document.createElement("iframe"); + document.body.appendChild(iframe_unsandboxed); + + const iframe_sandboxed = document.createElement("iframe"); + iframe_sandboxed.sandbox = "allow-same-origin allow-scripts"; + document.body.appendChild(iframe_sandboxed); + + iframe_sandboxed.srcdoc = ` + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/callback.js b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/callback.js similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/callback.js rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/callback.js diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_beforeunload-1.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_beforeunload-1.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_beforeunload-1.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_beforeunload-1.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_beforeunload.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_beforeunload.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_beforeunload.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_beforeunload.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_script_defer-1.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_script_defer-1.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_script_defer-1.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_script_defer-1.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_script_defer.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_script_defer.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_script_defer.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_script_defer.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_unload-1.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_unload-1.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_unload-1.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_unload-1.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_unload.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_unload.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_unload.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/close_unload.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/no_window_open_when_term_nesting_level_nonzero.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/no_window_open_when_term_nesting_level_nonzero.window.js diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/001-1.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/001-1.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/001-1.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/001-1.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/001-2.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/001-2.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/001-2.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/001-2.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/001.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/001.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/001.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/001.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/002-1.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/002-1.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/002-1.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/002-1.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/002-2.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/002-2.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/002-2.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/002-2.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/002.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/002.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/002.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/non_automated/002.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-is-popup-condition.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition.html similarity index 89% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-is-popup-condition.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition.html index 3959b618e1d..4f52e2e8de6 100644 --- a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-is-popup-condition.html +++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition.html @@ -26,48 +26,59 @@ var tests = { // The explicit popup feature. ["popup", false], ["popup=1", false], + ["popup=true", false], ["popup=0", true], // Other feature alone results in popup. ["location", false], ["location=yes", false], + ["location=true", false], ["location=no", false], ["toolbar", false], ["toolbar=yes", false], + ["toolbar=true", false], ["toolbar=no", false], ["menubar", false], ["menubar=yes", false], + ["menubar=true", false], ["menubar=no", false], ["resizable", false], ["resizable=yes", false], + ["resizable=true", false], ["resizable=no", false], ], "single-2": [ ["scrollbars", false], ["scrollbars=yes", false], + ["scrollbars=true", false], ["scrollbars=no", false], ["status", false], ["status=yes", false], + ["status=true", false], ["status=no", false], ["titlebar", false], ["titlebar=yes", false], + ["titlebar=true", false], ["titlebar=no", false], ["close", false], ["close=yes", false], + ["close=true", false], ["close=no", false], ["minimizable", false], ["minimizable=yes", false], + ["minimizable=true", false], ["minimizable=no", false], ["personalbar", false], ["personalbar=yes", false], + ["personalbar=true", false], ["personalbar=no", false], ], "position": [ @@ -113,6 +124,8 @@ var tests = { // The explicit popup feature has priority than others. ["popup=1,location,toolbar,menubar,resizable,scrollbars,status", false], + ["popup=yes,location,toolbar,menubar,resizable,scrollbars,status", false], + ["popup=true,location,toolbar,menubar,resizable,scrollbars,status", false], ["popup=0,location,toolbar,menubar,resizable,scrollbars", true], ], }; diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-negative-innerwidth-innerheight.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-negative-innerwidth-innerheight.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-negative-screenx-screeny.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-negative-screenx-screeny.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-negative-top-left.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-negative-top-left.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-negative-width-height.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-negative-width-height.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-height.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-height.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-innerheight.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-innerheight.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-innerwidth.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-innerwidth.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-left.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-left.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-screenx.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-screenx.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-screeny.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-screeny.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-top.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-top.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-width.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-non-integer-width.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-innerheight-innerwidth.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-innerheight-innerwidth.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-innerheight-innerwidth.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-innerheight-innerwidth.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-noopener.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-noopener.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-noreferrer.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-noreferrer.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-screenx-screeny.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-screenx-screeny.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-screenx-screeny.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-screenx-screeny.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-top-left.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-top-left.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-top-left.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-top-left.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-width-height.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-width-height.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-width-height.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-width-height.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/close-self.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/resources/close-self.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/close-self.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/resources/close-self.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/is-popup-barprop.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/resources/is-popup-barprop.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/is-popup-barprop.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/resources/is-popup-barprop.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/message-opener.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/resources/message-opener.html similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/message-opener.html rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/resources/message-opener.html diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/tokenization-noopener-noreferrer.js b/tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/resources/tokenization-noopener-noreferrer.js similarity index 100% rename from tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/tokenization-noopener-noreferrer.js rename to tests/wpt/web-platform-tests/html/browsers/the-window-object/open-close/resources/tokenization-noopener-noreferrer.js diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/support/windowFeature-values-target.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/support/windowFeature-values-target.html new file mode 100644 index 00000000000..3a78ddf6605 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/support/windowFeature-values-target.html @@ -0,0 +1,24 @@ + diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-open-noopener.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-open-noopener.html index c3c70660549..8d3a95df630 100644 --- a/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-open-noopener.html +++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-open-noopener.html @@ -18,6 +18,9 @@ var testData = [ { testDescription: "noopener=1 means the same as noopener", secondWindowFeatureString: "noopener=1", shouldReturnWindow: false }, + { testDescription: "noopener=true means the same as noopener", + secondWindowFeatureString: "noopener=true", + shouldReturnWindow: false }, { testDescription: "noopener=0 means lack of noopener", secondWindowFeatureString: "noopener=0", shouldReturnWindow: true }, diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-open-windowfeatures-values.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-open-windowfeatures-values.html new file mode 100644 index 00000000000..32551dd8d70 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-open-windowfeatures-values.html @@ -0,0 +1,72 @@ + + + +window.open() windowFeature value parsing + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-properties.https.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-properties.https.html index 980db277597..c61fb04ae24 100644 --- a/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-properties.https.html +++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-properties.https.html @@ -15,6 +15,8 @@ + +
    @@ -323,4 +325,34 @@ test(function() { assert_data_propdesc(Object.getOwnPropertyDescriptor(Window.prototype, "constructor"), true, false, true); }, "constructor"); +var selfReferentialAccessors = ['window', 'self', 'frames']; +// Test a variety of access methods +var detached = window.detachedIframe; +var detachedWindow = detached.contentWindow; +detachedIframe.remove(); +selfReferentialAccessors.forEach(function(id) { + test(function() { + assert_equals(eval(`window.${id}`), window); + assert_equals(window[id], window); + assert_equals(Object.getOwnPropertyDescriptor(window, id).get.call(window), window); + assert_equals(Reflect.get(window, id), window); + }, "Window readonly getter: " + id); + + test(function() { + var globalObject = iframe.contentWindow; + var _eval = globalObject.eval; + assert_equals(globalObject.eval(`window.${id}`), globalObject); + assert_equals(globalObject[id], globalObject); + assert_equals(_eval(`Object.getOwnPropertyDescriptor(window, "${id}").get.call(window)`), globalObject); + assert_equals(_eval(`Reflect.get(window, "${id}")`), globalObject); + }, "Window readonly getter in iframe: " + id); + test(function() { + var globalObject = detachedWindow; + var _eval = globalObject.eval; + assert_equals(_eval(`window.${id}`), globalObject); + assert_equals(globalObject[id], globalObject); + assert_equals(_eval(`Object.getOwnPropertyDescriptor(window, "${id}").get.call(window)`), globalObject); + assert_equals(_eval(`Reflect.get(window, "${id}")`), globalObject); + }, "Window readonly getter in detached iframe: " + id); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-reuse-in-nested-browsing-contexts.tentative.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-reuse-in-nested-browsing-contexts.tentative.html index 0cd2fcec3b4..03c7a68dfd3 100644 --- a/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-reuse-in-nested-browsing-contexts.tentative.html +++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-reuse-in-nested-browsing-contexts.tentative.html @@ -28,7 +28,7 @@ promise_test(async t => { assert_true(iframe.contentWindow.didLoadFrame); // The + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/first-party-to-third-party-cross-partition-same-origin-iframe.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/first-party-to-third-party-cross-partition-same-origin-iframe.html new file mode 100644 index 00000000000..eb17036c8cc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/first-party-to-third-party-cross-partition-same-origin-iframe.html @@ -0,0 +1,8 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/first-party-to-third-party-cross-partition-same-origin-window.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/first-party-to-third-party-cross-partition-same-origin-window.sub.html new file mode 100644 index 00000000000..f99b96c4667 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/first-party-to-third-party-cross-partition-same-origin-window.sub.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-cross-origin-iframe.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-cross-origin-iframe.sub.html new file mode 100644 index 00000000000..348efb3f9c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-cross-origin-iframe.sub.html @@ -0,0 +1,17 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-cross-origin-window.https.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-cross-origin-window.https.html new file mode 100644 index 00000000000..00459094941 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-cross-origin-window.https.html @@ -0,0 +1,8 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-same-origin-iframe.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-same-origin-iframe.sub.html new file mode 100644 index 00000000000..405b1053d33 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-same-origin-iframe.sub.html @@ -0,0 +1,17 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-same-origin-window.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-same-origin-window.html new file mode 100644 index 00000000000..0ae51e3fc17 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-first-party-cross-partition-same-origin-window.html @@ -0,0 +1,8 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-cross-origin-iframe-a.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-cross-origin-iframe-a.sub.html new file mode 100644 index 00000000000..a11f3640e83 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-cross-origin-iframe-a.sub.html @@ -0,0 +1,17 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-cross-origin-iframe-b.https.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-cross-origin-iframe-b.https.html new file mode 100644 index 00000000000..f56e2b35d8b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-cross-origin-iframe-b.https.html @@ -0,0 +1,8 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-cross-origin-window.sub.https.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-cross-origin-window.sub.https.html new file mode 100644 index 00000000000..13072875879 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-cross-origin-window.sub.https.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-same-origin-iframe-a.sub.https.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-same-origin-iframe-a.sub.https.html new file mode 100644 index 00000000000..ec551bfdec9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-same-origin-iframe-a.sub.https.html @@ -0,0 +1,17 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-same-origin-iframe-b.https.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-same-origin-iframe-b.https.html new file mode 100644 index 00000000000..fc15b1f1252 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-same-origin-iframe-b.https.html @@ -0,0 +1,8 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-same-origin-window.sub.https.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-same-origin-window.sub.https.html new file mode 100644 index 00000000000..f26f709db34 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-cross-partition-same-origin-window.sub.https.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-same-partition-iframe-a.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-same-partition-iframe-a.sub.html new file mode 100644 index 00000000000..339dc9f06eb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-same-partition-iframe-a.sub.html @@ -0,0 +1,17 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-same-partition-iframe-b.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-same-partition-iframe-b.html new file mode 100644 index 00000000000..daaf236bfca --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-same-partition-iframe-b.html @@ -0,0 +1,8 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-same-partition-window.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-same-partition-window.sub.html new file mode 100644 index 00000000000..7cea58f235c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/resources/third-party-to-third-party-same-partition-window.sub.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-first-party-cross-partition-cross-origin.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-first-party-cross-partition-cross-origin.sub.html new file mode 100644 index 00000000000..2618e966de6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-first-party-cross-partition-cross-origin.sub.html @@ -0,0 +1,29 @@ + + +postMessage: Third-Party to First-Party, Cross-Partition, Cross-Origin + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-first-party-cross-partition-same-origin.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-first-party-cross-partition-same-origin.sub.html new file mode 100644 index 00000000000..735b4588411 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-first-party-cross-partition-same-origin.sub.html @@ -0,0 +1,29 @@ + + +postMessage: Third-Party to First-Party, Cross-Partition, Same-Origin + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-third-party-cross-partition-cross-origin.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-third-party-cross-partition-cross-origin.sub.html new file mode 100644 index 00000000000..1083071f7d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-third-party-cross-partition-cross-origin.sub.html @@ -0,0 +1,30 @@ + + +postMessage: Third-Party to Third-Party, Cross-Partition, Cross-Origin + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-third-party-cross-partition-same-origin.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-third-party-cross-partition-same-origin.sub.html new file mode 100644 index 00000000000..9caf6c11e48 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-third-party-cross-partition-same-origin.sub.html @@ -0,0 +1,30 @@ + + +postMessage: Third-Party to Third-Party, Cross-Partition, Same-Origin + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-third-party-same-partition.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-third-party-same-partition.sub.html new file mode 100644 index 00000000000..c90a0552684 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/post-message/third-party-to-third-party-same-partition.sub.html @@ -0,0 +1,30 @@ + + +postMessage: Third-Party to Third-Party, Same-Partition + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/resources/window-name.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/resources/window-name.sub.html index 0fa874b2cfc..55fb8ebbbc5 100644 --- a/tests/wpt/web-platform-tests/html/browsers/windows/resources/window-name.sub.html +++ b/tests/wpt/web-platform-tests/html/browsers/windows/resources/window-name.sub.html @@ -40,6 +40,14 @@ async function proceedTest() { break; } + if (step === "sub") { + const url = new URL(window.location); + url.host = "{{hosts[][www]}}:{{ports[https][0]}}"; + url.search = "?" + steps.join("|"); + window.location = url.href; + break; + } + if (step === "closeOpener") { if (window.opener) { window.opener.close(); @@ -81,6 +89,11 @@ async function proceedTest() { continue; } + if (step.startsWith("setDomain=")) { + document.domain = step.split("=")[1]; + continue; + } + throw new Error("Unsupported step!"); } } diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.copy.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.copy.html index b0eb7af95d3..ac022f95e08 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.copy.html @@ -29,7 +29,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 255,255,0,191, "50,25", "255,255,0,191", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,191, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-atop.html index 415815a9341..29cf9bcc530 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-atop.html @@ -29,7 +29,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 128,255,128,191, "50,25", "128,255,128,191", 5); +_assertPixelApprox(canvas, 50,25, 128,255,128,191, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-in.html index 634d0ef9486..dc748df1537 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-in.html @@ -29,7 +29,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,255,96, "50,25", "0,255,255,96", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,96, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-out.html index 2a17abe97a7..ebf33f3eba1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-out.html @@ -29,7 +29,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-out'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,255,32, "50,25", "0,255,255,32", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,32, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-over.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-over.html index 2086c3131bb..6727e324c63 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.destination-over.html @@ -29,7 +29,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 109,255,146,223, "50,25", "109,255,146,223", 5); +_assertPixelApprox(canvas, 50,25, 109,255,146,223, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.lighter.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.lighter.html index 16af5ff73af..abb1fe0ea74 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.lighter.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.lighter.html @@ -29,7 +29,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'lighter'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 191,255,128,255, "50,25", "191,255,128,255", 5); +_assertPixelApprox(canvas, 50,25, 191,255,128,255, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-atop.html index 9f308283ba1..76ee7db0534 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-atop.html @@ -29,7 +29,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-atop'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); +_assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-in.html index 88c578a117f..77cbb5e0a63 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-in.html @@ -29,7 +29,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-out.html index b2a83cc94c6..353dcd44381 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-out.html @@ -29,7 +29,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-over.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-over.html index 9272a462148..06516cb7519 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.source-over.html @@ -29,7 +29,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-over'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 219,255,36,223, "50,25", "219,255,36,223", 5); +_assertPixelApprox(canvas, 50,25, 219,255,36,223, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.xor.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.xor.html index d9b8f4e2c86..3bc6eb5d790 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.xor.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.canvas.xor.html @@ -29,7 +29,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'xor'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); +_assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.copy.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.copy.html index b8f0384d292..ace0618cca4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.copy.html @@ -27,8 +27,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-atop.html index 3b29bba8a4d..45301941d7c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-atop.html @@ -27,8 +27,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-in.html index 9679d5de46e..2ace910253b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-in.html @@ -27,8 +27,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-out.html index 69b3a4916ae..4b3acf9b86f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-out.html @@ -27,8 +27,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-over.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-over.html index 60c74c659fb..0b1f9b52711 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.destination-over.html @@ -27,8 +27,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.lighter.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.lighter.html index ab8ea116c88..4d2525d7513 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.lighter.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.lighter.html @@ -27,8 +27,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-atop.html index c9e1251df48..db722a8983a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-atop.html @@ -27,8 +27,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-in.html index 347cfc77e6a..43479240529 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-in.html @@ -27,8 +27,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-out.html index c43a0f192ce..358dad372ec 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-out.html @@ -27,8 +27,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-over.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-over.html index 6d1e5b558e6..542f889e7f3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.source-over.html @@ -27,8 +27,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.xor.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.xor.html index 9f5eda566aa..edbf6b0be2a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.xor.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.clip.xor.html @@ -27,8 +27,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvas.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvas.html index ea287a599ad..2ae3d662f08 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvas.html @@ -30,7 +30,7 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +_assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvascopy.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvascopy.html index 3bb9577f3cc..1f3e6299ba0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvascopy.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvascopy.html @@ -32,7 +32,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy' ctx.globalAlpha = 0.51; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,130, "50,25", "0,255,0,130", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,130, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvaspattern.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvaspattern.html index 6f6e4e247f8..e861cddf302 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvaspattern.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.canvaspattern.html @@ -31,7 +31,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = ctx.createPattern(canvas2, 'no-repeat'); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +_assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.fill.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.fill.html index dd551687c92..fce9b7fbfc3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.fill.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.fill.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +_assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.image.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.image.html index ab24cfb0522..deb13f34160 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.image.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.image.html @@ -23,7 +23,7 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.drawImage(document.getElementById('red.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +_assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.imagepattern.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.imagepattern.html index 36b46d15220..06aea4c0295 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.imagepattern.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.globalAlpha.imagepattern.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = ctx.createPattern(document.getElementById('red.png'), 'no-repeat'); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +_assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.copy.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.copy.html index b8f9a80cb6e..f32e03bbaef 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.copy.html @@ -24,7 +24,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 255,255,0,191, "50,25", "255,255,0,191", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,191, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-atop.html index e14d76e2ecc..2da0d198d05 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-atop.html @@ -24,7 +24,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 128,255,128,191, "50,25", "128,255,128,191", 5); +_assertPixelApprox(canvas, 50,25, 128,255,128,191, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-in.html index b2a8e2595b5..63871b2d8e7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-in.html @@ -24,7 +24,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,255,96, "50,25", "0,255,255,96", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,96, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-out.html index 1281af96239..3d96b191ecb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-out.html @@ -24,7 +24,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-out'; ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,255,32, "50,25", "0,255,255,32", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,32, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-over.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-over.html index d742f84dfb8..8e3dafb6357 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.destination-over.html @@ -24,7 +24,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 109,255,146,223, "50,25", "109,255,146,223", 5); +_assertPixelApprox(canvas, 50,25, 109,255,146,223, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.lighter.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.lighter.html index 139f65a5ec1..6271a77594e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.lighter.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.lighter.html @@ -24,7 +24,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'lighter'; ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 191,255,128,255, "50,25", "191,255,128,255", 5); +_assertPixelApprox(canvas, 50,25, 191,255,128,255, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-atop.html index c1d952c2b87..eb7d75449dd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-atop.html @@ -24,7 +24,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-atop'; ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); +_assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-in.html index 23d7273f336..0f2fdad979f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-in.html @@ -24,7 +24,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-out.html index 94a904c018d..fd920855d40 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-out.html @@ -24,7 +24,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-over.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-over.html index 6ecd184b5b3..ce5b6c631b8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.source-over.html @@ -24,7 +24,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-over'; ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 219,255,36,223, "50,25", "219,255,36,223", 5); +_assertPixelApprox(canvas, 50,25, 219,255,36,223, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.xor.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.xor.html index 2114751e09b..68ce901d2af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.xor.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.image.xor.html @@ -24,7 +24,7 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'xor'; ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); +_assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.copy.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.copy.html index 25fb4ed6301..74d9ad5cc2e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.copy.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-atop.html index 4557b11c3ae..5e8f60474ea 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-atop.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-in.html index 3f8ab142410..246bdee5450 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-in.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-out.html index a96e1c84d9b..7227cf41d82 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-out.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-out'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-over.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-over.html index 9943a582ef7..48671cee5be 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.destination-over.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.lighter.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.lighter.html index 7c8f514a0c5..f869b6d1a90 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.lighter.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.lighter.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'lighter'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,255,255, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-atop.html index 0cff288de3f..14041236d2d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-atop.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-atop'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-in.html index 91652da756c..8f1cfcd16fd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-in.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-out.html index 62f7faac53c..55522d54c24 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-out.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-over.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-over.html index ef030462c74..6194526396d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.source-over.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-over'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.xor.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.xor.html index 88089aad16f..431b8a33464 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.xor.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.solid.xor.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'xor'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.copy.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.copy.html index 91cb114f1ed..58673a12f83 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.copy.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,255,191, "50,25", "0,0,255,191", 5); +_assertPixelApprox(canvas, 50,25, 0,0,255,191, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-atop.html index 8e7c441ddf8..4d22016feac 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-atop.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,128,128,191, "50,25", "0,128,128,191", 5); +_assertPixelApprox(canvas, 50,25, 0,128,128,191, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-in.html index 00643667f61..e946c721514 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-in.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,96, "50,25", "0,255,0,96", 5); +_assertPixelApprox(canvas, 50,25, 0,255,0,96, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-out.html index 32c5be9e804..6e248251933 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-out.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-out'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,32, "50,25", "0,255,0,32", 5); +_assertPixelApprox(canvas, 50,25, 0,255,0,32, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-over.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-over.html index bc1792f0b00..4c9c9fbc5fc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.destination-over.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,146,109,223, "50,25", "0,146,109,223", 5); +_assertPixelApprox(canvas, 50,25, 0,146,109,223, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.lighter.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.lighter.html index 2147088fdb7..4b3d1484479 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.lighter.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.lighter.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'lighter'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,128,191,255, "50,25", "0,128,191,255", 5); +_assertPixelApprox(canvas, 50,25, 0,128,191,255, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-atop.html index 6f4f502533b..4b0987764a1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-atop.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-atop'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,64,191,128, "50,25", "0,64,191,128", 5); +_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-in.html index 4cef84f51bb..236f01b49ea 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-in.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,255,96, "50,25", "0,0,255,96", 5); +_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-out.html index 18dc208a517..d597ff9e06e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-out.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,255,96, "50,25", "0,0,255,96", 5); +_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-over.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-over.html index 6045b14cafa..e2f8a7f6f8a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.source-over.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-over'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,36,219,223, "50,25", "0,36,219,223", 5); +_assertPixelApprox(canvas, 50,25, 0,36,219,223, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.xor.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.xor.html index a40168bc150..83027e55204 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.xor.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.transparent.xor.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'xor'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,64,191,128, "50,25", "0,64,191,128", 5); +_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.copy.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.copy.html index b5153b71b66..cd443ae6aa6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.copy.html @@ -26,7 +26,7 @@ ctx.globalCompositeOperation = 'copy'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-atop.html index 1875aa813d5..9182124ecf2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-atop.html @@ -26,7 +26,7 @@ ctx.globalCompositeOperation = 'destination-atop'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-in.html index ea88b111177..7906c159d44 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-in.html @@ -26,7 +26,7 @@ ctx.globalCompositeOperation = 'destination-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.source-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.source-in.html index 18631c94cfb..d46b7d44765 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.source-in.html @@ -26,7 +26,7 @@ ctx.globalCompositeOperation = 'source-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.source-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.source-out.html index 60c82a99061..08a026496d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.fill.source-out.html @@ -26,7 +26,7 @@ ctx.globalCompositeOperation = 'source-out'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.copy.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.copy.html index d53c7113c6c..e909612a5f5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.copy.html @@ -24,8 +24,8 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10); -_assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.destination-atop.html index aedc0993282..d257e2f2af1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.destination-atop.html @@ -24,8 +24,8 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10); -_assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.destination-in.html index f9efba60997..c3e3bc0c47d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.destination-in.html @@ -24,8 +24,8 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10); -_assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.source-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.source-in.html index a01fce3d074..fbcb3c23dfa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.source-in.html @@ -24,8 +24,8 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10); -_assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.source-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.source-out.html index 495cbfd8f8a..03979e6ffed 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.image.source-out.html @@ -24,8 +24,8 @@ ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10); -_assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.copy.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.copy.html index 93a3e9d95df..4bdf1d21761 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.copy.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; var canvas2 = document.createElement('canvas'); ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-atop.html index c2fe2de4007..093b6829536 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-atop.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; var canvas2 = document.createElement('canvas'); ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-in.html index 9c30b6edfc6..dc613bd0619 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-in.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; var canvas2 = document.createElement('canvas'); ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-in.html index 375c50661c6..6616b4ebe4c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-in.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; var canvas2 = document.createElement('canvas'); ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-out.html index 6891ff64eb9..fe2d70f258b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-out.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; var canvas2 = document.createElement('canvas'); ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.copy.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.copy.html index 4fdd6e08a2e..4d6a91de918 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.copy.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat'); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-atop.html index 47ad8ff7fce..bf03da0791d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-atop.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat'); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-in.html index 2dfa056e2a0..f5a5fe3f9df 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-in.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat'); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-in.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-in.html index 0be4fb6bd55..385334d4c66 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-in.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat'); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-out.html b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-out.html index dacae113cb5..ae0be111a98 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-out.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat'); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.3arg.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.3arg.html index 22844edd23f..7669c280491 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.3arg.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.3arg.html @@ -25,10 +25,10 @@ ctx.drawImage(document.getElementById('red.png'), 100, 0); ctx.drawImage(document.getElementById('red.png'), 0, -50); ctx.drawImage(document.getElementById('red.png'), 0, 50); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.5arg.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.5arg.html index fac52a0fc00..3a2f2050946 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.5arg.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.5arg.html @@ -26,10 +26,10 @@ ctx.drawImage(document.getElementById('red.png'), 0, 0, 50, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 50); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html index 3f2a3c6e7db..eddf3c1ea91 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html @@ -22,10 +22,10 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.drawImage(document.getElementById('green.png'), 0, 0, 100, 50, 0, 0, 100, 50); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html index f1abe00330d..d85ae780656 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html @@ -26,10 +26,10 @@ ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, -100, 0, 100, 5 ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 100, 0, 100, 50); ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, -50, 100, 50); ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, 50, 100, 50); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html index b3df0219a33..703c6788948 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html @@ -26,10 +26,10 @@ ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, -50, 0, 50, 50) ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 100, 0, 50, 50); ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, -25, 100, 25); ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, 50, 100, 25); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html index f8f55f97d2d..48ab9376ffb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html @@ -22,10 +22,10 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.drawImage(document.getElementById('rgrg-256x256.png'), 140, 20, 100, 50, 0, 0, 100, 50); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html index aedbb25193e..5946cb30c9a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html @@ -25,14 +25,14 @@ ctx.drawImage(document.getElementById('rgrg-256x256.png'), 0, 0, 256, 256, 0, 0, ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 51, 26); ctx.fillRect(49, 24, 51, 26); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255", 2); -_assertPixelApprox(canvas, 80,20, 0,255,0,255, "80,20", "0,255,0,255", 2); -_assertPixelApprox(canvas, 20,30, 0,255,0,255, "20,30", "0,255,0,255", 2); -_assertPixelApprox(canvas, 80,30, 0,255,0,255, "80,30", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 20,20, 0,255,0,255, 2); +_assertPixelApprox(canvas, 80,20, 0,255,0,255, 2); +_assertPixelApprox(canvas, 20,30, 0,255,0,255, 2); +_assertPixelApprox(canvas, 80,30, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.alpha.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.alpha.html index adec48a6f6f..36db82e4edb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.alpha.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.alpha.html @@ -23,7 +23,7 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0; ctx.drawImage(document.getElementById('red.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html index a7dac171962..b16473e3685 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html @@ -22,7 +22,7 @@ _addTest(function(canvas, ctx) { deferTest(); step_timeout(t.step_func_done(function () { ctx.drawImage(document.getElementById('anim-gr.png'), 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html index c2489159eed..30cad0c7aea 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html @@ -22,7 +22,7 @@ _addTest(function(canvas, ctx) { deferTest(); step_timeout(t.step_func_done(function () { ctx.drawImage(document.getElementById('anim-gr.gif'), 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html index 95b255c5e02..6afc4e713c4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html @@ -20,7 +20,7 @@ var t = async_test("drawImage() of an APNG draws the poster frame"); _addTest(function(canvas, ctx) { ctx.drawImage(document.getElementById('anim-poster-gr.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.broken.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.broken.html index 017048cf732..4b22ffc8ba6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.broken.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.broken.html @@ -22,8 +22,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); var img = document.getElementById('broken.png'); -ctx.drawImage(img, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +assert_throws_dom("INVALID_STATE_ERR", function() { ctx.drawImage(img, 0, 0); }); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.canvas.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.canvas.html index 18348d27bfc..3041d737913 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.canvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.canvas.html @@ -29,17 +29,17 @@ ctx2.fillRect(0, 0, 100, 50); ctx.fillStyle = '#f00'; ctx.drawImage(canvas2, 0, 0); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); ctx.drawImage(document.createElement('canvas'), 0, 0); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.clip.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.clip.html index 876862d0abc..fac98fe949d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.clip.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.rect(-10, -10, 1, 1); ctx.clip(); ctx.drawImage(document.getElementById('red.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.composite.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.composite.html index ae3b32fba07..60204a5d27b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.composite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.composite.html @@ -23,7 +23,7 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; ctx.drawImage(document.getElementById('red.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.floatsource.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.floatsource.html index 0b0f30703ed..4b715f29fea 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.floatsource.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.floatsource.html @@ -20,7 +20,7 @@ var t = async_test(""); _addTest(function(canvas, ctx) { ctx.drawImage(document.getElementById('green.png'), 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html index 471ff440a4d..c684589de06 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); var img = document.getElementById('red.png'); img.src = ""; ctx.drawImage(img, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html index d44e26ab92a..347e750eef9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html @@ -28,7 +28,7 @@ img.src = '../images/red.png'; // until a fetch task in the networking task source is processed, // so the image must not be fully decodable yet: ctx.drawImage(img, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html index f9b21e0e2a7..677a7b856fa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html @@ -23,7 +23,7 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); var img = new Image(); ctx.drawImage(img, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html index e3457e4bee0..5f90f819efe 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html @@ -29,7 +29,7 @@ img.src = '../images/red.png'; // until a fetch task in the networking task source is processed, // so the image must not be fully decodable yet: ctx.drawImage(img, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html index f963d8d169c..c887fd64533 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); var img = document.getElementById('red.png'); img.removeAttribute('src'); ctx.drawImage(img, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedest.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedest.html index 33702398226..8418f635d48 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedest.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedest.html @@ -23,16 +23,16 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 78, 50, 50, 0, 50, 50, -50); ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 128, 50, -50, 100, 50, -50, -50); -_assertPixelApprox(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); -_assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); +_assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedir.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedir.html index a6083eabd02..9a42e5af854 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedir.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedir.html @@ -23,16 +23,16 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.drawImage(document.getElementById('ggrr-256x256.png'), 0, 178, 50, -100, 0, 0, 50, 100); ctx.drawImage(document.getElementById('ggrr-256x256.png'), 0, 78, 50, 100, 50, 100, 50, -100); -_assertPixelApprox(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); -_assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); +_assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativesource.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativesource.html index bc14864eec6..07b154b1f02 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativesource.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativesource.html @@ -23,16 +23,16 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 78, -100, 50, 0, 0, 50, 50); ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 128, -100, -50, 50, 0, 50, 50); -_assertPixelApprox(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); -_assertPixelApprox(canvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); -_assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); -_assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); +_assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); +_assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); +_assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html index cda50dfc5c1..673cd3e64aa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html @@ -323,7 +323,7 @@ ctx.drawImage(red, 0, 0, 100, 50, 0, Infinity, Infinity, 50); ctx.drawImage(red, 0, 0, 100, 50, 0, Infinity, Infinity, Infinity); ctx.drawImage(red, 0, 0, 100, 50, 0, Infinity, 100, Infinity); ctx.drawImage(red, 0, 0, 100, 50, 0, 0, Infinity, Infinity); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nowrap.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nowrap.html index e6f4254e054..71b45a52d43 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nowrap.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nowrap.html @@ -22,9 +22,9 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.drawImage(document.getElementById('redtransparent.png'), -1950, 0, 2000, 50); -_assertPixelApprox(canvas, 45,25, 0,255,0,255, "45,25", "0,255,0,255", 2); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); -_assertPixelApprox(canvas, 55,25, 0,255,0,255, "55,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 45,25, 0,255,0,255, 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +_assertPixelApprox(canvas, 55,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.path.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.path.html index 8c1ae7211b7..7cc5afe0942 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.path.html @@ -23,7 +23,7 @@ ctx.fillStyle = '#0f0'; ctx.rect(0, 0, 100, 50); ctx.drawImage(document.getElementById('red.png'), 0, 0); ctx.fill(); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.self.1.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.self.1.html index 8b0a4c0b779..7c5524b95fd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.self.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.self.1.html @@ -25,10 +25,10 @@ ctx.fillStyle = '#f00'; ctx.fillRect(50, 0, 50, 50); ctx.drawImage(canvas, 50, 0); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.self.2.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.self.2.html index 62a43044153..dbc96dbb3c1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.self.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.self.2.html @@ -27,10 +27,10 @@ ctx.drawImage(canvas, 0, 1); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 2); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html index 6c12a6bdcca..b01232d447d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html @@ -20,7 +20,7 @@ var t = async_test("drawImage() of an SVG image"); _addTest(function(canvas, ctx) { ctx.drawImage(document.getElementById('green.svg'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.transform.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.transform.html index eaf3895eca2..c49070e69cb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.transform.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.transform.html @@ -23,7 +23,7 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.translate(100, 0); ctx.drawImage(document.getElementById('red.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html index 60b8080ff03..90b3eac6974 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html @@ -10,7 +10,7 @@

    2d.drawImage.wrongtype

    Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeError

    -

    Defined in "Web IDL" (draft) +

    Actual output:

    FAIL (fallback content)

    @@ -22,7 +22,6 @@ _addTest(function(canvas, ctx) { assert_throws_js(TypeError, function() { ctx.drawImage(undefined, 0, 0); }); assert_throws_js(TypeError, function() { ctx.drawImage(0, 0, 0); }); assert_throws_js(TypeError, function() { ctx.drawImage("", 0, 0); }); -assert_throws_js(TypeError, function() { ctx.drawImage(document.createElement('p'), 0, 0); }); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.wrongtype.paragraph.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.wrongtype.paragraph.html new file mode 100644 index 00000000000..1acfa22d599 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.wrongtype.paragraph.html @@ -0,0 +1,27 @@ + + +Canvas test: 2d.drawImage.wrongtype.paragraph + + + + + + +

    2d.drawImage.wrongtype.paragraph

    +

    Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeError

    + +

    Defined in "Web IDL" (draft) +

    Actual output:

    +

    FAIL (fallback content)

    + +
      + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.html index b2cd1e82089..3831f3cc864 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 1, 0, 0, 100, 50); ctx.drawImage(document.getElementById('red.png'), 10, 10, 1, 0, 0, 0, 100, 50); ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 0, 0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html index 8739265a8b2..b37cd4d19da 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.drawImage(document.getElementById('red-zerowidth.svg'), 0, 0, 100, 50); ctx.drawImage(document.getElementById('red-zeroheight.svg'), 0, 0, 100, 50); ctx.drawImage(document.getElementById('red-zerosize.svg'), 0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html index 61796364802..3821fff21c0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html @@ -22,7 +22,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.clearRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html index 0c6deaaaada..da264239441 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html @@ -27,7 +27,7 @@ ctx.clip(); ctx.clearRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 16); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html index cd27ecf2bc9..3a228ae7ab3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html @@ -23,7 +23,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.1; ctx.clearRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html index 54976fe3f3a..2f49b808600 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html @@ -23,7 +23,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.clearRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html index 2124535f2be..13ad1fb8120 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html @@ -25,10 +25,10 @@ ctx.clearRect(0, 0, 50, 25); ctx.clearRect(100, 0, -50, 25); ctx.clearRect(0, 50, 50, -25); ctx.clearRect(100, 50, -50, -25); -_assertPixel(canvas, 25,12, 0,0,0,0, "25,12", "0,0,0,0"); -_assertPixel(canvas, 75,12, 0,0,0,0, "75,12", "0,0,0,0"); -_assertPixel(canvas, 25,37, 0,0,0,0, "25,37", "0,0,0,0"); -_assertPixel(canvas, 75,37, 0,0,0,0, "75,37", "0,0,0,0"); +_assertPixel(canvas, 25,12, 0,0,0,0); +_assertPixel(canvas, 75,12, 0,0,0,0); +_assertPixel(canvas, 25,37, 0,0,0,0); +_assertPixel(canvas, 75,37, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html index 18ce6308132..56232594e10 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html @@ -44,7 +44,7 @@ ctx.clearRect(0, Infinity, Infinity, 50); ctx.clearRect(0, Infinity, Infinity, Infinity); ctx.clearRect(0, Infinity, 100, Infinity); ctx.clearRect(0, 0, Infinity, Infinity); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.path.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.path.html index d0dbc6cd2d0..8d837adc3a3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.path.html @@ -24,7 +24,7 @@ ctx.beginPath(); ctx.rect(0, 0, 100, 50); ctx.clearRect(0, 0, 16, 16); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html index 89c051b5cce..e65b46b23cd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html @@ -26,7 +26,7 @@ ctx.shadowBlur = 0; ctx.shadowOffsetX = 0; ctx.shadowOffsetY = 50; ctx.clearRect(0, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html index a3ca992af15..9e524c36f21 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.scale(10, 10); ctx.translate(0, 5); ctx.clearRect(0, -5, 10, 5); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html index 45830a1683b..ea1fff31cb8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.clearRect(0, 0, 100, 0); ctx.clearRect(0, 0, 0, 50); ctx.clearRect(0, 0, 0, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html index a440dfd847b..14c04829a75 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html @@ -21,7 +21,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html index ccbe776889a..bdd269e1ad0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html @@ -28,7 +28,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 16); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html index 0a2fa3d4c8f..6f754581b22 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html @@ -26,10 +26,10 @@ ctx.fillRect(0, 0, 50, 25); ctx.fillRect(100, 0, -50, 25); ctx.fillRect(0, 50, 50, -25); ctx.fillRect(100, 50, -50, -25); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html index 98b19cee4fd..bf0ea501a07 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html @@ -45,7 +45,7 @@ ctx.fillRect(0, Infinity, Infinity, 50); ctx.fillRect(0, Infinity, Infinity, Infinity); ctx.fillRect(0, Infinity, 100, Infinity); ctx.fillRect(0, 0, Infinity, Infinity); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.path.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.path.html index d13144925ab..3d073c41f60 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.path.html @@ -25,7 +25,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 16, 16); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html index 35c73e98a8a..78f3f4d3677 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html @@ -26,7 +26,7 @@ ctx.shadowBlur = 0; ctx.shadowOffsetX = 0; ctx.shadowOffsetY = 50; ctx.fillRect(0, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html index 409faaba0bd..6892747651e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html @@ -23,7 +23,7 @@ ctx.scale(10, 10); ctx.translate(0, 5); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -5, 10, 5); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html index 44b50244eb6..915347713fa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html @@ -25,7 +25,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 0); ctx.fillRect(0, 0, 0, 50); ctx.fillRect(0, 0, 0, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html index c50fb1b969d..299bb8a39ee 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html @@ -22,7 +22,7 @@ _addTest(function(canvas, ctx) { ctx.strokeStyle = '#0f0'; ctx.lineWidth = 50; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html index 1da47f43d95..5f35cd07be3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html @@ -29,7 +29,7 @@ ctx.lineWidth = 50; ctx.strokeRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 16); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html index 300aa59ecae..3e80a77f744 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html @@ -23,7 +23,7 @@ ctx.globalAlpha = 0; ctx.strokeStyle = '#f00'; ctx.lineWidth = 50; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html index 5b6481803d0..ce52dffd8c2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html @@ -23,7 +23,7 @@ ctx.globalCompositeOperation = 'source-in'; ctx.strokeStyle = '#f00'; ctx.lineWidth = 50; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html index 5dfdfee14f6..617d56f125c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html @@ -27,10 +27,10 @@ ctx.strokeRect(12, 12, 26, 1); ctx.strokeRect(88, 12, -26, 1); ctx.strokeRect(12, 38, 26, -1); ctx.strokeRect(88, 38, -26, -1); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html index 27829cb31f0..3f98e5e2feb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html @@ -46,7 +46,7 @@ ctx.strokeRect(0, Infinity, Infinity, 50); ctx.strokeRect(0, Infinity, Infinity, Infinity); ctx.strokeRect(0, Infinity, 100, Infinity); ctx.strokeRect(0, 0, Infinity, Infinity); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html index 2dcf83d7001..5d88373525a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html @@ -26,7 +26,7 @@ ctx.lineWidth = 5; ctx.strokeRect(0, 0, 16, 16); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html index 0c6928b74d6..a8c7ba314a3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html @@ -29,7 +29,7 @@ ctx.shadowOffsetY = 50; ctx.strokeStyle = '#f00'; ctx.lineWidth = 50; ctx.strokeRect(0, -75, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html index 436dcc18d2e..9fe89042abf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html @@ -24,7 +24,7 @@ ctx.translate(0, 5); ctx.strokeStyle = '#0f0'; ctx.lineWidth = 5; ctx.strokeRect(2.5, -2.6, 5, 0.2); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html index f8b6cdca623..188699d6a8d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html @@ -22,7 +22,7 @@ _addTest(function(canvas, ctx) { ctx.strokeStyle = '#f00'; ctx.lineWidth = 250; ctx.strokeRect(50, 25, 0, 0); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html index 78045a4d9f6..2e28b90dd2a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html @@ -24,7 +24,7 @@ ctx.lineWidth = 250; ctx.lineCap = 'round'; ctx.lineJoin = 'round'; ctx.strokeRect(50, 25, 0, 0); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html index 91038007477..5831c228fff 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html @@ -22,7 +22,7 @@ _addTest(function(canvas, ctx) { ctx.strokeStyle = '#0f0'; ctx.lineWidth = 50; ctx.strokeRect(0, 25, 100, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html index 435a77f3f34..6a09e8eaf95 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html @@ -23,7 +23,7 @@ ctx.strokeStyle = '#f00'; ctx.lineWidth = 250; ctx.lineCap = 'round'; ctx.strokeRect(100, 25, 100, 0); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html index cb1a7537aea..c6cc50ca9b5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html @@ -23,7 +23,7 @@ ctx.strokeStyle = '#0f0'; ctx.lineWidth = 250; ctx.lineJoin = 'round'; ctx.strokeRect(100, 25, 100, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html index 3aecdd14fcc..71a7cae30a1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html @@ -34,12 +34,12 @@ step_timeout(t.step_func_done(function () { ctx.fillStyle = '#0f0'; ctx.textAlign = 'center'; ctx.fillText('DD', 50, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html index 5e9f0d20126..5bd7aa10b02 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html @@ -34,12 +34,12 @@ step_timeout(t.step_func_done(function () { ctx.fillStyle = '#0f0'; ctx.textAlign = 'end'; ctx.fillText('DD', 100, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html index 527fec9a3c4..d37a29c558d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html @@ -34,12 +34,12 @@ step_timeout(t.step_func_done(function () { ctx.fillStyle = '#0f0'; ctx.textAlign = 'end'; ctx.fillText('DD', 0, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html index a9626bacac0..5a4bdb6abb9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html @@ -34,12 +34,12 @@ step_timeout(t.step_func_done(function () { ctx.fillStyle = '#0f0'; ctx.textAlign = 'left'; ctx.fillText('DD', 0, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html index e62ad304168..29e009e7224 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html @@ -34,12 +34,12 @@ step_timeout(t.step_func_done(function () { ctx.fillStyle = '#0f0'; ctx.textAlign = 'right'; ctx.fillText('DD', 100, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html index af4c77179eb..d74a4b89e41 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html @@ -34,12 +34,12 @@ step_timeout(t.step_func_done(function () { ctx.fillStyle = '#0f0'; ctx.textAlign = 'start'; ctx.fillText('DD', 0, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html index 2492482e80c..8dd671cf204 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html @@ -34,12 +34,12 @@ step_timeout(t.step_func_done(function () { ctx.fillStyle = '#0f0'; ctx.textAlign = 'start'; ctx.fillText('DD', 100, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png index 1e313371d82..70d7b046cb2 100644 Binary files a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png and b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png differ diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html index 300c4539d33..50c67293492 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html @@ -33,10 +33,10 @@ step_timeout(t.step_func_done(function () { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillText('DD', 0, 37.5, 100); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html index 8de1ac69eac..1e133a6736c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html @@ -33,10 +33,10 @@ step_timeout(t.step_func_done(function () { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#f00'; ctx.fillText('EEEE', -50, 37.5, 40); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png index 1e313371d82..70d7b046cb2 100644 Binary files a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png and b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png differ diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html index 9cbace645bb..cb1e7dbae02 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html @@ -33,8 +33,8 @@ ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 5,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html index f6435a6af07..9adcf3560d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html @@ -33,10 +33,10 @@ step_timeout(t.step_func_done(function () { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillText('AA', 0, 50); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html index 7a21dbc40e7..6ccb0c020af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html @@ -32,10 +32,10 @@ step_timeout(t.step_func_done(function () { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillText('AA', 0, 50); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html index 13c27b6e029..457c48c3d1b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html @@ -33,10 +33,10 @@ ctx.fillText('AA', 0, 50); deferTest(); step_timeout(t.step_func_done(function () { ctx.fillText('AA', 0, 50); - _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html index 6e1ea12a595..26f8114e20e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html @@ -33,8 +33,8 @@ step_timeout(t.step_func_done(function () { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillText('E EE', -100, 37.5); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html index 9c1d2f758c7..e105ec358e0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html @@ -33,8 +33,8 @@ step_timeout(t.step_func_done(function () { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillText('E\x0b EE', -150, 37.5); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }), 500); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png index b04566f5c66..fb3b5b830d3 100644 Binary files a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png and b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png differ diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html index 39636e2322b..728765c1fe7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html @@ -34,8 +34,8 @@ ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 5,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html index 417d698ac33..f6c3826317b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html @@ -20,10 +20,10 @@ var t = async_test("Testing basic functionalities of fontKerning for canvas"); _addTest(function(canvas, ctx) { _assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\""); -ctx.fontKerning = "Normal"; +ctx.fontKerning = "normal"; _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\""); width_normal = ctx.measureText("TAWATAVA").width; -ctx.fontKerning = "None"; +ctx.fontKerning = "none"; _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\""); width_none = ctx.measureText("TAWATAVA").width; _assert(width_normal < width_none, "width_normal < width_none"); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html new file mode 100644 index 00000000000..0ad92181a06 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html @@ -0,0 +1,31 @@ + + +HTML Canvas Test: the 'direction' property + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/direction-ltr.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/direction-ltr.html new file mode 100644 index 00000000000..42a39ac589c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/direction-ltr.html @@ -0,0 +1,31 @@ + + +HTML Canvas Test: the 'direction' property + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html new file mode 100644 index 00000000000..3cc67c69f58 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html @@ -0,0 +1,31 @@ + + +HTML Canvas Test: the 'direction' property + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-default-ref.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-default-ref.html new file mode 100644 index 00000000000..cef6df259c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-default-ref.html @@ -0,0 +1,27 @@ + + +HTML Canvas Reference: the 'direction' property + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-rtl-ref.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-rtl-ref.html new file mode 100644 index 00000000000..010526d667b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-rtl-ref.html @@ -0,0 +1,27 @@ + + +HTML Canvas Reference: the 'direction' property + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html index 9850817c114..cc48c2e1476 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html @@ -21,23 +21,23 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = new CSSHSL(CSS.deg(180), 0.5, 0.5); ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 64,191,191,255, "50,25", "64,191,191,255", 3); +_assertPixelApprox(canvas, 50,25, 64,191,191,255, 3); const color = new CSSHSL(CSS.deg(180), 1, 1); ctx.fillStyle = color; _assertSame(ctx.fillStyle, '#ffffff', "ctx.fillStyle", "'#ffffff'"); ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255"); +_assertPixel(canvas, 50,25, 255,255,255,255); color.l = 0.5; ctx.fillStyle = color; _assertSame(ctx.fillStyle, '#00ffff', "ctx.fillStyle", "'#00ffff'"); ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255"); +_assertPixel(canvas, 50,25, 0,255,255,255); ctx.fillStyle = new CSSRGB(1, 0, 1).toHSL(); _assertSame(ctx.fillStyle, '#ff00ff', "ctx.fillStyle", "'#ff00ff'"); ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 255,0,255,255, "50,25", "255,0,255,255"); +_assertPixel(canvas, 50,25, 255,0,255,255); color.h = CSS.deg(120); color.s = 1; diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSRGB.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSRGB.html index f916b8f6751..0e3fcd4f671 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSRGB.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSRGB.html @@ -22,18 +22,18 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = new CSSRGB(1, 0, 1); _assertSame(ctx.fillStyle, '#ff00ff', "ctx.fillStyle", "'#ff00ff'"); ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 255,0,255,255, "50,25", "255,0,255,255"); +_assertPixel(canvas, 50,25, 255,0,255,255); const color = new CSSRGB(0, CSS.percent(50), 0); ctx.fillStyle = color; _assertSame(ctx.fillStyle, '#008000', "ctx.fillStyle", "'#008000'"); ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,128,0,255, "50,25", "0,128,0,255"); +_assertPixel(canvas, 50,25, 0,128,0,255); color.g = 0; ctx.fillStyle = color; _assertSame(ctx.fillStyle, '#000000', "ctx.fillStyle", "'#000000'"); ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); +_assertPixel(canvas, 50,25, 0,0,0,255); color.alpha = 0; ctx.fillStyle = color; @@ -42,12 +42,12 @@ ctx.reset(); color.alpha = 0.5; ctx.fillStyle = color; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,128, "50,25", "0,0,0,128"); +_assertPixel(canvas, 50,25, 0,0,0,128); ctx.fillStyle = new CSSHSL(CSS.deg(0), 1, 1).toRGB(); _assertSame(ctx.fillStyle, '#ffffff', "ctx.fillStyle", "'#ffffff'"); ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255"); +_assertPixel(canvas, 50,25, 255,255,255,255); color.alpha = 1; color.g = 1; diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.colorObject.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.colorObject.html index 969d2f34cb4..02408138c24 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.colorObject.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.colorObject.html @@ -21,22 +21,22 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = {r: 1, g: 0, b: 0}; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 255,0,0,255, "50,25", "255,0,0,255"); +_assertPixel(canvas, 50,25, 255,0,0,255); ctx.fillStyle = {r: 0, g: 0, b: 1}; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,255,255, "50,25", "0,0,255,255"); +_assertPixel(canvas, 50,25, 0,0,255,255); ctx.fillStyle = {r: 0.2, g: 0.4, b: 0.6}; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 51,102,153,255, "50,25", "51,102,153,255"); +_assertPixel(canvas, 50,25, 51,102,153,255); ctx.fillStyle = {r: 0, g: 1, b: 0}; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); ctx.fillStyle = {r: -1, g: 0, b: 0}; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); +_assertPixel(canvas, 50,25, 0,0,0,255); ctx.fillStyle = {r: 0, g: 2, b: 0}; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.colorObject.transparency.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.colorObject.transparency.html index ffc16d73ac2..09a8eacdeca 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.colorObject.transparency.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.colorObject.transparency.html @@ -21,19 +21,19 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = {r: 0, g: 1, b: 0, a: 0}; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); ctx.clearRect(0, 0, 100, 50); ctx.fillStyle = {r: 0, g: 1, b: 0, a: -1}; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); ctx.clearRect(0, 0, 100, 50); ctx.fillStyle = {r: 0, g: 1, b: 0, a: 0.5}; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,128, "50,25", "0,255,0,128"); +_assertPixel(canvas, 50,25, 0,255,0,128); ctx.clearRect(0, 0, 100, 50); ctx.fillStyle = {r: 0, g: 1, b: 0, a: 1}; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html new file mode 100644 index 00000000000..4101bf4ce9d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html @@ -0,0 +1,28 @@ + + +Canvas test: 2d.fillStyle.get.halftransparent + + + + + + +

      2d.fillStyle.get.halftransparent

      +

      + + +

      Actual output:

      +

      FAIL (fallback content)

      + +
        + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidstring.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidstring.html index e9473b6a189..16bb9235c9b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidstring.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidstring.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillStyle = 'invalid'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidtype.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidtype.html index 3434e336607..d218368359f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidtype.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidtype.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillStyle = null; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html index 7f8d28cf6cd..12a338e066a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html index 3d0b4652867..71db4187ac0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html index 0b2ab3b973c..6c84e94b031 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html index 85a7f728359..d37965702e0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html index 357a6ba48f8..62ad91f1dba 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html index 4fd50152afd..9c879828d0a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html index 6f5ca4f90ed..c3e2334d445 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html index bf45c6ebb6b..b9baf11e2b4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html index 54b5661e635..274585c3c9f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html index fd950ff0122..e4a5cbc0942 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html index 0ed5e85995c..976bf71b87f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html index 4a816ac7768..16100e6a94c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html index 87a81e18409..eb0158e392c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html index 89af5de587c..c1b7c566b3a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html index fd54bde52ae..06aa355d251 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html index 553a567238d..eb66e2748aa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html index 992074987d8..0c13368ac26 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html index 5ec6d24e3a7..fd2cedd56d9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html index 4267b6e6ad7..7fa79bf07d1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0, 255.0, 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html index d4e21c3d0f7..89ef2183a74 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0, 255, 0, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html index 2842aeab688..6be6f060671 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0, 255, 0, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html index a4d1bad77f8..23c69bd939e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0 255 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html index ba2c4599db4..b853fbf3537 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0 255 0 / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html index 2540613e706..8a62fa22d8e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0 255 0 / 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html index f480a3773be..66834dd7064 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255.0, 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html index 97b0bdd8186..4a4cb78c62a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255, 0, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html index 7e3e2605feb..51e94687861 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255, 0, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html index d7a85210e00..07a65ac8f36 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0 255 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html index ac36578800d..2f798f47f31 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0 255 0 / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html index 7d559caa1d1..5ca7564a058 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0 255 0 / 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html index 2de43c8ddfe..e48d05ceabb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html @@ -23,7 +23,7 @@ canvas.setAttribute('style', 'color: #0f0'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'currentColor'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html index 13541d822ec..f298af5adb6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html @@ -24,7 +24,7 @@ ctx.fillStyle = '#f00'; ctx.fillStyle = 'currentColor'; canvas.setAttribute('style', 'color: #f00'); ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html index 16e7ff0f7e2..2642b888e9d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html @@ -35,7 +35,7 @@ ctx.drawImage(canvas2, 0, 0); document.body.parentNode.removeAttribute('style'); document.body.removeAttribute('style'); -_assertPixel(canvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); +_assertPixel(canvas, 50,25, 0,0,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html index 48d3d80b280..9fbb2750147 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html index 61845d95886..fc79cc7d3fc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = '#0f0f'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html index 1dd71fa0ebb..b946c30e174 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = '#00fF00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html index 15c7cb47e24..5865e98f3f5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = '#00ff00ff'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html index d24c25c57d2..e169904889b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 100%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html index 124144c3617..ec61f580eb6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl( -240 , 100% , 50% )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html index 9a82ded6089..0ec6fce487b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(360120, 100%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html index 02c73656780..b3119da927d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(-360240, 100%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html index 619d49eb321..1867bba7cb8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html index cfe735736d0..7a5e764d95f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(+120, +100%, +50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html index 50271c3c3d7..f623320cd53 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 200%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html index aebf22bcff5..0293acd9eb4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, -200%, 49.9%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255"); +_assertPixel(canvas, 50,25, 127,127,127,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html index aa73a581d2d..2ea1a5115a5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 100%, 200%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255"); +_assertPixel(canvas, 50,25, 255,255,255,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html index b63144c667c..add688ebc91 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 100%, -200%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); +_assertPixel(canvas, 50,25, 0,0,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html index d9721fd0ebc..38427cfc3ac 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 50%, 0.499)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,127, "50,25", "0,255,0,127"); +_assertPixel(canvas, 50,25, 0,255,0,127); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html index ec6b3057f94..01a83676ad8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla( 120.0 , 100.0% , 50.0% , 1 )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html index b45507e9afd..b7914e3a021 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 200%, 50%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html index e83535ed6ff..94b62374560 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, -200%, 49.9%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255"); +_assertPixel(canvas, 50,25, 127,127,127,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html index e04d97ae08a..bc2466b6b57 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 200%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255"); +_assertPixel(canvas, 50,25, 255,255,255,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html index 8fbf870aa54..35c0d00011b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, -200%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); +_assertPixel(canvas, 50,25, 0,0,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html index f9cf1ec2ed6..13fac2fd589 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 50%, 2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html index b150cdaa0f1..ba76ad6a99b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 0%, -2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.html4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.html4.html index e345457d9e7..ae54397c924 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.html4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.html4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'limE'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html index 3841c5e7cd2..1850125baa4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html index 6926a867211..b4fd4a6fd97 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html index e2652c43d38..224da3a981d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html index 1a09a1ecc46..0e4b77ba80b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0 100% 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html index bfeb3c5a522..08e03db12f3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html index b5caa804956..62f82953fdb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html index d9ce0ceb97b..d6b78e923d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html index e8b762de6d6..c5717406a20 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html index 4c3ba2e8e3d..01ff94e8b02 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html index caddf3cb76e..2b782e35fc1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html index 3f6edbfd5ad..54849f6c559 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html index fff8c8bc45c..97d5748aaff 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(0 0 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html index 4dab0570685..666c3c3d3e5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(0, 0, 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html index 29d99e4ca9e..fefe336c19f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html index 9d9d9090e9d..bf12006745c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html index 7c82f2827eb..a4e4e906afc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html index d0cd0132a40..04c67e343ef 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html index 8131812166e..7027db50cad 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#f0'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html index 1999d07f0aa..ae7a32a5a4a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#g00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html index 958d667a7c1..d355309c19b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#fg00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html index 9a3df4eacce..0b80566b8cf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#ff000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html index 79ff8867696..02b75c3aba6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#fg0000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html index 8567854daec..6a73bc1f75c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#ff0000f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html index 696192024be..3a03959ec4e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#fg0000ff'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html index e85c6215011..38a01fc107a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0%, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html index 9991412ce6d..6783a18e873 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(z, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html index 4fee496c743..8f9137e4d72 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 0, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html index 9031dab72f2..56c7228b410 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html index 77c3c1155f7..df84f6854f5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100.%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html index 580323ffcaf..2a7d0753d90 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 50%,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html index bef560790c9..5d22135c5cf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0%, 100%, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html index c87505ceb79..f1a29cdac2d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 0, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html index 296bd4bb0a7..e48d086ef23 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 0, 50%, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html index 3517b6593af..80433bcffd6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'darkbrown'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html index c67a36733eb..e1a49f97c9d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'firebrick1'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html index 0ef250dc487..c8a7f2e6588 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'red blue'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html index 341bb1ace0c..b9c491fd310 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '"red"'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html index b612be95fe4..15dab0bef5b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '"red'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html index a1df321433f..7ab4a42fa8c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255.0, 0, 0,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html index 3a6d359b118..1aa36bb32bd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(100%, 0, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html index e756704abe8..7ce48c1b7e9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255, - 1, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html index e66008ba563..d3bd36dcf2d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(100%, 0, 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html index 699093be6cf..0f468b66fad 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, 1. 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html index ae3556541a9..20da461ad9e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, 1.)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html index 9c35b2f8ed3..6dc36ea341d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, '; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html index b93d0a27a98..86afaa70977 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html index 8bd83d090c7..dfaac146371 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html @@ -10,7 +10,7 @@

        2d.fillStyle.parse.rgb-clamp-1

        -

        Assumes colours are clamped to [0,255]. +

        Assumes colors are clamped to [0,255].

        Actual output:

        FAIL (fallback content)

        Expected output:

        @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(-1000, 1000, -1000)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html index c6889656f75..5247f467318 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html @@ -10,7 +10,7 @@

        2d.fillStyle.parse.rgb-clamp-2

        -

        Assumes colours are clamped to [0,255]. +

        Assumes colors are clamped to [0,255].

        Actual output:

        FAIL (fallback content)

        Expected output:

        @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(-200%, 200%, -200%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html index 2336c260f37..8db471c3c05 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html @@ -10,7 +10,7 @@

        2d.fillStyle.parse.rgb-clamp-3

        -

        Assumes colours are clamped to [0,255]. +

        Assumes colors are clamped to [0,255].

        Actual output:

        FAIL (fallback content)

        Expected output:

        @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(-2147483649, 4294967298, -18446744073709551619)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html index 61f0ce14611..e7a210f48d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html @@ -10,7 +10,7 @@

        2d.fillStyle.parse.rgb-clamp-4

        -

        Assumes colours are clamped to [0,255]. +

        Assumes colors are clamped to [0,255].

        Actual output:

        FAIL (fallback content)

        Expected output:

        @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(-1000000000000000000000000000000000000000, 1000000000000000000000000000000000000000, -1000000000000000000000000000000000000000)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html index 3484e363e24..1f1e9ef70fb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html @@ -10,7 +10,7 @@

        2d.fillStyle.parse.rgb-clamp-5

        -

        Assumes colours are clamped to [0,255]. +

        Assumes colors are clamped to [0,255].

        Actual output:

        FAIL (fallback content)

        Expected output:

        @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html index 2319cda87d9..b69c779a7a9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0, 255, 0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html index 55e2f52625a..7d9d5eda56c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0,255,0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html index 79400949dc2..ea5529c0ee6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0% ,100% ,0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html index e7215b0d085..c5816e0660f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255, 0, -2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html index 04e9833041b..69a55cfc9a0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255, 0, 2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html index 68ff65e8810..12c296dcfb3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255, 0, 1'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html index cfd9d03b42c..41968883df3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba( 0 , 255 , 0 , .499 )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,127, "50,25", "0,255,0,127"); +_assertPixel(canvas, 50,25, 0,255,0,127); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html index 88aaa2e9035..f7fb6185ea0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba( 0 , 255 , 0 , 0.499 )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,127, "50,25", "0,255,0,127"); +_assertPixel(canvas, 50,25, 0,255,0,127); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html index 57df2a5be1f..3f1a7305bde 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0%,100%,0%,0.499)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,127, "50,25", "0,255,0,127"); +_assertPixel(canvas, 50,25, 0,255,0,127); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html index bc7cb30b468..efa7eb8928a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba( 0 , 255 , 0 , 1 )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html index 258f5cfc044..eaf917e2c9c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba( 0 , 255 , 0 , 1.0 )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html index d527715c664..c525f824a92 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba( 0 , 255 , 0 , +1 )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html index e5f4655755d..b7f96741bd5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba( -0 , 255 , +0 , 1 )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html index 491749330ee..9a9a280c477 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'gray'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 128,128,128,255, "50,25", "128,128,128,255"); +_assertPixel(canvas, 50,25, 128,128,128,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html index da98bd2d2df..26c2abec09c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'grey'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 128,128,128,255, "50,25", "128,128,128,255"); +_assertPixel(canvas, 50,25, 128,128,128,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html index efccb35d327..9ab01f0cbb6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'transparent'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html index 7ebeeace5b4..d7730a55045 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html @@ -23,7 +23,7 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillStyle = 'TrAnSpArEnT'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html index c6a2853d795..f61b614f705 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html @@ -27,8 +27,8 @@ g.addColorStop(0.50, "#0f0"); g.addColorStop(0.75, "#f00"); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 25,15, 255,0,0,255, "25,15", "255,0,0,255"); -_assertPixel(canvas, 75,40, 0,255,0,255, "75,40", "0,255,0,255"); +_assertPixelApprox(canvas, 25,15, 255,0,0,255, 3); +_assertPixelApprox(canvas, 75,40, 0,255,0,255, 3); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html index 5aa8a58f1d0..ffe95866584 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html @@ -27,8 +27,8 @@ g.addColorStop(0.50, "#0f0"); g.addColorStop(0.75, "#f00"); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 25,15, 255,0,0,255, "25,15", "255,0,0,255"); -_assertPixel(canvas, 75,40, 0,255,0,255, "75,40", "0,255,0,255"); +_assertPixelApprox(canvas, 25,15, 255,0,0,255, 3); +_assertPixelApprox(canvas, 75,40, 0,255,0,255, 3); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.empty.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.empty.html index c5fc908df31..bdf702fb49c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.empty.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); var g = ctx.createLinearGradient(0, 0, 0, 50); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html index ea330abe310..e0ed47e03fe 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html @@ -26,9 +26,9 @@ g.addColorStop(0, 'rgba(0,0,255, 0)'); g.addColorStop(1, 'rgba(0,0,255, 1)'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 25,25, 191,191,63,255, "25,25", "191,191,63,255", 3); -_assertPixelApprox(canvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255", 3); -_assertPixelApprox(canvas, 75,25, 63,63,191,255, "75,25", "63,63,191,255", 3); +_assertPixelApprox(canvas, 25,25, 191,191,63,255, 3); +_assertPixelApprox(canvas, 50,25, 127,127,127,255, 3); +_assertPixelApprox(canvas, 75,25, 63,63,191,255, 3); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.color.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.color.html new file mode 100644 index 00000000000..e6806d7df10 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.color.html @@ -0,0 +1,34 @@ + + +Canvas test: 2d.gradient.interpolate.color + + + + + + +

        2d.gradient.interpolate.color

        +

        + + +

        Actual output:

        +

        FAIL (fallback content)

        +

        Expected output:

        +

          + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.colour.png b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.color.png similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.colour.png rename to tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.color.png diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html new file mode 100644 index 00000000000..33fee527d4b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html @@ -0,0 +1,34 @@ + + +Canvas test: 2d.gradient.interpolate.coloralpha + + + + + + +

          2d.gradient.interpolate.coloralpha

          +

          + + +

          Actual output:

          +

          FAIL (fallback content)

          +

          Expected output:

          +

            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.png b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.png similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.png rename to tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.png diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.colour.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.colour.html deleted file mode 100644 index 79e27695b5d..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.colour.html +++ /dev/null @@ -1,34 +0,0 @@ - - -Canvas test: 2d.gradient.interpolate.colour - - - - - - -

            2d.gradient.interpolate.colour

            -

            - - -

            Actual output:

            -

            FAIL (fallback content)

            -

            Expected output:

            -

              - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html deleted file mode 100644 index cdeeaf9328b..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html +++ /dev/null @@ -1,34 +0,0 @@ - - -Canvas test: 2d.gradient.interpolate.colouralpha - - - - - - -

              2d.gradient.interpolate.colouralpha

              -

              - - -

              Actual output:

              -

              FAIL (fallback content)

              -

              Expected output:

              -

                - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html index ed1792cde16..adfac66d57d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html @@ -26,9 +26,9 @@ g.addColorStop(0.5, '#0ff'); g.addColorStop(1, '#f0f'); ctx.fillStyle = g; ctx.fillRect(0, 0, 200, 50); -_assertPixelApprox(canvas, 50,25, 127,255,127,255, "50,25", "127,255,127,255", 3); -_assertPixelApprox(canvas, 100,25, 0,255,255,255, "100,25", "0,255,255,255", 3); -_assertPixelApprox(canvas, 150,25, 127,127,255,255, "150,25", "127,127,255,255", 3); +_assertPixelApprox(canvas, 50,25, 127,255,127,255, 3); +_assertPixelApprox(canvas, 100,25, 0,255,255,255, 3); +_assertPixelApprox(canvas, 150,25, 127,127,255,255, 3); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.outside.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.outside.html index 4ce8d0fe19c..abad0b5cb01 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.outside.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.outside.html @@ -28,9 +28,9 @@ g.addColorStop(0.6, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 20,25, 0,255,0,255, "20,25", "0,255,0,255", 2); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); -_assertPixelApprox(canvas, 80,25, 0,255,0,255, "80,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 20,25, 0,255,0,255, 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +_assertPixelApprox(canvas, 80,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html index 60cc806f1ea..ecd61728c25 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html @@ -39,12 +39,12 @@ g.addColorStop(0.5, '#ff0'); g.addColorStop(1, '#00f'); ctx.fillStyle = g; ctx.fillRect(0, 0, 200, 50); -_assertPixelApprox(canvas, 49,25, 0,0,255,255, "49,25", "0,0,255,255", 16); -_assertPixelApprox(canvas, 51,25, 255,255,0,255, "51,25", "255,255,0,255", 16); -_assertPixelApprox(canvas, 99,25, 0,0,255,255, "99,25", "0,0,255,255", 16); -_assertPixelApprox(canvas, 101,25, 255,255,0,255, "101,25", "255,255,0,255", 16); -_assertPixelApprox(canvas, 149,25, 0,0,255,255, "149,25", "0,0,255,255", 16); -_assertPixelApprox(canvas, 151,25, 255,255,0,255, "151,25", "255,255,0,255", 16); +_assertPixelApprox(canvas, 49,25, 0,0,255,255, 16); +_assertPixelApprox(canvas, 51,25, 255,255,0,255, 16); +_assertPixelApprox(canvas, 99,25, 0,0,255,255, 16); +_assertPixelApprox(canvas, 101,25, 255,255,0,255, 16); +_assertPixelApprox(canvas, 149,25, 0,0,255,255, 16); +_assertPixelApprox(canvas, 151,25, 255,255,0,255, 16); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html index 3e7e4010f13..3b544695058 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html @@ -30,11 +30,11 @@ for (var p = 0; p < ps.length; ++p) } ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 30,25, 0,255,0,255, "30,25", "0,255,0,255"); -_assertPixel(canvas, 40,25, 0,255,0,255, "40,25", "0,255,0,255"); -_assertPixel(canvas, 60,25, 0,255,0,255, "60,25", "0,255,0,255"); -_assertPixel(canvas, 80,25, 0,255,0,255, "80,25", "0,255,0,255"); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 30,25, 0,255,0,255); +_assertPixel(canvas, 40,25, 0,255,0,255); +_assertPixel(canvas, 60,25, 0,255,0,255); +_assertPixel(canvas, 80,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.solid.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.solid.html index bd546aa5be3..f6fa97475b1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.solid.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.solid.html @@ -24,7 +24,7 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html index fc742d4833b..5297996c065 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html @@ -24,9 +24,9 @@ g.addColorStop(0, '#ff0'); g.addColorStop(1, '#00f'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,12, 191,191,63,255, "50,12", "191,191,63,255", 10); -_assertPixelApprox(canvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255", 5); -_assertPixelApprox(canvas, 50,37, 63,63,191,255, "50,37", "63,63,191,255", 10); +_assertPixelApprox(canvas, 50,12, 191,191,63,255, 10); +_assertPixelApprox(canvas, 50,25, 127,127,127,255, 5); +_assertPixelApprox(canvas, 50,37, 63,63,191,255, 10); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html index 13eaae8fbeb..8c6b944cfff 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html @@ -28,7 +28,7 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.rect(0, 0, 100, 50); ctx.fill(); -_assertPixel(canvas, 40,20, 0,255,0,255, "40,20", "0,255,0,255"); +_assertPixel(canvas, 40,20, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html index 816480977e4..3a7fe18a347 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html @@ -27,7 +27,7 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 40,20, 0,255,0,255, "40,20", "0,255,0,255"); +_assertPixel(canvas, 40,20, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html index 2203a901492..e5fb6482027 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#f00'); ctx.strokeStyle = g; ctx.rect(20, 20, 60, 10); ctx.stroke(); -_assertPixel(canvas, 19,19, 0,255,0,255, "19,19", "0,255,0,255"); -_assertPixel(canvas, 20,19, 0,255,0,255, "20,19", "0,255,0,255"); -_assertPixel(canvas, 21,19, 0,255,0,255, "21,19", "0,255,0,255"); -_assertPixel(canvas, 19,20, 0,255,0,255, "19,20", "0,255,0,255"); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); -_assertPixel(canvas, 21,20, 0,255,0,255, "21,20", "0,255,0,255"); -_assertPixel(canvas, 19,21, 0,255,0,255, "19,21", "0,255,0,255"); -_assertPixel(canvas, 20,21, 0,255,0,255, "20,21", "0,255,0,255"); -_assertPixel(canvas, 21,21, 0,255,0,255, "21,21", "0,255,0,255"); +_assertPixel(canvas, 19,19, 0,255,0,255); +_assertPixel(canvas, 20,19, 0,255,0,255); +_assertPixel(canvas, 21,19, 0,255,0,255); +_assertPixel(canvas, 19,20, 0,255,0,255); +_assertPixel(canvas, 20,20, 0,255,0,255); +_assertPixel(canvas, 21,20, 0,255,0,255); +_assertPixel(canvas, 19,21, 0,255,0,255); +_assertPixel(canvas, 20,21, 0,255,0,255); +_assertPixel(canvas, 21,21, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html index 6ad2a0e6d37..54f49233b75 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.strokeStyle = g; ctx.strokeRect(20, 20, 60, 10); -_assertPixel(canvas, 19,19, 0,255,0,255, "19,19", "0,255,0,255"); -_assertPixel(canvas, 20,19, 0,255,0,255, "20,19", "0,255,0,255"); -_assertPixel(canvas, 21,19, 0,255,0,255, "21,19", "0,255,0,255"); -_assertPixel(canvas, 19,20, 0,255,0,255, "19,20", "0,255,0,255"); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); -_assertPixel(canvas, 21,20, 0,255,0,255, "21,20", "0,255,0,255"); -_assertPixel(canvas, 19,21, 0,255,0,255, "19,21", "0,255,0,255"); -_assertPixel(canvas, 20,21, 0,255,0,255, "20,21", "0,255,0,255"); -_assertPixel(canvas, 21,21, 0,255,0,255, "21,21", "0,255,0,255"); +_assertPixel(canvas, 19,19, 0,255,0,255); +_assertPixel(canvas, 20,19, 0,255,0,255); +_assertPixel(canvas, 21,19, 0,255,0,255); +_assertPixel(canvas, 19,20, 0,255,0,255); +_assertPixel(canvas, 20,20, 0,255,0,255); +_assertPixel(canvas, 21,20, 0,255,0,255); +_assertPixel(canvas, 19,21, 0,255,0,255); +_assertPixel(canvas, 20,21, 0,255,0,255); +_assertPixel(canvas, 21,21, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.1.html index c695cd7e6aa..b2b1f78ffd8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.1.html @@ -27,9 +27,9 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.translate(-50, 0); ctx.fillRect(50, 0, 100, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.2.html index 2515cdf1712..49ff026226d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.2.html @@ -28,9 +28,9 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.translate(-150, 0); ctx.fillRect(50, 0, 100, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.3.html index 4fac1c6b141..36f5e469727 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.3.html @@ -28,9 +28,9 @@ ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); ctx.translate(-50, 0); ctx.fillRect(50, 0, 100, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html index 42a6e1257b7..3b185b4dfef 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html @@ -26,7 +26,7 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.current.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.current.html index 85912c87736..b0d5c01cae7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.current.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.current.html @@ -29,7 +29,7 @@ g.addColorStop(0, 'currentColor'); g.addColorStop(1, 'currentColor'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,0,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html new file mode 100644 index 00000000000..3150e9c75ae --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html @@ -0,0 +1,41 @@ + + +Canvas test: 2d.gradient.object.invalidcolor + + + + + + +

                2d.gradient.object.invalidcolor

                +

                + + +

                Actual output:

                +

                FAIL (fallback content)

                + +
                  + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html deleted file mode 100644 index 98dc21ee164..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html +++ /dev/null @@ -1,41 +0,0 @@ - - -Canvas test: 2d.gradient.object.invalidcolour - - - - - - -

                  2d.gradient.object.invalidcolour

                  -

                  - - -

                  Actual output:

                  -

                  FAIL (fallback content)

                  - -
                    - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.update.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.update.html index ce2392bac68..b54b110c5f8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.update.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.update.html @@ -26,7 +26,7 @@ ctx.fillStyle = g; g.addColorStop(0.1, '#0f0'); g.addColorStop(0.9, '#0f0'); ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html index 94ffdf8d40b..4200a1e7b82 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html index a6b486b77a9..ab183f9030d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html index b07428a50a2..872420b3027 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html index ca6cc0066f2..fae7ef86bad 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.front.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.front.html index f4c820f192d..ff743824962 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.front.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.front.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html index 9fd2217d862..7e95eb25b2f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html @@ -37,15 +37,15 @@ g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html index 15e8209247f..7ebe7d26c59 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html @@ -37,15 +37,15 @@ ctx.lineTo(110, -20-tol); ctx.lineTo(110, 100+tol); ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.top.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.top.html index 94c122d0985..5db91b7ff68 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.top.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.top.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.equal.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.equal.html index f67e60c9a21..aeb4990eec6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.equal.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.equal.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside1.html index bb00026469c..102a31bf216 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside1.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside2.html index 42afc472e31..5b26ec5ebdd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside2.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside3.html index 70ec41f5db6..30612d458c5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside3.html @@ -29,15 +29,15 @@ g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside1.html index 49cccdb7a0e..cb1614455e9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside1.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside2.html index 9244b732a10..68538496826 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside2.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside3.html index a8fc86095f7..9330fcdefa5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside3.html @@ -29,15 +29,15 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch1.html index fca58c60121..3a13947d3c3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch1.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch2.html index 04e7198ef2c..ca6c1b7e1f4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch2.html @@ -30,15 +30,15 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch3.html index 7fc62985d75..bd032a94de0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch3.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.1.html index b4dadd6ecdc..505dd698294 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.1.html @@ -28,9 +28,9 @@ ctx.fillStyle = g; ctx.translate(50, 25); ctx.scale(10, 10); ctx.fillRect(-5, -2.5, 10, 5); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.2.html index aeda7ba07ae..d8d475fc5a5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.2.html @@ -29,9 +29,9 @@ ctx.fillStyle = g; ctx.translate(-50, 25); ctx.scale(10, 10); ctx.fillRect(-5, -2.5, 10, 5); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.3.html index 67be46c97cd..ff27cb0cc84 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.3.html @@ -29,9 +29,9 @@ ctx.fillRect(0, 0, 100, 50); ctx.translate(50, 25); ctx.scale(10, 10); ctx.fillRect(-5, -2.5, 10, 5); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.animated.gif.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.animated.gif.html index a24c2cb193f..9b975228eaa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.animated.gif.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.animated.gif.html @@ -26,8 +26,8 @@ step_timeout(function () { ctx.fillRect(0, 0, 50, 50); step_timeout(t.step_func_done(function () { ctx.fillRect(50, 0, 50, 50); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }), 250); }, 250); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.canvas.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.canvas.html index 49a80726c64..f0e50d0df5f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.canvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.canvas.html @@ -33,15 +33,15 @@ var pattern = ctx.createPattern(canvas2, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.image.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.image.html index 8d723329ec6..31999965d1e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.image.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.image.html @@ -26,10 +26,10 @@ var pattern = ctx.createPattern(img, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.nocontext.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.nocontext.html index 34e358a9a5f..09e0a0474a1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.nocontext.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.nocontext.html @@ -30,10 +30,10 @@ ctx.fillStyle = '#f00'; ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.crosscanvas.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.crosscanvas.html index f28542ff711..cbda7d0a2dc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.crosscanvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.crosscanvas.html @@ -27,7 +27,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.broken.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.broken.html index 8eafcada5f5..9f1bb2d036f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.broken.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.broken.html @@ -20,7 +20,7 @@ var t = async_test(""); _addTest(function(canvas, ctx) { var img = document.getElementById('broken.png'); -_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null"); +assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(img, 'repeat'); }); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas1.html index 7a09739176d..066b30a9b83 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas1.html @@ -34,10 +34,10 @@ ctx2.fillRect(0, 0, 100, 50); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas2.html index 078e5e595c2..10f9c0ab18b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas2.html @@ -38,10 +38,10 @@ ctx2.fillRect(0, 0, 100, 50); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image1.html index 36cb89df371..5ac850a446d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image1.html @@ -27,10 +27,10 @@ img.onload = t.step_func_done(function () ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }); img.src = '/images/red.png'; diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image2.html index 69d7d482aac..1c95aa0909b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image2.html @@ -31,10 +31,10 @@ img.onload = t.step_func_done(function () ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }); img.src = '/images/red.png'; diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html index 0febc57fa25..6b0fb8c3090 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html @@ -27,10 +27,10 @@ var pattern = ctx.createPattern(img, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html index 98a363dbe85..1b1b9bb1b58 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html @@ -30,10 +30,10 @@ ctx.fillStyle = pattern; ctx.translate(50, 0); ctx.fillRect(-50, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html index c3eb012f861..c483e4f64e2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html @@ -31,10 +31,10 @@ ctx.fillStyle = pattern; ctx.translate(50, 0); ctx.fillRect(-50, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html index 13fff6d0035..733f728ad6c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html @@ -31,10 +31,10 @@ ctx.fillRect(-50, -25, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html index 27cb51817c6..a7279943d47 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html @@ -33,10 +33,10 @@ ctx.fillRect(-100, 0, 100, 50); ctx.fillRect(0, 50, 100, 50); ctx.fillRect(100, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html index ab4040180b3..b45c95be1f8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html @@ -37,10 +37,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 25); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html index 4d069b797f7..a618223b060 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html @@ -33,10 +33,10 @@ ctx.restore(); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 25); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html index dbc721150f5..238f155b2ae 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html @@ -27,10 +27,10 @@ var pattern = ctx.createPattern(img, 'repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html index 11ae1c7520e..cfc270d379d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html @@ -28,10 +28,10 @@ ctx.fillStyle = pattern; ctx.translate(-128, -78); ctx.fillRect(128, 78, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html index da165d1f5c2..b05feec9374 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html @@ -24,10 +24,10 @@ var pattern = ctx.createPattern(img, 'repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html index dbb967666b0..223d8c02155 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html @@ -27,10 +27,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.translate(-128, -78); ctx.fillRect(128, 78, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html index 927cc7bf393..ca140400d8f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html @@ -28,10 +28,10 @@ ctx.fillStyle = pattern; ctx.translate(50, 25); ctx.fillRect(-50, -25, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html index ccaab8dba11..9f2f871c0b0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html @@ -29,10 +29,10 @@ var pattern = ctx.createPattern(img, 'repeat-x'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html index 9a882d97b60..38ad51b237c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html @@ -31,12 +31,12 @@ ctx.fillRect(0, -16, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 16); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html index 9b26b98140e..ba01bf3092d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html @@ -30,10 +30,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 16); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html index 465cd73de80..bb07aca80e1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html @@ -29,10 +29,10 @@ var pattern = ctx.createPattern(img, 'repeat-y'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html index 3e24bda0b24..c7ec99e720a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html @@ -31,12 +31,12 @@ ctx.fillRect(-48, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html index 810596b86de..a3267d97017 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html @@ -30,10 +30,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.empty.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.empty.html index 265cd77c347..48db7da219a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.empty.html @@ -26,10 +26,10 @@ var pattern = ctx.createPattern(img, ""); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 200, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.identity.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.identity.html index 56a44df86bd..775d360e1c0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.identity.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.identity.html @@ -31,10 +31,10 @@ ctx.fillStyle = '#f00'; ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.infinity.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.infinity.html index d298d70c350..8650ed9a1d1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.infinity.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.infinity.html @@ -31,10 +31,10 @@ ctx.fillStyle = '#f00'; ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.colorObject.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.colorObject.html index 24eae192acc..a56a020abda 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.colorObject.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.colorObject.html @@ -22,22 +22,22 @@ _addTest(function(canvas, ctx) { ctx.lineWidth = 50; ctx.strokeStyle = {r: 1, g: 0, b: 0}; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 255,0,0,255, "50,25", "255,0,0,255"); +_assertPixel(canvas, 50,25, 255,0,0,255); ctx.strokeStyle = {r: 0, g: 0, b: 1}; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,0,255,255, "50,25", "0,0,255,255"); +_assertPixel(canvas, 50,25, 0,0,255,255); ctx.strokeStyle = {r: 0.2, g: 0.4, b: 0.6}; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 51,102,153,255, "50,25", "51,102,153,255"); +_assertPixel(canvas, 50,25, 51,102,153,255); ctx.strokeStyle = {r: 0, g: 1, b: 0}; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); ctx.strokeStyle = {r: -1, g: 0, b: 0}; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); +_assertPixel(canvas, 50,25, 0,0,0,255); ctx.strokeStyle = {r: 0, g: 2, b: 0}; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.colorObject.transparency.html b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.colorObject.transparency.html index 1d14ace481b..1b19cab317a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.colorObject.transparency.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.colorObject.transparency.html @@ -22,18 +22,18 @@ _addTest(function(canvas, ctx) { ctx.lineWidth = 50; ctx.strokeStyle = {r: 0, g: 1, b: 0, a: 0}; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); ctx.strokeStyle = {r: 0, g: 1, b: 0, a: -1}; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); ctx.clearRect(0, 0, 100, 50); ctx.strokeStyle = {r: 0, g: 1, b: 0, a: 0.5}; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,255,0,128, "50,25", "0,255,0,128"); +_assertPixel(canvas, 50,25, 0,255,0,128); ctx.clearRect(0, 0, 100, 50); ctx.strokeStyle = {r: 0, g: 1, b: 0, a: 1}; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.blur.exceptions.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.blur.exceptions.html deleted file mode 100644 index e0c939328b1..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.blur.exceptions.html +++ /dev/null @@ -1,32 +0,0 @@ - - -Canvas test: 2d.filter.canvasFilterObject.blur.exceptions - - - - - - -

                    2d.filter.canvasFilterObject.blur.exceptions

                    -

                    Test exceptions on CanvasFilter() blur.object

                    - - -

                    Actual output:

                    -

                    FAIL (fallback content)

                    - -
                      - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html new file mode 100644 index 00000000000..d64b81026ad --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.filter.canvasFilterObject.blur.exceptions.tentative + + + + + + +

                      2d.filter.canvasFilterObject.blur.exceptions.tentative

                      +

                      Test exceptions on CanvasFilter() blur.object

                      + + +

                      Actual output:

                      +

                      FAIL (fallback content)

                      + +
                        + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.colorMatrix.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.colorMatrix.html deleted file mode 100644 index 23beed93345..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.colorMatrix.html +++ /dev/null @@ -1,69 +0,0 @@ - - -Canvas test: 2d.filter.canvasFilterObject.colorMatrix - - - - - - -

                        2d.filter.canvasFilterObject.colorMatrix

                        -

                        Test the functionality of ColorMatrix filters in CanvasFilter objects

                        - - -

                        Actual output:

                        -

                        FAIL (fallback content)

                        - -
                          - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html new file mode 100644 index 00000000000..678a722520a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html @@ -0,0 +1,69 @@ + + +Canvas test: 2d.filter.canvasFilterObject.colorMatrix.tentative + + + + + + +

                          2d.filter.canvasFilterObject.colorMatrix.tentative

                          +

                          Test the functionality of ColorMatrix filters in CanvasFilter objects

                          + + +

                          Actual output:

                          +

                          FAIL (fallback content)

                          + +
                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html deleted file mode 100644 index 52875f374dc..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html +++ /dev/null @@ -1,67 +0,0 @@ - - -Canvas test: 2d.filter.canvasFilterObject.componentTransfer.discrete - - - - - - -

                            2d.filter.canvasFilterObject.componentTransfer.discrete

                            -

                            Test pixels on CanvasFilter() componentTransfer with discrete type

                            - - -

                            Actual output:

                            -

                            FAIL (fallback content)

                            - -
                              - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html new file mode 100644 index 00000000000..0ecd132c8ef --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html @@ -0,0 +1,67 @@ + + +Canvas test: 2d.filter.canvasFilterObject.componentTransfer.discrete.tentative + + + + + + +

                              2d.filter.canvasFilterObject.componentTransfer.discrete.tentative

                              +

                              Test pixels on CanvasFilter() componentTransfer with discrete type

                              + + +

                              Actual output:

                              +

                              FAIL (fallback content)

                              + +
                                + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.html deleted file mode 100644 index 7ded8587212..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.html +++ /dev/null @@ -1,58 +0,0 @@ - - -Canvas test: 2d.filter.canvasFilterObject.componentTransfer.gamma - - - - - - -

                                2d.filter.canvasFilterObject.componentTransfer.gamma

                                -

                                Test pixels on CanvasFilter() componentTransfer with gamma type

                                - - -

                                Actual output:

                                -

                                FAIL (fallback content)

                                - -
                                  - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html new file mode 100644 index 00000000000..4ef30c9249b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html @@ -0,0 +1,58 @@ + + +Canvas test: 2d.filter.canvasFilterObject.componentTransfer.gamma.tentative + + + + + + +

                                  2d.filter.canvasFilterObject.componentTransfer.gamma.tentative

                                  +

                                  Test pixels on CanvasFilter() componentTransfer with gamma type

                                  + + +

                                  Actual output:

                                  +

                                  FAIL (fallback content)

                                  + +
                                    + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.identity.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.identity.html deleted file mode 100644 index 5f5229c2f42..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.identity.html +++ /dev/null @@ -1,45 +0,0 @@ - - -Canvas test: 2d.filter.canvasFilterObject.componentTransfer.identity - - - - - - -

                                    2d.filter.canvasFilterObject.componentTransfer.identity

                                    -

                                    Test pixels on CanvasFilter() componentTransfer with identity type

                                    - - -

                                    Actual output:

                                    -

                                    FAIL (fallback content)

                                    - -
                                      - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html new file mode 100644 index 00000000000..25eda36d96b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html @@ -0,0 +1,45 @@ + + +Canvas test: 2d.filter.canvasFilterObject.componentTransfer.identity.tentative + + + + + + +

                                      2d.filter.canvasFilterObject.componentTransfer.identity.tentative

                                      +

                                      Test pixels on CanvasFilter() componentTransfer with identity type

                                      + + +

                                      Actual output:

                                      +

                                      FAIL (fallback content)

                                      + +
                                        + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.linear.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.linear.html deleted file mode 100644 index 2ce24aaae02..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.linear.html +++ /dev/null @@ -1,57 +0,0 @@ - - -Canvas test: 2d.filter.canvasFilterObject.componentTransfer.linear - - - - - - -

                                        2d.filter.canvasFilterObject.componentTransfer.linear

                                        -

                                        Test pixels on CanvasFilter() componentTransfer with linear type

                                        - - -

                                        Actual output:

                                        -

                                        FAIL (fallback content)

                                        - -
                                          - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html new file mode 100644 index 00000000000..c45f5586009 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html @@ -0,0 +1,57 @@ + + +Canvas test: 2d.filter.canvasFilterObject.componentTransfer.linear.tentative + + + + + + +

                                          2d.filter.canvasFilterObject.componentTransfer.linear.tentative

                                          +

                                          Test pixels on CanvasFilter() componentTransfer with linear type

                                          + + +

                                          Actual output:

                                          +

                                          FAIL (fallback content)

                                          + +
                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.table.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.table.html deleted file mode 100644 index d6bdf5e7a4c..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.table.html +++ /dev/null @@ -1,68 +0,0 @@ - - -Canvas test: 2d.filter.canvasFilterObject.componentTransfer.table - - - - - - -

                                            2d.filter.canvasFilterObject.componentTransfer.table

                                            -

                                            Test pixels on CanvasFilter() componentTransfer with table type

                                            - - -

                                            Actual output:

                                            -

                                            FAIL (fallback content)

                                            - -
                                              - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html new file mode 100644 index 00000000000..b561cb6fd3f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html @@ -0,0 +1,67 @@ + + +Canvas test: 2d.filter.canvasFilterObject.componentTransfer.table.tentative + + + + + + +

                                              2d.filter.canvasFilterObject.componentTransfer.table.tentative

                                              +

                                              Test pixels on CanvasFilter() componentTransfer with table type

                                              + + +

                                              Actual output:

                                              +

                                              FAIL (fallback content)

                                              + +
                                                + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.html deleted file mode 100644 index 2183a7700fd..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.html +++ /dev/null @@ -1,37 +0,0 @@ - - -Canvas test: 2d.filter.canvasFilterObject.convolveMatrix.exceptions - - - - - - -

                                                2d.filter.canvasFilterObject.convolveMatrix.exceptions

                                                -

                                                Test exceptions on CanvasFilter() convolveMatrix

                                                - - -

                                                Actual output:

                                                -

                                                FAIL (fallback content)

                                                - -
                                                  - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html new file mode 100644 index 00000000000..5cfbbf588a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html @@ -0,0 +1,37 @@ + + +Canvas test: 2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative + + + + + + +

                                                  2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative

                                                  +

                                                  Test exceptions on CanvasFilter() convolveMatrix

                                                  + + +

                                                  Actual output:

                                                  +

                                                  FAIL (fallback content)

                                                  + +
                                                    + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.html deleted file mode 100644 index 771bbfecf9f..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.html +++ /dev/null @@ -1,47 +0,0 @@ - - -Canvas test: 2d.filter.canvasFilterObject - - - - - - -

                                                    2d.filter.canvasFilterObject

                                                    -

                                                    Test CanvasFilter() object

                                                    - - -

                                                    Actual output:

                                                    -

                                                    FAIL (fallback content)

                                                    - -
                                                      - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.tentative.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.tentative.html new file mode 100644 index 00000000000..3a32eb6a55a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.tentative.html @@ -0,0 +1,47 @@ + + +Canvas test: 2d.filter.canvasFilterObject.tentative + + + + + + +

                                                      2d.filter.canvasFilterObject.tentative

                                                      +

                                                      Test CanvasFilter() object

                                                      + + +

                                                      Actual output:

                                                      +

                                                      FAIL (fallback content)

                                                      + +
                                                        + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.html deleted file mode 100644 index acb5804c8dc..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.html +++ /dev/null @@ -1,130 +0,0 @@ - - -Canvas test: 2d.filter.canvasFilterObject.turbulence.inputTypes - - - - - - -

                                                        2d.filter.canvasFilterObject.turbulence.inputTypes

                                                        -

                                                        Test exceptions on CanvasFilter() turbulence object

                                                        - - -

                                                        Actual output:

                                                        -

                                                        FAIL (fallback content)

                                                        - -
                                                          - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html new file mode 100644 index 00000000000..c5df23f93de --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html @@ -0,0 +1,130 @@ + + +Canvas test: 2d.filter.canvasFilterObject.turbulence.inputTypes.tentative + + + + + + +

                                                          2d.filter.canvasFilterObject.turbulence.inputTypes.tentative

                                                          +

                                                          Test exceptions on CanvasFilter() turbulence object

                                                          + + +

                                                          Actual output:

                                                          +

                                                          FAIL (fallback content)

                                                          + +
                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.butt.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.butt.html index 62ddcfc611e..59b1f76c686 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.butt.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.butt.html @@ -41,19 +41,19 @@ ctx.lineTo(75, 35); ctx.stroke(); ctx.fillRect(65, 15, 20, 20); -_assertPixel(canvas, 25,14, 0,255,0,255, "25,14", "0,255,0,255"); -_assertPixel(canvas, 25,15, 0,255,0,255, "25,15", "0,255,0,255"); -_assertPixel(canvas, 25,16, 0,255,0,255, "25,16", "0,255,0,255"); -_assertPixel(canvas, 25,34, 0,255,0,255, "25,34", "0,255,0,255"); -_assertPixel(canvas, 25,35, 0,255,0,255, "25,35", "0,255,0,255"); -_assertPixel(canvas, 25,36, 0,255,0,255, "25,36", "0,255,0,255"); +_assertPixel(canvas, 25,14, 0,255,0,255); +_assertPixel(canvas, 25,15, 0,255,0,255); +_assertPixel(canvas, 25,16, 0,255,0,255); +_assertPixel(canvas, 25,34, 0,255,0,255); +_assertPixel(canvas, 25,35, 0,255,0,255); +_assertPixel(canvas, 25,36, 0,255,0,255); -_assertPixel(canvas, 75,14, 0,255,0,255, "75,14", "0,255,0,255"); -_assertPixel(canvas, 75,15, 0,255,0,255, "75,15", "0,255,0,255"); -_assertPixel(canvas, 75,16, 0,255,0,255, "75,16", "0,255,0,255"); -_assertPixel(canvas, 75,34, 0,255,0,255, "75,34", "0,255,0,255"); -_assertPixel(canvas, 75,35, 0,255,0,255, "75,35", "0,255,0,255"); -_assertPixel(canvas, 75,36, 0,255,0,255, "75,36", "0,255,0,255"); +_assertPixel(canvas, 75,14, 0,255,0,255); +_assertPixel(canvas, 75,15, 0,255,0,255); +_assertPixel(canvas, 75,16, 0,255,0,255); +_assertPixel(canvas, 75,34, 0,255,0,255); +_assertPixel(canvas, 75,35, 0,255,0,255); +_assertPixel(canvas, 75,36, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.closed.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.closed.html index 5e4d04c056c..5f16ac95005 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.closed.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.closed.html @@ -35,10 +35,10 @@ ctx.lineTo(1000, 200); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.open.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.open.html index 1efe2ded8ea..fc5aca585c5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.open.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.open.html @@ -35,10 +35,10 @@ ctx.lineTo(1000, 200); ctx.lineTo(200, 200); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.round.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.round.html index efffb3c8c68..48411812de0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.round.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.round.html @@ -57,19 +57,19 @@ ctx.arc(75, 15, 10+tol, 0, Math.PI, true); ctx.arc(75, 35, 10+tol, Math.PI, 0, true); ctx.fill(); -_assertPixel(canvas, 17,6, 0,255,0,255, "17,6", "0,255,0,255"); -_assertPixel(canvas, 25,6, 0,255,0,255, "25,6", "0,255,0,255"); -_assertPixel(canvas, 32,6, 0,255,0,255, "32,6", "0,255,0,255"); -_assertPixel(canvas, 17,43, 0,255,0,255, "17,43", "0,255,0,255"); -_assertPixel(canvas, 25,43, 0,255,0,255, "25,43", "0,255,0,255"); -_assertPixel(canvas, 32,43, 0,255,0,255, "32,43", "0,255,0,255"); +_assertPixel(canvas, 17,6, 0,255,0,255); +_assertPixel(canvas, 25,6, 0,255,0,255); +_assertPixel(canvas, 32,6, 0,255,0,255); +_assertPixel(canvas, 17,43, 0,255,0,255); +_assertPixel(canvas, 25,43, 0,255,0,255); +_assertPixel(canvas, 32,43, 0,255,0,255); -_assertPixel(canvas, 67,6, 0,255,0,255, "67,6", "0,255,0,255"); -_assertPixel(canvas, 75,6, 0,255,0,255, "75,6", "0,255,0,255"); -_assertPixel(canvas, 82,6, 0,255,0,255, "82,6", "0,255,0,255"); -_assertPixel(canvas, 67,43, 0,255,0,255, "67,43", "0,255,0,255"); -_assertPixel(canvas, 75,43, 0,255,0,255, "75,43", "0,255,0,255"); -_assertPixel(canvas, 82,43, 0,255,0,255, "82,43", "0,255,0,255"); +_assertPixel(canvas, 67,6, 0,255,0,255); +_assertPixel(canvas, 75,6, 0,255,0,255); +_assertPixel(canvas, 82,6, 0,255,0,255); +_assertPixel(canvas, 67,43, 0,255,0,255); +_assertPixel(canvas, 75,43, 0,255,0,255); +_assertPixel(canvas, 82,43, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.square.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.square.html index 953ee92c064..3423fa79e47 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.square.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cap.square.html @@ -41,19 +41,19 @@ ctx.lineTo(75, 35); ctx.stroke(); ctx.fillRect(65, 5, 20, 40); -_assertPixel(canvas, 25,4, 0,255,0,255, "25,4", "0,255,0,255"); -_assertPixel(canvas, 25,5, 0,255,0,255, "25,5", "0,255,0,255"); -_assertPixel(canvas, 25,6, 0,255,0,255, "25,6", "0,255,0,255"); -_assertPixel(canvas, 25,44, 0,255,0,255, "25,44", "0,255,0,255"); -_assertPixel(canvas, 25,45, 0,255,0,255, "25,45", "0,255,0,255"); -_assertPixel(canvas, 25,46, 0,255,0,255, "25,46", "0,255,0,255"); +_assertPixel(canvas, 25,4, 0,255,0,255); +_assertPixel(canvas, 25,5, 0,255,0,255); +_assertPixel(canvas, 25,6, 0,255,0,255); +_assertPixel(canvas, 25,44, 0,255,0,255); +_assertPixel(canvas, 25,45, 0,255,0,255); +_assertPixel(canvas, 25,46, 0,255,0,255); -_assertPixel(canvas, 75,4, 0,255,0,255, "75,4", "0,255,0,255"); -_assertPixel(canvas, 75,5, 0,255,0,255, "75,5", "0,255,0,255"); -_assertPixel(canvas, 75,6, 0,255,0,255, "75,6", "0,255,0,255"); -_assertPixel(canvas, 75,44, 0,255,0,255, "75,44", "0,255,0,255"); -_assertPixel(canvas, 75,45, 0,255,0,255, "75,45", "0,255,0,255"); -_assertPixel(canvas, 75,46, 0,255,0,255, "75,46", "0,255,0,255"); +_assertPixel(canvas, 75,4, 0,255,0,255); +_assertPixel(canvas, 75,5, 0,255,0,255); +_assertPixel(canvas, 75,6, 0,255,0,255); +_assertPixel(canvas, 75,44, 0,255,0,255); +_assertPixel(canvas, 75,45, 0,255,0,255); +_assertPixel(canvas, 75,46, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cross.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cross.html index ea117452245..a664e372534 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cross.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.cross.html @@ -32,10 +32,10 @@ ctx.lineTo(110, 60); ctx.lineTo(100, 60); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.bevel.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.bevel.html index 210b08f62b6..c1320c2c0b3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.bevel.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.bevel.html @@ -62,17 +62,17 @@ ctx.lineTo(90+tol, 20); ctx.lineTo(80, 10-tol); ctx.fill(); -_assertPixel(canvas, 34,16, 0,255,0,255, "34,16", "0,255,0,255"); -_assertPixel(canvas, 34,15, 0,255,0,255, "34,15", "0,255,0,255"); -_assertPixel(canvas, 35,15, 0,255,0,255, "35,15", "0,255,0,255"); -_assertPixel(canvas, 36,15, 0,255,0,255, "36,15", "0,255,0,255"); -_assertPixel(canvas, 36,14, 0,255,0,255, "36,14", "0,255,0,255"); +_assertPixel(canvas, 34,16, 0,255,0,255); +_assertPixel(canvas, 34,15, 0,255,0,255); +_assertPixel(canvas, 35,15, 0,255,0,255); +_assertPixel(canvas, 36,15, 0,255,0,255); +_assertPixel(canvas, 36,14, 0,255,0,255); -_assertPixel(canvas, 84,16, 0,255,0,255, "84,16", "0,255,0,255"); -_assertPixel(canvas, 84,15, 0,255,0,255, "84,15", "0,255,0,255"); -_assertPixel(canvas, 85,15, 0,255,0,255, "85,15", "0,255,0,255"); -_assertPixel(canvas, 86,15, 0,255,0,255, "86,15", "0,255,0,255"); -_assertPixel(canvas, 86,14, 0,255,0,255, "86,14", "0,255,0,255"); +_assertPixel(canvas, 84,16, 0,255,0,255); +_assertPixel(canvas, 84,15, 0,255,0,255); +_assertPixel(canvas, 85,15, 0,255,0,255); +_assertPixel(canvas, 86,15, 0,255,0,255); +_assertPixel(canvas, 86,14, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.closed.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.closed.html index e230d9a09a5..6fd9d9d300b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.closed.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.closed.html @@ -34,10 +34,10 @@ ctx.lineTo(1000, 50); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.miter.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.miter.html index 24c21567aec..b4f8fbc9a40 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.miter.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.miter.html @@ -53,17 +53,17 @@ ctx.stroke(); ctx.fillRect(60, 10, 30, 20); ctx.fillRect(70, 10, 20, 30); -_assertPixel(canvas, 38,12, 0,255,0,255, "38,12", "0,255,0,255"); -_assertPixel(canvas, 39,11, 0,255,0,255, "39,11", "0,255,0,255"); -_assertPixel(canvas, 40,10, 0,255,0,255, "40,10", "0,255,0,255"); -_assertPixel(canvas, 41,9, 0,255,0,255, "41,9", "0,255,0,255"); -_assertPixel(canvas, 42,8, 0,255,0,255, "42,8", "0,255,0,255"); +_assertPixel(canvas, 38,12, 0,255,0,255); +_assertPixel(canvas, 39,11, 0,255,0,255); +_assertPixel(canvas, 40,10, 0,255,0,255); +_assertPixel(canvas, 41,9, 0,255,0,255); +_assertPixel(canvas, 42,8, 0,255,0,255); -_assertPixel(canvas, 88,12, 0,255,0,255, "88,12", "0,255,0,255"); -_assertPixel(canvas, 89,11, 0,255,0,255, "89,11", "0,255,0,255"); -_assertPixel(canvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); -_assertPixel(canvas, 91,9, 0,255,0,255, "91,9", "0,255,0,255"); -_assertPixel(canvas, 92,8, 0,255,0,255, "92,8", "0,255,0,255"); +_assertPixel(canvas, 88,12, 0,255,0,255); +_assertPixel(canvas, 89,11, 0,255,0,255); +_assertPixel(canvas, 90,10, 0,255,0,255); +_assertPixel(canvas, 91,9, 0,255,0,255); +_assertPixel(canvas, 92,8, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.open.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.open.html index 521a8a6cf74..162b1f87b29 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.open.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.open.html @@ -34,10 +34,10 @@ ctx.lineTo(1000, 50); ctx.lineTo(100, 50); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.parallel.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.parallel.html index 828ff0cfe5d..c26182b0b47 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.parallel.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.parallel.html @@ -31,10 +31,10 @@ ctx.lineTo(0, 25); ctx.lineTo(-100, 25); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.round.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.round.html index a20cee9f089..f1e60182f3c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.round.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.join.round.html @@ -60,17 +60,17 @@ ctx.moveTo(80, 20); ctx.arc(80, 20, 10+tol, 0, 2*Math.PI, true); ctx.fill(); -_assertPixel(canvas, 36,14, 0,255,0,255, "36,14", "0,255,0,255"); -_assertPixel(canvas, 36,13, 0,255,0,255, "36,13", "0,255,0,255"); -_assertPixel(canvas, 37,13, 0,255,0,255, "37,13", "0,255,0,255"); -_assertPixel(canvas, 38,13, 0,255,0,255, "38,13", "0,255,0,255"); -_assertPixel(canvas, 38,12, 0,255,0,255, "38,12", "0,255,0,255"); +_assertPixel(canvas, 36,14, 0,255,0,255); +_assertPixel(canvas, 36,13, 0,255,0,255); +_assertPixel(canvas, 37,13, 0,255,0,255); +_assertPixel(canvas, 38,13, 0,255,0,255); +_assertPixel(canvas, 38,12, 0,255,0,255); -_assertPixel(canvas, 86,14, 0,255,0,255, "86,14", "0,255,0,255"); -_assertPixel(canvas, 86,13, 0,255,0,255, "86,13", "0,255,0,255"); -_assertPixel(canvas, 87,13, 0,255,0,255, "87,13", "0,255,0,255"); -_assertPixel(canvas, 88,13, 0,255,0,255, "88,13", "0,255,0,255"); -_assertPixel(canvas, 88,12, 0,255,0,255, "88,12", "0,255,0,255"); +_assertPixel(canvas, 86,14, 0,255,0,255); +_assertPixel(canvas, 86,13, 0,255,0,255); +_assertPixel(canvas, 87,13, 0,255,0,255); +_assertPixel(canvas, 88,13, 0,255,0,255); +_assertPixel(canvas, 88,12, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.acute.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.acute.html index 531276cbd1f..7807d5942da 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.acute.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.acute.html @@ -41,10 +41,10 @@ ctx.lineTo(100, 100); ctx.lineTo(1000, 1000); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.exceeded.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.exceeded.html index a4a0fd23565..9c31cdd4ff6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.exceeded.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.exceeded.html @@ -33,10 +33,10 @@ ctx.lineTo(200, 200); ctx.lineTo(1000, 201); // slightly non-right-angle to avoid being a special case ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.lineedge.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.lineedge.html index 1de599390f7..33d96f36cc8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.lineedge.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.lineedge.html @@ -30,10 +30,10 @@ ctx.miterLimit = 1.414; ctx.beginPath(); ctx.strokeRect(100, 25, 200, 0); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.obtuse.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.obtuse.html index c6b7619be9a..73507f623c2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.obtuse.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.obtuse.html @@ -41,10 +41,10 @@ ctx.lineTo(800, 300); ctx.lineTo(10000, -8900); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.rightangle.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.rightangle.html index 3100a6c3f92..a8b528bf056 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.rightangle.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.rightangle.html @@ -33,10 +33,10 @@ ctx.lineTo(200, 200); ctx.lineTo(1000, 200); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.within.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.within.html index 4a15782ab87..c5d71cda574 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.within.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.miter.within.html @@ -33,10 +33,10 @@ ctx.lineTo(200, 200); ctx.lineTo(1000, 201); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.union.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.union.html index 7d5fb787aea..e9f5a85e02a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.union.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.union.html @@ -33,12 +33,12 @@ ctx.lineTo(0, 26); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 25,1, 0,255,0,255, "25,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 25,1, 0,255,0,255, "25,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 25,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 25,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.basic.html index a0bdc4be9b6..b0fe6c46650 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.basic.html @@ -41,21 +41,21 @@ ctx.lineTo(75, 35); ctx.stroke(); ctx.fillRect(65, 15, 20, 20); -_assertPixel(canvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255"); -_assertPixel(canvas, 15,25, 0,255,0,255, "15,25", "0,255,0,255"); -_assertPixel(canvas, 16,25, 0,255,0,255, "16,25", "0,255,0,255"); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 34,25, 0,255,0,255, "34,25", "0,255,0,255"); -_assertPixel(canvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255"); -_assertPixel(canvas, 36,25, 0,255,0,255, "36,25", "0,255,0,255"); +_assertPixel(canvas, 14,25, 0,255,0,255); +_assertPixel(canvas, 15,25, 0,255,0,255); +_assertPixel(canvas, 16,25, 0,255,0,255); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 34,25, 0,255,0,255); +_assertPixel(canvas, 35,25, 0,255,0,255); +_assertPixel(canvas, 36,25, 0,255,0,255); -_assertPixel(canvas, 64,25, 0,255,0,255, "64,25", "0,255,0,255"); -_assertPixel(canvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255"); -_assertPixel(canvas, 66,25, 0,255,0,255, "66,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); -_assertPixel(canvas, 84,25, 0,255,0,255, "84,25", "0,255,0,255"); -_assertPixel(canvas, 85,25, 0,255,0,255, "85,25", "0,255,0,255"); -_assertPixel(canvas, 86,25, 0,255,0,255, "86,25", "0,255,0,255"); +_assertPixel(canvas, 64,25, 0,255,0,255); +_assertPixel(canvas, 65,25, 0,255,0,255); +_assertPixel(canvas, 66,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); +_assertPixel(canvas, 84,25, 0,255,0,255); +_assertPixel(canvas, 85,25, 0,255,0,255); +_assertPixel(canvas, 86,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.scaledefault.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.scaledefault.html index b009e110429..9c50a0d68e1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.scaledefault.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.scaledefault.html @@ -28,11 +28,11 @@ ctx.moveTo(0, 0.5); ctx.lineTo(2, 0.5); ctx.stroke(); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); -_assertPixel(canvas, 50,5, 0,255,0,255, "50,5", "0,255,0,255"); -_assertPixel(canvas, 50,45, 0,255,0,255, "50,45", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); +_assertPixel(canvas, 50,5, 0,255,0,255); +_assertPixel(canvas, 50,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.transformed.html b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.transformed.html index f3f57a968a3..f42f859a31e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.transformed.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/line-styles/2d.line.width.transformed.html @@ -47,21 +47,21 @@ ctx.save(); ctx.restore(); ctx.fillRect(65, 15, 20, 20); -_assertPixel(canvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255"); -_assertPixel(canvas, 15,25, 0,255,0,255, "15,25", "0,255,0,255"); -_assertPixel(canvas, 16,25, 0,255,0,255, "16,25", "0,255,0,255"); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 34,25, 0,255,0,255, "34,25", "0,255,0,255"); -_assertPixel(canvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255"); -_assertPixel(canvas, 36,25, 0,255,0,255, "36,25", "0,255,0,255"); +_assertPixel(canvas, 14,25, 0,255,0,255); +_assertPixel(canvas, 15,25, 0,255,0,255); +_assertPixel(canvas, 16,25, 0,255,0,255); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 34,25, 0,255,0,255); +_assertPixel(canvas, 35,25, 0,255,0,255); +_assertPixel(canvas, 36,25, 0,255,0,255); -_assertPixel(canvas, 64,25, 0,255,0,255, "64,25", "0,255,0,255"); -_assertPixel(canvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255"); -_assertPixel(canvas, 66,25, 0,255,0,255, "66,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); -_assertPixel(canvas, 84,25, 0,255,0,255, "84,25", "0,255,0,255"); -_assertPixel(canvas, 85,25, 0,255,0,255, "85,25", "0,255,0,255"); -_assertPixel(canvas, 86,25, 0,255,0,255, "86,25", "0,255,0,255"); +_assertPixel(canvas, 64,25, 0,255,0,255); +_assertPixel(canvas, 65,25, 0,255,0,255); +_assertPixel(canvas, 66,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); +_assertPixel(canvas, 84,25, 0,255,0,255); +_assertPixel(canvas, 85,25, 0,255,0,255); +_assertPixel(canvas, 86,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/clearRect_alpha_false-ref.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/clearRect_alpha_false-ref.html new file mode 100644 index 00000000000..eccfc4e2cca --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/clearRect_alpha_false-ref.html @@ -0,0 +1,10 @@ + + +CanvasRenderingContext 2D with alpha=flase, fillRect with semi-transparent color. +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/clearRect_alpha_false.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/clearRect_alpha_false.html new file mode 100644 index 00000000000..a328fbf97a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/clearRect_alpha_false.html @@ -0,0 +1,15 @@ + + +CanvasRenderingContext 2D with alpha=flase, clearRect + + + + +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/drawImage_alpha_false-ref.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/drawImage_alpha_false-ref.html new file mode 100644 index 00000000000..2c9e5620b2e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/drawImage_alpha_false-ref.html @@ -0,0 +1,10 @@ + + +CanvasRenderingContext 2D with alpha=flase, drawing a transparent image. +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/drawImage_alpha_false.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/drawImage_alpha_false.html new file mode 100644 index 00000000000..64f38bceb1e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/drawImage_alpha_false.html @@ -0,0 +1,20 @@ + + +CanvasRenderingContext 2D with alpha=flase, drawing a transparent image + + + + +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fillRect_alpha_false-ref.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fillRect_alpha_false-ref.html new file mode 100644 index 00000000000..eccfc4e2cca --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fillRect_alpha_false-ref.html @@ -0,0 +1,10 @@ + + +CanvasRenderingContext 2D with alpha=flase, fillRect with semi-transparent color. +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fillRect_alpha_false.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fillRect_alpha_false.html new file mode 100644 index 00000000000..143756eb0c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fillRect_alpha_false.html @@ -0,0 +1,14 @@ + + +CanvasRenderingContext 2D with alpha=flase, fillRect with semi-transparent color. + + + + +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fill_alpha_false-ref.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fill_alpha_false-ref.html new file mode 100644 index 00000000000..03265a656eb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fill_alpha_false-ref.html @@ -0,0 +1,10 @@ + + +CanvasRenderingContext 2D with alpha=flase, path fill with transparent color and 'copy' composite operation. +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fill_alpha_false.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fill_alpha_false.html new file mode 100644 index 00000000000..7872a793803 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/fill_alpha_false.html @@ -0,0 +1,18 @@ + + +CanvasRenderingContext 2D with alpha=flase, path fill with transparent color and 'copy' composite operation. + + + + +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/initial_color_alpha_false-ref.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/initial_color_alpha_false-ref.html new file mode 100644 index 00000000000..b67513c4648 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/initial_color_alpha_false-ref.html @@ -0,0 +1,10 @@ + + +CanvasRenderingContext 2D with alpha=flase context creation parameter is initialized with solid black. +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/initial_color_alpha_false.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/initial_color_alpha_false.html new file mode 100644 index 00000000000..9e86e5ce2c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/initial_color_alpha_false.html @@ -0,0 +1,13 @@ + + +CanvasRenderingContext 2D with alpha=flase context creation parameter is initialized with solid black. + + + + +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/reset_color_alpha_false-ref.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/reset_color_alpha_false-ref.html new file mode 100644 index 00000000000..d663131148a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/reset_color_alpha_false-ref.html @@ -0,0 +1,10 @@ + + +CanvasRenderingContext 2D with alpha=flase context creation parameter is re-initialized with solid black. +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/reset_color_alpha_false.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/reset_color_alpha_false.html new file mode 100644 index 00000000000..191975e0f48 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/context-attributes/reset_color_alpha_false.html @@ -0,0 +1,17 @@ + + +CanvasRenderingContext 2D with alpha=flase context creation parameter is re-initialized with solid black. + + + + +

                                                            Test passes if a 100x100 black square is displayed below.

                                                            + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-ref.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-ref.html new file mode 100644 index 00000000000..b36d29b97f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-ref.html @@ -0,0 +1,16 @@ + + +HTML Canvas reference + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html new file mode 100644 index 00000000000..a1715f6663c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html @@ -0,0 +1,24 @@ + + +HTML Canvas testcase: canvas element not in document + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/fill-and-stroke-styles/2d.fillStyle.parse.current.notrendered.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/fill-and-stroke-styles/2d.fillStyle.parse.current.notrendered.html index 59eedb1cff4..37701bacee1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/fill-and-stroke-styles/2d.fillStyle.parse.current.notrendered.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/fill-and-stroke-styles/2d.fillStyle.parse.current.notrendered.html @@ -24,9 +24,8 @@ canvas.offsetTop; ctx.fillStyle = 'currentColor'; canvas.style.display = 'inline'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-fillStyle-opacity.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-fillStyle-opacity.html new file mode 100644 index 00000000000..b5f9d98b899 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-fillStyle-opacity.html @@ -0,0 +1,27 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-opacity-alpha-and-fillStyle-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-opacity-alpha-and-fillStyle-expected.html new file mode 100644 index 00000000000..f87794f0b7f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-opacity-alpha-and-fillStyle-expected.html @@ -0,0 +1,41 @@ + + +
                                                            +
                                                            +
                                                            +
                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-opacity-alpha-and-fillStyle.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-opacity-alpha-and-fillStyle.html new file mode 100644 index 00000000000..24c97d62ece --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-opacity-alpha-and-fillStyle.html @@ -0,0 +1,35 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-opacity.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-opacity.html new file mode 100644 index 00000000000..cb2fc018af1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-opacity.html @@ -0,0 +1,35 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties-blur-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties-blur-expected.html new file mode 100644 index 00000000000..1f218b4bd25 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties-blur-expected.html @@ -0,0 +1,33 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties-blur.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties-blur.html new file mode 100644 index 00000000000..ab3699906dd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties-blur.html @@ -0,0 +1,29 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties-expected.html new file mode 100644 index 00000000000..294a219b708 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties-expected.html @@ -0,0 +1,21 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties.html new file mode 100644 index 00000000000..2057b95c3e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-and-properties.html @@ -0,0 +1,20 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-expected.html new file mode 100644 index 00000000000..04bc6392cce --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow-expected.html @@ -0,0 +1,16 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow.html new file mode 100644 index 00000000000..ddc6c89ee55 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-shadow.html @@ -0,0 +1,15 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-globalAlpha.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-globalAlpha.html new file mode 100644 index 00000000000..6d7bbcd03d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-globalAlpha.html @@ -0,0 +1,35 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-opacity-blend-modes-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-opacity-blend-modes-expected.html new file mode 100644 index 00000000000..3eb75819818 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-opacity-blend-modes-expected.html @@ -0,0 +1,48 @@ + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-opacity-blend-modes.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-opacity-blend-modes.html new file mode 100644 index 00000000000..a2d513eb623 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-opacity-blend-modes.html @@ -0,0 +1,50 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-opacity-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-opacity-expected.html new file mode 100644 index 00000000000..caf6b53ce39 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-opacity-expected.html @@ -0,0 +1,66 @@ + + +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-blur-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-blur-expected.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-blur-expected.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-blur-expected.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-blur.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-blur.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-blur.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-blur.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-component-transfer-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-component-transfer-expected.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-component-transfer-expected.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-component-transfer-expected.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-component-transfer.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-component-transfer.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-component-transfer.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-component-transfer.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-convolve-matrix-expected.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix-expected.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-convolve-matrix-expected.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-convolve-matrix.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-convolve-matrix.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-turbulence-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-turbulence-expected.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-turbulence-expected.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-turbulence-expected.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-turbulence.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-turbulence.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/canvas-filter-object-turbulence.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/canvas-filter-object-turbulence.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/idl-conversions/canvas-filter-boolean-conversion-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-boolean-conversion-expected.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/idl-conversions/canvas-filter-boolean-conversion-expected.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-boolean-conversion-expected.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/idl-conversions/canvas-filter-boolean-conversion.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-boolean-conversion.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/idl-conversions/canvas-filter-boolean-conversion.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-boolean-conversion.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/idl-conversions/canvas-filter-long-conversion-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-long-conversion-expected.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/idl-conversions/canvas-filter-long-conversion-expected.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-long-conversion-expected.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/idl-conversions/canvas-filter-long-conversion.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-long-conversion.html similarity index 100% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/idl-conversions/canvas-filter-long-conversion.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-long-conversion.html diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/idl-conversions/canvas-filter-sequence-conversion.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-sequence-conversion.html similarity index 95% rename from tests/wpt/web-platform-tests/html/canvas/element/manual/filters/idl-conversions/canvas-filter-sequence-conversion.html rename to tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-sequence-conversion.html index 7774f3aa4fa..8b1a5cdf60d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/idl-conversions/canvas-filter-sequence-conversion.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-sequence-conversion.html @@ -47,7 +47,7 @@ _addTest(function(canvas, ctx) { ctx.reset(); ctx.filter = makeFilter(tc.input); ctx.fillRect(0, 0, 100, 100); - _assertPixelApprox(canvas, 5, 5, tc.result,0,0,255, "5,5", `${tc.result},0,0,255`, 2); + _assertPixelApprox(canvas, 5, 5, tc.result,0,0,255, 2); } } t.done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-resize.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-resize.html index ea30328a34d..782c7e130c3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-resize.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-resize.html @@ -143,6 +143,17 @@ promise_test(function() { }).then(testImageBitmap); }, 'createImageBitmap from a HTMLImageElement with resize option.'); +// HTMLImageElement of svg with no specified size +promise_test(function() { + return new Promise((resolve, reject) => { + var image = new Image(); + image.onload = function() { + resolve(image); + } + image.src = '/images/pattern-nosize.svg' + }).then(testImageBitmap); +}, 'createImageBitmap from a HTMLImageElement of svg with no specified size with resize option.'); + // ImageBitmap promise_test(function() { var testCanvas = initializeTestCanvas(); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-video-resize.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-video-resize.html index 0a4f91d085d..c7555405a83 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-video-resize.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-video-resize.html @@ -24,7 +24,7 @@ function checkLowResult(imageBitmap, bw, bh, video, sx, sy, sw, sh) for (var i = 0; i < data1.length; i++) { // data1[i] is strictly the same as data2[i] on software rendering. // But on GPU, the difference could be quite significant. - if (Math.abs(data1[i] - data2[i]) > 18) { + if (Math.abs(data1[i] - data2[i]) > 33) { dataMatched = false; break; } @@ -52,8 +52,10 @@ var t = async_test('createImageBitmap(HTMLVideoElement) with resize option'); // HTMLVideoElement var video = document.createElement("video"); video.preload = "auto"; -video.oncanplaythrough = t.step_func(function() { - return generateTest(); -}); +if (video.requestVideoFrameCallback) { + video.requestVideoFrameCallback(t.step_func(() => generateTest())); +} else { + video.oncanplaythrough = t.step_func(() => generateTest()); +} video.src = '/media/counting.' + (video.canPlayType('video/ogg') ? 'ogv' : 'mp4'); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/createImageBitmap-bounds.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/createImageBitmap-bounds.html index 9c4f1401e2d..a2dcf0cc0b8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/createImageBitmap-bounds.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/createImageBitmap-bounds.html @@ -35,7 +35,7 @@ function testClip( name, sx, sy, sw, sh, expectedColors, expectedWidth, expected ctx.drawImage(imageBitmap, 0, 0); for (let [x, y, r, g, b, a] of expectedColors) { - _assertPixel(canvas, x,y, r,g,b,a, `${x},${y}`, `${r},${g},${b},${a}`); + _assertPixel(canvas, x,y, r,g,b,a); } }); }, name); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/createImageBitmap-colorSpaceConversion.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/createImageBitmap-colorSpaceConversion.html index c7b49884d38..2ddf3648f5a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/createImageBitmap-colorSpaceConversion.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/createImageBitmap-colorSpaceConversion.html @@ -11,9 +11,9 @@ - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/imagebitmap-replication-exif-orientation.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/imagebitmap-replication-exif-orientation.html new file mode 100644 index 00000000000..b04a76121ef --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/imagebitmap-replication-exif-orientation.html @@ -0,0 +1,146 @@ + + + + +Verify that image orientation is propagated when ImageBitmap objects are replicated. + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/serialize-worker.js b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/serialize-worker.js new file mode 100644 index 00000000000..a76537cc9e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/imagebitmap/serialize-worker.js @@ -0,0 +1,3 @@ +addEventListener('message', evt => { + postMessage(evt.data); +}); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-expected.html index 876eacc0b4e..03fe48a3a20 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-expected.html @@ -1,4 +1,3 @@ -

                                                            Test to ensure beginlayer works for alpha.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-expected.html index bd0affb3f7b..5b54384a79b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-expected.html @@ -1,4 +1,3 @@ -

                                                            Test to ensure beginlayer works when both alpha and filter are applied.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation-expected.html index bd9b5aec083..8d84dcb73f4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation-expected.html @@ -1,4 +1,3 @@ -

                                                            Test to ensure beginlayer works with global alpha, filter, and global composite operation.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation.html index dd1af3db815..6912d6a18b4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation.html @@ -1,4 +1,4 @@ - +

                                                            Test to ensure beginlayer works with global alpha, filter, and global composite operation.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow-expected.html index bfdb26e0e86..89c3f64feae 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow-expected.html @@ -1,4 +1,3 @@ -

                                                            Test to ensure beginlayer works for filter, alpha and shadow.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow.html index ae97240024d..9c4a6fcaa7e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow.html @@ -1,4 +1,5 @@ - + +

                                                            Test to ensure beginlayer works for filter, alpha and shadow.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter.html index d45b1d5ce62..7a895cf34dc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter.html @@ -1,4 +1,4 @@ - +

                                                            Test to ensure beginlayer works when both alpha and filter are applied.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow-expected.html index 89343e787d4..f29fb736e3a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow-expected.html @@ -1,4 +1,3 @@ -

                                                            Test to ensure beginlayer works for alpha and shadow.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow.html index bfe7241bd2f..e7d791d8fc0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow.html @@ -1,4 +1,5 @@ - + +

                                                            Test to ensure beginlayer works for alpha and shadow.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha.html index fe871e7e2d0..7be5bdb0bb8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha.html @@ -1,4 +1,4 @@ - +

                                                            Test to ensure beginlayer works for alpha.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-endlayer-noop-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-endlayer-noop-expected.html index e3c9571fd44..7f4937ecda4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-endlayer-noop-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-endlayer-noop-expected.html @@ -1,4 +1,3 @@ -

                                                            A test to make sure an unmatched endLayer is a no-op and has no effect on the code following it.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-endlayer-noop.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-endlayer-noop.html index d9d620073fd..aae72cfeaef 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-endlayer-noop.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-endlayer-noop.html @@ -1,4 +1,4 @@ - +

                                                            A test to make sure an unmatched endLayer is a no-op and has no effect on the code following it.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-expected.html index a65f52b770c..7fe4d2c03ef 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-expected.html @@ -1,4 +1,3 @@ -

                                                            Test to ensure beginlayer works for filter.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation-expected.html index 3e9fbee643b..0676d7e1aac 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation-expected.html @@ -1,4 +1,3 @@ -

                                                            Test to ensure beginlayer works for filter and global composition.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation.html index 51c79c86c7c..03d04d09ae5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation.html @@ -1,4 +1,4 @@ - +

                                                            Test to ensure beginlayer works for filter and global composition.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow-expected.html index 85a5bea8b8f..5d141c3d085 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow-expected.html @@ -1,4 +1,3 @@ -

                                                            Test to ensure beginlayer works for filter and shadow.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow.html index e4da5b81042..31ce6716290 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow.html @@ -1,4 +1,4 @@ - +

                                                            Test to ensure beginlayer works for filter and shadow.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter.html index 9dbb09f6ee9..c4d63cda2ff 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter.html @@ -1,4 +1,4 @@ - +

                                                            Test to ensure beginlayer works for filter.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation-expected.html index 234c1f9e2de..d2d4317f074 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation-expected.html @@ -1,4 +1,3 @@ -

                                                            Test to ensure beginlayer works for globalCompositeOperation.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation.html index 20ce0ca2c27..6d4fde3ed53 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation.html @@ -1,4 +1,4 @@ - +

                                                            Test to ensure beginlayer works for globalCompositeOperation.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-loneendlayer-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-loneendlayer-expected.html index d6e06cda1ae..cec5a54512c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-loneendlayer-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-loneendlayer-expected.html @@ -1,4 +1,3 @@ -

                                                            A test to make sure a single endLayer with no beginLayer is a no-op.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-loneendlayer.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-loneendlayer.html index e762c5f1fb7..f0584d385cc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-loneendlayer.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-loneendlayer.html @@ -1,4 +1,4 @@ - +

                                                            A test to make sure a single endLayer with no beginLayer is a no-op.

                                                            - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-nested-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-nested-expected.html index c74f1e64956..4647996adfc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-nested-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-nested-expected.html @@ -1,5 +1,3 @@ - - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-nested.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-nested.html index b1bbdbeba5f..fb52976ac8a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-nested.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-nested.html @@ -1,5 +1,5 @@ - - + + - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-restorestyle-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-restorestyle-expected.html index 6372dfe62e9..f67a4571171 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-restorestyle-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-restorestyle-expected.html @@ -1,4 +1,3 @@ -

                                                            Test that ensure layers restores style values upon endLayer.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-restorestyle.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-restorestyle.html index 9a20aa07710..659b6c0ba05 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-restorestyle.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-restorestyle.html @@ -1,4 +1,5 @@ - + +

                                                            Test that ensure layers restores style values upon endLayer.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-several-complex-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-several-complex-expected.html new file mode 100644 index 00000000000..eca81cd8d72 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-several-complex-expected.html @@ -0,0 +1,33 @@ +

                                                            Test to ensure beginlayer works for filter, alpha and shadow, even with consecutive layers.

                                                            + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-several-complex.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-several-complex.html new file mode 100644 index 00000000000..66840bbab95 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-several-complex.html @@ -0,0 +1,33 @@ + + +

                                                            Test to ensure beginlayer works for filter, alpha and shadow, even with consecutive layers.

                                                            + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow-expected.html index c58bc5063e3..76960455719 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow-expected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow-expected.html @@ -1,4 +1,3 @@ -

                                                            A test to make sure shadow works with layers.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow.html index a605ef49871..59768746e49 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow.html @@ -1,4 +1,4 @@ - +

                                                            A test to make sure shadow works with layers.

                                                            - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorManaged-convertToBlob-roundtrip.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorManaged-convertToBlob-roundtrip.html deleted file mode 100644 index 75bd34da3d1..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorManaged-convertToBlob-roundtrip.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorManaged-toBlob-toDataURL.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorManaged-toBlob-toDataURL.html deleted file mode 100644 index 87f8d6d7f15..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorManaged-toBlob-toDataURL.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorspace-arguments.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorspace-arguments.html deleted file mode 100644 index f44b3240bcf..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorspace-arguments.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html deleted file mode 100644 index 9046a758c01..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html +++ /dev/null @@ -1,569 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html deleted file mode 100644 index 2018acbbe77..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html index 11a136fd500..3e86bb55967 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html @@ -11,42 +11,44 @@ for (let [filenameBase, expectedPixels] of Object.entries(videoTests)) { for (let contextColorSpace of ["srgb", "display-p3"]) { for (let imageDataColorSpace of ["srgb", "display-p3"]) { for (let cropSource of [false, true]) { - async_test(function(t) { + promise_test(async function(t) { + let video = document.createElement("video"); - video.onloadeddata = t.step_func(function() { - - let canvas = document.createElement("canvas"); - canvas.width = 2; - canvas.height = 2; - - let ctx = canvas.getContext("2d", { colorSpace: contextColorSpace }); - - let imageBitmapPromise; - if (cropSource) - imageBitmapPromise = createImageBitmap(video, 1, 1, 1, 1); - else - imageBitmapPromise = createImageBitmap(video); - - imageBitmapPromise.then(t.step_func_done(function(imageBitmap) { - video.remove(); - ctx.drawImage(imageBitmap, 0, 0); - - let imageData = ctx.getImageData(0, 0, 1, 1, { colorSpace: imageDataColorSpace }); - - let expected = expectedPixels[`${contextColorSpace} ${imageDataColorSpace}`]; - assert_true(pixelsApproximatelyEqual(imageData.data, expected), `Actual pixel value ${[...imageData.data]} is approximately equal to ${expected}.`); - }), t.step_func(function(error) { - video.remove(); - throw error; - })); - }); for (let format of ["mp4", "webm"]) { let source = document.createElement("source"); source.src = `resources/${filenameBase}.${format}`; source.type = `video/${format}`; video.append(source); } + + let loadedData = new Promise(resolver => video.onloadeddata = resolver); + document.body.append(video); + await video.play(); + await loadedData; + await new Promise(requestAnimationFrame); + + let imageBitmap; + if (cropSource) + imageBitmap = await createImageBitmap(video, 1, 1, 1, 1); + else + imageBitmap = await createImageBitmap(video); + + video.remove(); + + let canvas = document.createElement("canvas"); + canvas.width = 2; + canvas.height = 2; + + let ctx = canvas.getContext("2d", { colorSpace: contextColorSpace }); + + ctx.drawImage(imageBitmap, 0, 0); + + let imageData = ctx.getImageData(0, 0, 1, 1, { colorSpace: imageDataColorSpace }); + + let expected = expectedPixels[`${contextColorSpace} ${imageDataColorSpace}`]; + assert_true(pixelsApproximatelyEqual(imageData.data, expected), `Actual pixel value ${[...imageData.data]} is approximately equal to ${expected}.`); + }, `${filenameBase}, Context ${contextColorSpace}, ImageData ${imageDataColorSpace}, cropSource=${cropSource}`); } } diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html index 34c45d24672..1b04cde779e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html @@ -11,33 +11,39 @@ for (let [filenameBase, expectedPixels] of Object.entries(videoTests)) { for (let contextColorSpace of ["srgb", "display-p3"]) { for (let imageDataColorSpace of ["srgb", "display-p3"]) { for (let scaleImage of [false, true]) { - async_test(function(t) { + promise_test(async function(t) { + let video = document.createElement("video"); - video.onloadeddata = t.step_func_done(function() { - - let canvas = document.createElement("canvas"); - canvas.width = 2; - canvas.height = 2; - - let ctx = canvas.getContext("2d", { colorSpace: contextColorSpace }); - if (scaleImage) - ctx.drawImage(video, 0, 0, 10, 10); - else - ctx.drawImage(video, 0, 0); - video.remove(); - - let imageData = ctx.getImageData(0, 0, 1, 1, { colorSpace: imageDataColorSpace }); - - let expected = expectedPixels[`${contextColorSpace} ${imageDataColorSpace}`]; - assert_true(pixelsApproximatelyEqual(imageData.data, expected), `Actual pixel value ${[...imageData.data]} is approximately equal to ${expected}.`); - }); for (let format of ["mp4", "webm"]) { let source = document.createElement("source"); source.src = `resources/${filenameBase}.${format}`; source.type = `video/${format}`; video.append(source); } + + let loadedData = new Promise(resolver => video.onloadeddata = resolver); + document.body.append(video); + await video.play(); + await loadedData; + await new Promise(requestAnimationFrame); + + let canvas = document.createElement("canvas"); + canvas.width = 2; + canvas.height = 2; + + let ctx = canvas.getContext("2d", { colorSpace: contextColorSpace }); + if (scaleImage) + ctx.drawImage(video, 0, 0, 10, 10); + else + ctx.drawImage(video, 0, 0); + video.remove(); + + let imageData = ctx.getImageData(0, 0, 1, 1, { colorSpace: imageDataColorSpace }); + + let expected = expectedPixels[`${contextColorSpace} ${imageDataColorSpace}`]; + assert_true(pixelsApproximatelyEqual(imageData.data, expected), `Actual pixel value ${[...imageData.data]} is approximately equal to ${expected}.`); + }, `${filenameBase}, Context ${contextColorSpace}, ImageData ${imageDataColorSpace}, scaleImage=${scaleImage}`); } } diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html deleted file mode 100644 index d830d6ea335..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-e_srgb.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-e_srgb.html deleted file mode 100644 index 793cd920338..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-e_srgb.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-offscreenCanvas.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-offscreenCanvas.html deleted file mode 100644 index aebcea3c1d1..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-offscreenCanvas.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-getImageData-e_srgb.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-getImageData-e_srgb.html deleted file mode 100644 index 03e0d29720d..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-getImageData-e_srgb.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorManagedBehavior.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorManagedBehavior.html deleted file mode 100644 index 49078bab672..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorManagedBehavior.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/transferFromImageBitmap.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/transferFromImageBitmap.html deleted file mode 100644 index 1b903961549..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/transferFromImageBitmap.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.1.html index a202700fa6c..838492d182a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.1.html @@ -26,7 +26,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, Math.PI/2, -Math.PI, true); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.2.html index decff2b6276..7ddcbcbe477 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.2.html @@ -26,7 +26,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, -3*Math.PI/2, -Math.PI, true); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.3.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.3.html index feff59e3a70..f5df8a2bf2c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.3.html @@ -26,7 +26,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, (512+1/2)*Math.PI, (1024-1)*Math.PI, true); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.4.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.4.html index 5bfc531c144..635112f76bc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.4.html @@ -26,10 +26,10 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.arc(50, 25, 60, (512+1/2)*Math.PI, (1024-1)*Math.PI, false); ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.5.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.5.html index d5ef61d7637..59edd27bbef 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.5.html @@ -26,7 +26,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, (1024-1)*Math.PI, (512+1/2)*Math.PI, false); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.6.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.6.html index 8d37b4453b1..83f960b60e2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.angle.6.html @@ -26,10 +26,10 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.arc(50, 25, 60, (1024-1)*Math.PI, (512+1/2)*Math.PI, true); ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.default.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.default.html index 1f36d93162f..51c1f1a8f80 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.default.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.default.html @@ -26,7 +26,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, -Math.PI, Math.PI/2); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.empty.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.empty.html index 76cf593217f..bff80290015 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.empty.html @@ -26,7 +26,7 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(200, 25, 5, 0, 2*Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.end.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.end.html index 52836a2e428..aa26b659218 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.end.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.end.html @@ -28,7 +28,7 @@ ctx.moveTo(-100, 0); ctx.arc(-100, 0, 25, -Math.PI/2, Math.PI/2, true); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.nonempty.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.nonempty.html index 5fd51cea921..63a472ba9af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.nonempty.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.nonempty.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.arc(200, 25, 5, 0, 2*Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.nonfinite.html index e70ecb2827d..04d51bffc0f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.nonfinite.html @@ -68,8 +68,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.scale.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.scale.1.html index 9cb1e84ae45..c100c6476fa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.scale.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.scale.1.html @@ -38,15 +38,15 @@ ctx.moveTo(25, 125); ctx.arc(25, 125, 24, 0, 2*Math.PI, false); ctx.fill(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.scale.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.scale.2.html index f81358ae944..1045e402769 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.scale.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.scale.2.html @@ -28,15 +28,15 @@ ctx.beginPath(); ctx.arc(0, 0, 0.6, 0, Math.PI/2, false); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.selfintersect.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.selfintersect.1.html index 34d4a535135..c97c833ec1a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.selfintersect.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.selfintersect.1.html @@ -29,8 +29,8 @@ ctx.stroke(); ctx.beginPath(); ctx.arc(0, 0, 25, 0, -Math.PI/2, true); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.selfintersect.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.selfintersect.2.html index 006258890a1..58c51e32ec8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.selfintersect.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.selfintersect.2.html @@ -29,12 +29,12 @@ ctx.stroke(); ctx.beginPath(); ctx.arc(100, 0, 25, 0, -Math.PI/2, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); -_assertPixel(canvas, 97,1, 0,255,0,255, "97,1", "0,255,0,255"); -_assertPixel(canvas, 97,2, 0,255,0,255, "97,2", "0,255,0,255"); -_assertPixel(canvas, 97,3, 0,255,0,255, "97,3", "0,255,0,255"); -_assertPixel(canvas, 2,48, 0,255,0,255, "2,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,10, 0,255,0,255); +_assertPixel(canvas, 97,1, 0,255,0,255); +_assertPixel(canvas, 97,2, 0,255,0,255); +_assertPixel(canvas, 97,3, 0,255,0,255); +_assertPixel(canvas, 2,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.1.html index c30fc669945..29bf2cf6532 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.1.html @@ -26,12 +26,12 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(50, 50, 50, 0, Math.PI, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 20,48, 0,255,0,255, "20,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 20,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.2.html index c94242415d5..aad3a519645 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.2.html @@ -26,12 +26,12 @@ ctx.strokeStyle = '#0f0'; ctx.beginPath(); ctx.arc(50, 50, 50, 0, Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 20,48, 0,255,0,255, "20,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 20,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.3.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.3.html index f7181158e8b..8f9e2735828 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.3.html @@ -26,11 +26,11 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(0, 50, 50, 0, -Math.PI/2, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.4.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.4.html index 4ac95ad15db..4efa26369f9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.4.html @@ -26,11 +26,11 @@ ctx.strokeStyle = '#0f0'; ctx.beginPath(); ctx.arc(-50, 50, 100, 0, -Math.PI/2, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.5.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.5.html index 5e53c6f356c..21727d4f499 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.shape.5.html @@ -26,11 +26,11 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(300, 0, 100, 0, 5*Math.PI, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.1.html index ed65638541e..a07eb101bd8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.1.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, true); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.2.html index fc39ff06a5f..5ea0c1e60f0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.2.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, false); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.3.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.3.html index 505dc737a12..8e1d50e002f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.3.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, true); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.4.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.4.html index c49714ff6fd..914fc4b18d8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.twopie.4.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, false); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zero.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zero.1.html index f375b18439f..b648c869adc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zero.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zero.1.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 0, true); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zero.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zero.2.html index 45a96d4d900..4aab17a7a5a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zero.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zero.2.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 0, false); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zeroradius.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zeroradius.html index 33172cc54bc..6f50bb474f9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zeroradius.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arc.zeroradius.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.arc(200, 25, 0, 0, Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.coincide.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.coincide.1.html index c3e719e20f3..9b963505ee2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.coincide.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.coincide.1.html @@ -36,9 +36,9 @@ ctx.moveTo(50, 25); ctx.arcTo(50, 25, 100, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.coincide.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.coincide.2.html index 49fe8e19b01..4cabedd056a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.coincide.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.coincide.2.html @@ -28,7 +28,7 @@ ctx.moveTo(0, 25); ctx.arcTo(100, 25, 100, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.1.html index 0bc58ff2b1d..393c7a7f673 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.1.html @@ -35,7 +35,7 @@ ctx.moveTo(-100, 25); ctx.arcTo(0, 25, 100, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.2.html index 71a69d3fe67..7dc386b5183 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.2.html @@ -35,7 +35,7 @@ ctx.moveTo(100, 25); ctx.arcTo(200, 25, 110, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.3.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.3.html index 6c2e1b8bf2d..76930e5fd12 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.collinear.3.html @@ -40,7 +40,7 @@ ctx.moveTo(-100, 25); ctx.arcTo(0, 25, -200, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.ensuresubpath.1.html index 8ec82e0ff46..756cfe602c7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.ensuresubpath.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.ensuresubpath.1.html @@ -26,7 +26,7 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arcTo(100, 50, 200, 50, 0.1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.ensuresubpath.2.html index fb8be3f4959..18b1992d89d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.ensuresubpath.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.ensuresubpath.2.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.arcTo(0, 25, 50, 250, 0.1); // adds (x1,y1), draws nothing ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.nonfinite.html index fe2bc69db86..d05e05d2781 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.nonfinite.html @@ -66,8 +66,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.scale.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.scale.html index ccbdde9f4a5..00d9f99b96a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.scale.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.scale.html @@ -31,15 +31,15 @@ ctx.arcTo(50, 50, 50, 0, 50); ctx.lineTo(-1000, 0); ctx.fill(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.curve1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.curve1.html index 7d52f3c9f09..0caf25048d3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.curve1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.curve1.html @@ -39,20 +39,20 @@ ctx.arc(55, 45, 25+tol, 0, -Math.PI/2, true); ctx.arc(55, 45, 15-tol, -Math.PI/2, 0, false); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 55,19, 0,255,0,255, "55,19", "0,255,0,255"); -_assertPixel(canvas, 55,20, 0,255,0,255, "55,20", "0,255,0,255"); -_assertPixel(canvas, 55,21, 0,255,0,255, "55,21", "0,255,0,255"); -_assertPixel(canvas, 64,22, 0,255,0,255, "64,22", "0,255,0,255"); -_assertPixel(canvas, 65,21, 0,255,0,255, "65,21", "0,255,0,255"); -_assertPixel(canvas, 72,28, 0,255,0,255, "72,28", "0,255,0,255"); -_assertPixel(canvas, 73,27, 0,255,0,255, "73,27", "0,255,0,255"); -_assertPixel(canvas, 78,36, 0,255,0,255, "78,36", "0,255,0,255"); -_assertPixel(canvas, 79,35, 0,255,0,255, "79,35", "0,255,0,255"); -_assertPixel(canvas, 80,44, 0,255,0,255, "80,44", "0,255,0,255"); -_assertPixel(canvas, 80,45, 0,255,0,255, "80,45", "0,255,0,255"); -_assertPixel(canvas, 80,46, 0,255,0,255, "80,46", "0,255,0,255"); -_assertPixel(canvas, 65,45, 0,255,0,255, "65,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 55,19, 0,255,0,255); +_assertPixel(canvas, 55,20, 0,255,0,255); +_assertPixel(canvas, 55,21, 0,255,0,255); +_assertPixel(canvas, 64,22, 0,255,0,255); +_assertPixel(canvas, 65,21, 0,255,0,255); +_assertPixel(canvas, 72,28, 0,255,0,255); +_assertPixel(canvas, 73,27, 0,255,0,255); +_assertPixel(canvas, 78,36, 0,255,0,255); +_assertPixel(canvas, 79,35, 0,255,0,255); +_assertPixel(canvas, 80,44, 0,255,0,255); +_assertPixel(canvas, 80,45, 0,255,0,255); +_assertPixel(canvas, 80,46, 0,255,0,255); +_assertPixel(canvas, 65,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.curve2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.curve2.html index b0ffa46e6f4..3e1677bec01 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.curve2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.curve2.html @@ -39,19 +39,19 @@ ctx.moveTo(10, 25); ctx.arcTo(75, 25, 75, 60, 20); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 55,19, 0,255,0,255, "55,19", "0,255,0,255"); -_assertPixel(canvas, 55,20, 0,255,0,255, "55,20", "0,255,0,255"); -_assertPixel(canvas, 55,21, 0,255,0,255, "55,21", "0,255,0,255"); -_assertPixel(canvas, 64,22, 0,255,0,255, "64,22", "0,255,0,255"); -_assertPixel(canvas, 65,21, 0,255,0,255, "65,21", "0,255,0,255"); -_assertPixel(canvas, 72,28, 0,255,0,255, "72,28", "0,255,0,255"); -_assertPixel(canvas, 73,27, 0,255,0,255, "73,27", "0,255,0,255"); -_assertPixel(canvas, 78,36, 0,255,0,255, "78,36", "0,255,0,255"); -_assertPixel(canvas, 79,35, 0,255,0,255, "79,35", "0,255,0,255"); -_assertPixel(canvas, 80,44, 0,255,0,255, "80,44", "0,255,0,255"); -_assertPixel(canvas, 80,45, 0,255,0,255, "80,45", "0,255,0,255"); -_assertPixel(canvas, 80,46, 0,255,0,255, "80,46", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 55,19, 0,255,0,255); +_assertPixel(canvas, 55,20, 0,255,0,255); +_assertPixel(canvas, 55,21, 0,255,0,255); +_assertPixel(canvas, 64,22, 0,255,0,255); +_assertPixel(canvas, 65,21, 0,255,0,255); +_assertPixel(canvas, 72,28, 0,255,0,255); +_assertPixel(canvas, 73,27, 0,255,0,255); +_assertPixel(canvas, 78,36, 0,255,0,255); +_assertPixel(canvas, 79,35, 0,255,0,255); +_assertPixel(canvas, 80,44, 0,255,0,255); +_assertPixel(canvas, 80,45, 0,255,0,255); +_assertPixel(canvas, 80,46, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.end.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.end.html index 59685ae6f64..8a41dcd7b61 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.end.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.end.html @@ -28,11 +28,11 @@ ctx.moveTo(-100, -100); ctx.arcTo(-100, 25, 200, 25, 10); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.start.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.start.html index c5755ddd466..1ee229ef327 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.start.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.shape.start.html @@ -28,11 +28,11 @@ ctx.moveTo(0, 25); ctx.arcTo(200, 25, 200, 50, 10); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.transformation.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.transformation.html index 1417e073c2a..32811f23005 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.transformation.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.transformation.html @@ -30,15 +30,15 @@ ctx.arcTo(50, 50, 50, 0, 50); ctx.lineTo(-100, 0); ctx.fill(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.zero.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.zero.1.html index a2a8a8bdc87..4bacbf0dbce 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.zero.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.zero.1.html @@ -35,7 +35,7 @@ ctx.moveTo(0, -25); ctx.arcTo(50, -25, 50, 50, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.zero.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.zero.2.html index a0db92a8e5e..1f26b5942b2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.zero.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.arcTo.zero.2.html @@ -35,7 +35,7 @@ ctx.moveTo(100, 25); ctx.arcTo(200, 25, 50, 25, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.beginPath.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.beginPath.html index 8140ac73ad9..a21282cc3e5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.beginPath.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.beginPath.html @@ -25,7 +25,7 @@ ctx.rect(0, 0, 100, 50); ctx.beginPath(); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.basic.html index e3285291e6e..7f90f7bde46 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.basic.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.bezierCurveTo(100, 25, 100, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html index caece38fa8c..1e6f8298c5a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html @@ -26,8 +26,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.bezierCurveTo(100, 50, 200, 50, 200, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 95,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html index cf2bd5deff6..875601c5dab 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html @@ -26,8 +26,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.bezierCurveTo(0, 25, 100, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 5,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.nonfinite.html index 05df77ab080..e6da7b27267 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.nonfinite.html @@ -100,8 +100,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.scaled.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.scaled.html index 6bff2a01da5..d24b83786fc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.scaled.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.scaled.html @@ -28,11 +28,11 @@ ctx.beginPath(); ctx.moveTo(-2, 3.1); ctx.bezierCurveTo(-2, -1, 2.1, -1, 2.1, 3.1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.shape.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.shape.html index c6d6c310ff9..7ebe1e3460c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.shape.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.bezierCurveTo.shape.html @@ -27,11 +27,11 @@ ctx.beginPath(); ctx.moveTo(-2000, 3100); ctx.bezierCurveTo(-2000, -1000, 2100, -1000, 2100, 3100); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.basic.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.basic.1.html index b347387b0d7..c49afd431ff 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.basic.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.basic.1.html @@ -29,7 +29,7 @@ ctx.clip(); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.basic.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.basic.2.html index 908fc8a7b1b..dfba3b8164a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.basic.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.basic.2.html @@ -29,7 +29,7 @@ ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.empty.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.empty.html index 6b5862c0308..ba7a869f5cd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.empty.html @@ -28,7 +28,7 @@ ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.intersect.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.intersect.html index c171822595f..1cdd9603d79 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.intersect.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.intersect.html @@ -32,7 +32,7 @@ ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.unaffected.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.unaffected.html index b4c09f6d5a2..893877f876d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.unaffected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.unaffected.html @@ -34,7 +34,7 @@ ctx.clip(); ctx.lineTo(0, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.winding.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.winding.1.html index 3a70bddde56..5e8fa814243 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.winding.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.winding.1.html @@ -37,7 +37,7 @@ ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.winding.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.winding.2.html index f296ee4593e..ae8fd4c4d94 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.winding.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.clip.winding.2.html @@ -41,7 +41,7 @@ ctx.clip(); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.empty.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.empty.html index a6a5f14ed43..e9840f195a3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.empty.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.closePath(); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.newline.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.newline.html index c12e5f084d3..2ad2609e1ae 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.newline.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.newline.html @@ -29,7 +29,7 @@ ctx.lineTo(200, -100); ctx.lineTo(200, 25); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.nextpoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.nextpoint.html index 3ac3b099eea..7538af29f30 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.nextpoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.closePath.nextpoint.html @@ -28,7 +28,7 @@ ctx.lineTo(-100, -1000); ctx.closePath(); ctx.lineTo(1000, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.closed.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.closed.basic.html index 33a96df92c9..890c15cf4b2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.closed.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.closed.basic.html @@ -29,7 +29,7 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.closed.unaffected.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.closed.unaffected.html index acda47373aa..bd42e95181f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.closed.unaffected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.closed.unaffected.html @@ -31,8 +31,8 @@ ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); -_assertPixel(canvas, 10,40, 0,255,0,255, "10,40", "0,255,0,255"); +_assertPixel(canvas, 90,10, 0,255,0,255); +_assertPixel(canvas, 10,40, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.overlap.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.overlap.html index fbe0f03f357..eb50ac6846b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.overlap.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.overlap.html @@ -28,7 +28,7 @@ ctx.closePath(); ctx.rect(10, 10, 80, 30); ctx.fill(); -_assertPixelApprox(canvas, 50,25, 0,127,0,255, "50,25", "0,127,0,255", 1); +_assertPixelApprox(canvas, 50,25, 0,127,0,255, 1); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.add.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.add.html index bac163ff9f9..5fbcd652601 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.add.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.add.html @@ -34,7 +34,7 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.1.html index 4980616f389..963e5d3c75d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.1.html @@ -34,7 +34,7 @@ ctx.lineTo(100, 50); ctx.lineTo(100, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.2.html index 6429ff68a59..305d628b9e5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.2.html @@ -33,7 +33,7 @@ ctx.lineTo(100, 50); ctx.lineTo(100, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.3.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.3.html index 97dadad7036..4bda1bd248f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.fill.winding.subtract.3.html @@ -39,7 +39,7 @@ ctx.lineTo(100, 50); ctx.lineTo(100, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.initial.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.initial.html index fa700b36822..ec17cc330aa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.initial.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.initial.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.closePath(); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.basic.html index 317baf93a1d..4a2cca3a3af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.basic.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.ensuresubpath.1.html index 9e2f0cf4e93..0fa8f1c0549 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.ensuresubpath.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.ensuresubpath.1.html @@ -26,7 +26,7 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.lineTo(100, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.ensuresubpath.2.html index b24ebb04111..e5b2aa335c2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.ensuresubpath.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.ensuresubpath.2.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.lineTo(0, 25); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.nextpoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.nextpoint.html index 0e8147d2bdd..54b586176de 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.nextpoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.nextpoint.html @@ -28,7 +28,7 @@ ctx.moveTo(-100, -100); ctx.lineTo(0, 25); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.nonfinite.html index df0bf367f11..fa3acf53851 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.lineTo.nonfinite.html @@ -32,8 +32,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.basic.html index cacbfab39f3..3ab41dc0399 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.basic.html @@ -28,7 +28,7 @@ ctx.lineTo(10, 50); ctx.lineTo(100, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 90,25, 0,255,0,255, "90,25", "0,255,0,255"); +_assertPixel(canvas, 90,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.multiple.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.multiple.html index 0a364e425cf..24307b4e9ed 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.multiple.html @@ -28,7 +28,7 @@ ctx.lineTo(100, 25); ctx.strokeStyle = '#0f0'; ctx.lineWidth = 50; ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.newsubpath.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.newsubpath.html index 8830f89a9c2..456b7538ace 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.newsubpath.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.newsubpath.html @@ -28,7 +28,7 @@ ctx.moveTo(100, 50); ctx.moveTo(0, 50); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.nonfinite.html index 617e3cdfb73..4f61d9e58b9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.moveTo.nonfinite.html @@ -32,7 +32,7 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.basic.html index 8f9d2875bf2..1c2da33f967 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.basic.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.quadraticCurveTo(100, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html index 81a18d061dd..6c75732daca 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html @@ -26,8 +26,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.quadraticCurveTo(100, 50, 200, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 95,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html index f66c0d85c92..8da6964cc2f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html @@ -26,8 +26,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.quadraticCurveTo(0, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 5,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.nonfinite.html index 253d39bc5e8..4bc7107fca2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.nonfinite.html @@ -48,8 +48,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.scaled.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.scaled.html index ebd7668e315..4b6ffaa741b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.scaled.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.scaled.html @@ -28,11 +28,11 @@ ctx.beginPath(); ctx.moveTo(-1, 1.05); ctx.quadraticCurveTo(0, -1, 1.2, 1.05); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.shape.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.shape.html index e0a7e9bdbe2..58d35dc22f2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.shape.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.quadraticCurveTo.shape.html @@ -27,11 +27,11 @@ ctx.beginPath(); ctx.moveTo(-1000, 1050); ctx.quadraticCurveTo(0, -1000, 1200, 1050); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.basic.html index 3799fee8778..296800decd5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.basic.html @@ -24,7 +24,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.rect(0, 0, 100, 50); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.closed.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.closed.html index 2aaf5aeec19..60a237770fa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.closed.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.closed.html @@ -26,7 +26,7 @@ ctx.lineWidth = 200; ctx.lineJoin = 'miter'; ctx.rect(100, 50, 100, 100); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.end.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.end.1.html index 2893931509e..6f3338b8411 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.end.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.end.1.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.rect(200, 100, 400, 1000); ctx.lineTo(-2000, -1000); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.end.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.end.2.html index 2145d0e4ca3..e5a1776dd64 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.end.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.end.2.html @@ -28,10 +28,10 @@ ctx.lineJoin = 'bevel'; ctx.rect(150, 150, 2000, 2000); ctx.lineTo(160, 160); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.negative.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.negative.html index 3b30ef00375..e7e51371e16 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.negative.html @@ -28,10 +28,10 @@ ctx.rect(100, 0, -50, 25); ctx.rect(0, 50, 50, -25); ctx.rect(100, 50, -50, -25); ctx.fill(); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.newsubpath.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.newsubpath.html index 2e610e44b51..e2c5a4cff83 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.newsubpath.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.newsubpath.html @@ -28,7 +28,7 @@ ctx.moveTo(-100, 25); ctx.lineTo(-50, 25); ctx.rect(200, 25, 1, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.nonfinite.html index 22891bb4ca7..b8517e8fa4d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.nonfinite.html @@ -48,8 +48,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.selfintersect.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.selfintersect.html index c02c5523827..e7c73dfaffb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.selfintersect.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.selfintersect.html @@ -26,7 +26,7 @@ ctx.lineWidth = 90; ctx.beginPath(); ctx.rect(45, 20, 10, 10); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.winding.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.winding.html index 942bf1da50b..c9547fe32aa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.winding.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.winding.html @@ -28,10 +28,10 @@ ctx.rect(100, 50, -50, -50); ctx.rect(0, 25, 100, -25); ctx.rect(100, 25, -100, 25); ctx.fill(); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.1.html index f8d45cdd131..9a210e74414 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.1.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.rect(0, 50, 100, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.2.html index f5250b54f30..0e3a7c87d66 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.2.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.rect(50, -100, 0, 250); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.3.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.3.html index 6d7879debcc..e92b121f312 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.3.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.rect(50, 25, 0, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.4.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.4.html index cf813aef36f..086ef94f292 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.4.html @@ -26,7 +26,7 @@ ctx.lineWidth = 50; ctx.rect(100, 25, 0, 0); ctx.lineTo(0, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.5.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.5.html index f8643aeeea2..880cab56140 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.5.html @@ -26,7 +26,7 @@ ctx.lineWidth = 50; ctx.moveTo(0, 0); ctx.rect(100, 25, 0, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.6.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.6.html index b3ded772c83..34c9d15cfed 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.rect.zero.6.html @@ -28,7 +28,7 @@ ctx.lineWidth = 200; ctx.beginPath(); ctx.rect(100, 25, 1000, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompoint.html index ad7168a793c..bdcf60d44cc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompoint.html @@ -26,28 +26,28 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompoint.single argument.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompoint.single argument.html index 5fc1425dec0..6e13276c987 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompoint.single argument.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompoint.single argument.html @@ -26,28 +26,28 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompointinit.html index 7ca4dd7265a..6186d98eafa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompointinit.html @@ -26,28 +26,28 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompointinit.single.argument.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompointinit.single.argument.html index 17f4946a9b0..7bf91ffe35c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompointinit.single.argument.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.dompointinit.single.argument.html @@ -26,28 +26,28 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.double.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.double.html index 0703e9f10b3..250bf7d6ab5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.double.html @@ -24,10 +24,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.double.single.argument.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.double.single.argument.html index c097ac9b506..e5e953de74b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.double.single.argument.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.1.radius.double.single.argument.html @@ -24,10 +24,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, 20); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.dompoint.html index e74e0f1eabe..699603b4fdb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.dompoint.html @@ -26,20 +26,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.dompointinit.html index 37eb89dcf76..55c06ca2ebb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.dompointinit.html @@ -26,20 +26,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.double.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.double.html index f35ec3246dc..1d38197baff 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.1.double.html @@ -24,10 +24,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.dompoint.html index 6aebe1b9f75..701109d4f2e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.dompoint.html @@ -26,20 +26,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.dompointinit.html index 7f672555008..409d5014c31 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.dompointinit.html @@ -26,20 +26,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.double.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.double.html index 9ae82104c98..a0c458f006d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.2.radii.2.double.html @@ -24,10 +24,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.dompoint.html index 3402094027d..ac4a3ddd894 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.dompoint.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.dompointinit.html index 11709a1df89..bdfba5df419 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.dompointinit.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.double.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.double.html index 197a8add86a..3e8931e7fc0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.1.double.html @@ -24,10 +24,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20, 0, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.dompoint.html index 1a4b9c4ba9c..7546120a699 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.dompoint.html @@ -26,20 +26,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.dompointinit.html index 72e75330599..d8c805c28b6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.dompointinit.html @@ -26,20 +26,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.double.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.double.html index 74df39e9917..c3d722bac4e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.2.double.html @@ -24,10 +24,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 20, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.dompoint.html index 5b16dcd9b88..1d61ce57059 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.dompoint.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.dompointinit.html index eec602ea453..f1714a84e32 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.dompointinit.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.double.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.double.html index af7d760faba..f3f5721a729 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.3.radii.3.double.html @@ -24,10 +24,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 0, 20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.dompoint.html index 9a4c3975326..4ecff46aeec 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.dompoint.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.dompointinit.html index 72b9ecc7b51..e5b1feed32f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.dompointinit.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.double.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.double.html index 059f49f0c1b..7c22f2457cb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.1.double.html @@ -24,10 +24,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20, 0, 0, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.dompoint.html index 50b64d51c11..f897a721cf7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.dompoint.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.dompointinit.html index a58a8461c51..826befa02a5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.dompointinit.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.double.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.double.html index 0ffbbfe2b04..a0db8fa25e3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.2.double.html @@ -24,10 +24,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 20, 0, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.dompoint.html index 2452564e9e7..ac4f0795c68 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.dompoint.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.dompointinit.html index f58de8e49be..b902fb9fce2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.dompointinit.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.double.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.double.html index 3d6225289d2..d69e2da221d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.3.double.html @@ -24,10 +24,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 0, 20, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.dompoint.html index 99c9aa3dada..f660fdaa648 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.dompoint.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.dompointinit.html index 59291121aa7..0764d3e0014 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.dompointinit.html @@ -26,15 +26,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.double.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.double.html index 7e2addf116d..7a2cd952e60 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.4.radii.4.double.html @@ -24,10 +24,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 0, 0, 20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.badinput.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.badinput.html new file mode 100644 index 00000000000..d18e99b4ed1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.badinput.html @@ -0,0 +1,34 @@ + + +Canvas test: 2d.path.roundrect.badinput + + + + + + +

                                                            2d.path.roundrect.badinput

                                                            +

                                                            roundRect() throws or does not throw errors given the strange inputs.

                                                            + + +

                                                            Actual output:

                                                            +

                                                            FAIL (fallback content)

                                                            + +
                                                              + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.closed.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.closed.html index 780323cfed1..40756e5d941 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.closed.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.closed.html @@ -26,7 +26,7 @@ ctx.lineWidth = 200; ctx.lineJoin = 'miter'; ctx.roundRect(100, 50, 100, 100, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.1.html index 03ed7f31e26..10ab8c1fb83 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.1.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.roundRect(200, 100, 400, 1000, [0]); ctx.lineTo(-2000, -1000); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.2.html index 1ed59f2a498..3b95d1ca88e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.2.html @@ -28,10 +28,10 @@ ctx.lineJoin = 'bevel'; ctx.roundRect(150, 150, 2000, 2000, [0]); ctx.lineTo(160, 160); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.3.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.3.html index f42177b4e4c..48fc4988aa8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.3.html @@ -26,10 +26,10 @@ ctx.lineWidth = 100; ctx.roundRect(101, 51, 2000, 2000, [500, 500, 500, 500]); ctx.lineTo(-1, -1); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.4.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.4.html index a2c59b35095..4b70fbc344a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.end.4.html @@ -26,10 +26,10 @@ ctx.lineWidth = 10; ctx.roundRect(-1, -1, 2000, 2000, [1000, 1000, 1000, 1000]); ctx.lineTo(-150, -150); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.negative.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.negative.html index 4327046c382..81ffe8c93e4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.negative.html @@ -29,15 +29,15 @@ ctx.roundRect(0, 50, 50, -25, [10, 0, 0, 0]); ctx.roundRect(100, 50, -50, -25, [10, 0, 0, 0]); ctx.fill(); // All rects drawn -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); // Correct corners are rounded. -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.newsubpath.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.newsubpath.html index 8ec9a5f14cd..892ef6e5f19 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.newsubpath.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.newsubpath.html @@ -28,7 +28,7 @@ ctx.moveTo(-100, 25); ctx.lineTo(-50, 25); ctx.roundRect(200, 25, 1, 1, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.nonfinite.html index 91c1abf353a..a047b73177f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.nonfinite.html @@ -107,8 +107,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.intersecting.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.intersecting.1.html index fa6be6a13cc..e7675ba35c3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.intersecting.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.intersecting.1.html @@ -24,15 +24,15 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [40, 40, 40, 40]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 2,25, 0,255,0,255, "2,25", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 97,25, 0,255,0,255, "97,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); +_assertPixel(canvas, 2,25, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 97,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.intersecting.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.intersecting.2.html index 30f064c7047..48140ca60ed 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.intersecting.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.intersecting.2.html @@ -24,15 +24,15 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [1000, 1000, 1000, 1000]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 2,25, 0,255,0,255, "2,25", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 97,25, 0,255,0,255, "97,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); +_assertPixel(canvas, 2,25, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 97,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.noargument.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.noargument.html new file mode 100644 index 00000000000..e45b20b7a07 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.noargument.html @@ -0,0 +1,50 @@ + + +Canvas test: 2d.path.roundrect.radius.noargument + + + + + + +

                                                              2d.path.roundrect.radius.noargument

                                                              +

                                                              Check that roundRect draws a rectangle when no radii are provided.

                                                              + + +

                                                              Actual output:

                                                              +

                                                              FAIL (fallback content)

                                                              + +
                                                                + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.noarugment.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.noarugment.html new file mode 100644 index 00000000000..08f576b3792 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.radius.noarugment.html @@ -0,0 +1,49 @@ + + +Canvas test: 2d.path.roundrect.radius.noarugment + + + + + + +

                                                                2d.path.roundrect.radius.noarugment

                                                                +

                                                                Check that roundRect draws a rectangle when no radii are provided.

                                                                + + +

                                                                Actual output:

                                                                +

                                                                FAIL (fallback content)

                                                                + +
                                                                  + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.selfintersect.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.selfintersect.html index 4b2c7d7c837..d644d66e7ca 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.selfintersect.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.selfintersect.html @@ -26,7 +26,7 @@ ctx.lineWidth = 90; ctx.beginPath(); ctx.roundRect(45, 20, 10, 10, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.winding.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.winding.html index 53eb5863a10..6bcad2c9642 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.winding.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.winding.html @@ -28,10 +28,10 @@ ctx.roundRect(100, 50, -50, -50, [0]); ctx.roundRect(0, 25, 100, -25, [0]); ctx.roundRect(100, 25, -100, 25, [0]); ctx.fill(); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.1.html index cd1c4746d8e..690087f0aa0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.1.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.roundRect(0, 50, 100, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.2.html index d2ed1a71345..cfeb923299a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.2.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.roundRect(50, -100, 0, 250, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.3.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.3.html index e756672fe97..39151f38c76 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.3.html @@ -26,7 +26,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.roundRect(50, 25, 0, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.4.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.4.html index 9258a680f89..20dccbeaa0b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.4.html @@ -26,7 +26,7 @@ ctx.lineWidth = 50; ctx.roundRect(100, 25, 0, 0, [0]); ctx.lineTo(0, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.5.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.5.html index 2bcaf4ddba1..bcb84a59171 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.5.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.5.html @@ -26,7 +26,7 @@ ctx.lineWidth = 50; ctx.moveTo(0, 0); ctx.roundRect(100, 25, 0, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.6.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.6.html index abc43f7851d..829503767dc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.6.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.roundrect.zero.6.html @@ -28,7 +28,7 @@ ctx.lineWidth = 200; ctx.beginPath(); ctx.roundRect(100, 25, 1000, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.empty.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.empty.html index 4c2991c7bd8..5a2a91bd0fe 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.empty.html @@ -32,7 +32,7 @@ ctx.moveTo(40, 25); ctx.moveTo(60, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.overlap.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.overlap.html index 2747bf73e97..c1b425d18c7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.overlap.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.overlap.html @@ -30,7 +30,7 @@ ctx.moveTo(0, 30); ctx.lineTo(100, 30); ctx.stroke(); -_assertPixelApprox(canvas, 50,25, 0,127,0,255, "50,25", "0,127,0,255", 1); +_assertPixelApprox(canvas, 50,25, 0,127,0,255, 1); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.arc.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.arc.html index 1757270fb33..abef923f6a6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.arc.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.arc.html @@ -37,7 +37,7 @@ ctx.moveTo(60, 25); ctx.arc(50, 25, 10, 0, 0, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.closed.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.closed.html index bfae13e1b9c..4515669bc8e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.closed.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.closed.html @@ -33,7 +33,7 @@ ctx.lineTo(50, 25); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.corner.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.corner.html index d7589116e3b..532c7465950 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.corner.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.corner.html @@ -35,7 +35,7 @@ ctx.lineTo(-100, 200); ctx.lineTo(-100, 1000); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.curve.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.curve.html index 6e7a9a47db3..6055d8b3f4c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.curve.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.curve.html @@ -37,7 +37,7 @@ ctx.moveTo(50, 25); ctx.bezierCurveTo(50, 25, 50, 25, 50, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.line.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.line.html index 06a3e1da4a1..2d8dcbe4995 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.line.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.line.html @@ -32,7 +32,7 @@ ctx.moveTo(50, 25); ctx.lineTo(50, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.rect.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.rect.html index 6044ee33200..28b02ca3255 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.rect.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.prune.rect.html @@ -33,7 +33,7 @@ ctx.stroke(); ctx.strokeRect(50, 25, 0, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.scale1.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.scale1.html index dcb21daf7f3..29ccc6613da 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.scale1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.scale1.html @@ -38,15 +38,15 @@ ctx.strokeStyle = '#f00'; ctx.stroke(); ctx.restore(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.scale2.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.scale2.html index 0920d8f1bbb..bc72c5c140f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.scale2.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.scale2.html @@ -40,15 +40,15 @@ ctx.strokeStyle = '#f00'; ctx.stroke(); ctx.restore(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.skew.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.skew.html index 26f16f7cc58..b902a1dc275 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.skew.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.skew.html @@ -54,15 +54,15 @@ ctx.strokeStyle = '#f00'; ctx.stroke(); ctx.restore(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.unaffected.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.unaffected.html index 7bdd3bbec02..9b05a6aa0db 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.unaffected.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.unaffected.html @@ -34,7 +34,7 @@ ctx.closePath(); ctx.strokeStyle = '#0f0'; ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.union.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.union.html index a4b1091770d..daa8da93493 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.union.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.stroke.union.html @@ -30,7 +30,7 @@ ctx.moveTo(100, 40); ctx.lineTo(0, 40); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.basic.html index d19c507cc84..d77b66a68fc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.basic.html @@ -28,7 +28,7 @@ ctx.translate(0, -100); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.changing.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.changing.html index c02d6925d7e..5f79285a81d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.changing.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.changing.html @@ -34,7 +34,7 @@ ctx.rotate(Math.PI/2); ctx.scale(0.1, 0.1); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.multiple.html b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.multiple.html index 1c9fa3e7b08..aafa11c127b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/path-objects/2d.path.transformation.multiple.html @@ -39,7 +39,7 @@ ctx.stroke(); ctx.translate(0, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/pixel-manipulation/2d.imageData.get.clamp.html b/tests/wpt/web-platform-tests/html/canvas/element/pixel-manipulation/2d.imageData.get.clamp.html index 214444ee4ab..3c0b1750a51 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/pixel-manipulation/2d.imageData.get.clamp.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/pixel-manipulation/2d.imageData.get.clamp.html @@ -8,7 +8,7 @@

                                                                  2d.imageData.get.clamp

                                                                  -

                                                                  getImageData() clamps colours to the range [0, 255]

                                                                  +

                                                                  getImageData() clamps colors to the range [0, 255]

                                                                  Actual output:

                                                                  @@ -16,7 +16,7 @@
                                                                    diff --git a/tests/wpt/web-platform-tests/html/canvas/element/shadows/2d.shadow.alpha.1.html b/tests/wpt/web-platform-tests/html/canvas/element/shadows/2d.shadow.alpha.1.html index d52013a7510..38d3bd74eeb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/shadows/2d.shadow.alpha.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/shadows/2d.shadow.alpha.1.html @@ -8,7 +8,7 @@

                                                                    2d.shadow.alpha.1

                                                                    -

                                                                    Shadow colour alpha components are used

                                                                    +

                                                                    Shadow color alpha components are used

                                                                    Actual output:

                                                                    @@ -16,7 +16,7 @@

                                                                    Expected output:

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.bitmap.html b/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.bitmap.html index 2a9a4b577ac..459e0d543f4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.bitmap.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.bitmap.html @@ -25,7 +25,7 @@ ctx.save(); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.restore(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.clip.html b/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.clip.html index 89f59c46f93..6d1ab02f89d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.clip.html @@ -27,7 +27,7 @@ ctx.clip(); ctx.restore(); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.path.html b/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.path.html index 90cf6245157..a8023f1448c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.path.html @@ -26,7 +26,7 @@ ctx.rect(0, 0, 100, 50); ctx.restore(); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.transformation.html b/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.transformation.html index 02e86307037..6d035ef9ea3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.transformation.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/the-canvas-state/2d.state.saverestore.transformation.html @@ -26,7 +26,7 @@ ctx.translate(200, 0); ctx.restore(); ctx.fillStyle = '#f00'; ctx.fillRect(-200, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.order.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.order.html index 0aa6c4a33fb..7fe6dbc133c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.order.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.order.html @@ -26,7 +26,7 @@ ctx.scale(2, 1); ctx.rotate(Math.PI / 2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -50, 50, 50); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.direction.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.direction.html index 4c1b48f7480..756b5ee6670 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.direction.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.direction.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(Math.PI / 2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -100, 50, 100); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.nonfinite.html index c034cfa8f4e..93839c6427e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.nonfinite.html @@ -30,7 +30,7 @@ ctx.rotate(NaN); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.radians.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.radians.html index 41835f1fa48..fabf9da24f0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.radians.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.radians.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.wrap.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.wrap.html index c75426e9b74..05cb3073ee2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.wrap.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.wrap.html @@ -28,9 +28,9 @@ ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) // be safe enough on reasonable implementations ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,2, 0,255,0,255, "98,2", "0,255,0,255"); -_assertPixel(canvas, 98,47, 0,255,0,255, "98,47", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,2, 0,255,0,255); +_assertPixel(canvas, 98,47, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.wrapnegative.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.wrapnegative.html index a94528185c1..9eae3c5214d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.wrapnegative.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.wrapnegative.html @@ -25,9 +25,9 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(-Math.PI * (1 + 4096)); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,2, 0,255,0,255, "98,2", "0,255,0,255"); -_assertPixel(canvas, 98,47, 0,255,0,255, "98,47", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,2, 0,255,0,255); +_assertPixel(canvas, 98,47, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.zero.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.zero.html index ddbf3e3df0c..54ad6aa1385 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.zero.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.rotate.zero.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.basic.html index 83e77491520..0573702bd86 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.basic.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.scale(2, 4); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 12.5); -_assertPixel(canvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); +_assertPixel(canvas, 90,40, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.large.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.large.html index eefdb842aae..65fa9ab8da0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.large.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.large.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.scale(1e5, 1e5); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 1, 1); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.multiple.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.multiple.html index 44e8d2ece53..5bf837ccd76 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.multiple.html @@ -26,7 +26,7 @@ ctx.scale(Math.sqrt(2), Math.sqrt(2)); ctx.scale(Math.sqrt(2), Math.sqrt(2)); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); -_assertPixel(canvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); +_assertPixel(canvas, 90,40, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.negative.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.negative.html index ee3c00c1add..e7085999a2b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.negative.html @@ -33,8 +33,8 @@ ctx.scale(1, -1); ctx.fillStyle = '#0f0'; ctx.fillRect(50, -50, 50, 50); ctx.restore(); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.nonfinite.html index 4ee2fd75bc7..59b15490452 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.nonfinite.html @@ -34,7 +34,7 @@ ctx.scale(Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html index e2d952a2099..4ff7397ae8c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html @@ -38,7 +38,7 @@ ctx.restore(); canvas.toDataURL(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.multiple.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.multiple.html index 7e90537113e..5fa910a5b11 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.multiple.html @@ -27,7 +27,7 @@ ctx.setTransform(); ctx.setTransform(2,0, 0,2, 0,0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); -_assertPixel(canvas, 75,35, 0,255,0,255, "75,35", "0,255,0,255"); +_assertPixel(canvas, 75,35, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.nonfinite.html index b30293bff1c..fea3799a41f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.nonfinite.html @@ -102,7 +102,7 @@ ctx.setTransform(0, 0, 0, 0, Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.skewed.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.skewed.html index 0381679538a..e78a07897b5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.skewed.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.setTransform.skewed.html @@ -40,14 +40,14 @@ ctx.moveTo(pts[0][0], pts[0][1]); for (var i = 0; i < pts.length; ++i) ctx.lineTo(pts[i][0], pts[i][1]); ctx.fill(); -_assertPixel(canvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255"); -_assertPixel(canvas, 79,11, 0,255,0,255, "79,11", "0,255,0,255"); -_assertPixel(canvas, 21,39, 0,255,0,255, "21,39", "0,255,0,255"); -_assertPixel(canvas, 79,39, 0,255,0,255, "79,39", "0,255,0,255"); -_assertPixel(canvas, 39,19, 0,255,0,255, "39,19", "0,255,0,255"); -_assertPixel(canvas, 61,19, 0,255,0,255, "61,19", "0,255,0,255"); -_assertPixel(canvas, 39,31, 0,255,0,255, "39,31", "0,255,0,255"); -_assertPixel(canvas, 61,31, 0,255,0,255, "61,31", "0,255,0,255"); +_assertPixel(canvas, 21,11, 0,255,0,255); +_assertPixel(canvas, 79,11, 0,255,0,255); +_assertPixel(canvas, 21,39, 0,255,0,255); +_assertPixel(canvas, 79,39, 0,255,0,255); +_assertPixel(canvas, 39,19, 0,255,0,255); +_assertPixel(canvas, 61,19, 0,255,0,255); +_assertPixel(canvas, 39,31, 0,255,0,255); +_assertPixel(canvas, 61,31, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.identity.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.identity.html index a33209ee83c..c9742ac210c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.identity.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.identity.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.transform(1,0, 0,1, 0,0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.multiply.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.multiply.html index 29aa5fb9453..04e5adf4c86 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.multiply.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.multiply.html @@ -26,7 +26,7 @@ ctx.transform(1,2, 3,4, 5,6); ctx.transform(-2,1, 3/2,-1/2, 1,-2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.nonfinite.html index 6d5f19cf780..b94da2c3818 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.nonfinite.html @@ -102,7 +102,7 @@ ctx.transform(0, 0, 0, 0, Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.skewed.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.skewed.html index a873fe85eec..35cf997eb0a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.skewed.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.transform.skewed.html @@ -40,14 +40,14 @@ ctx.moveTo(pts[0][0], pts[0][1]); for (var i = 0; i < pts.length; ++i) ctx.lineTo(pts[i][0], pts[i][1]); ctx.fill(); -_assertPixel(canvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255"); -_assertPixel(canvas, 79,11, 0,255,0,255, "79,11", "0,255,0,255"); -_assertPixel(canvas, 21,39, 0,255,0,255, "21,39", "0,255,0,255"); -_assertPixel(canvas, 79,39, 0,255,0,255, "79,39", "0,255,0,255"); -_assertPixel(canvas, 39,19, 0,255,0,255, "39,19", "0,255,0,255"); -_assertPixel(canvas, 61,19, 0,255,0,255, "61,19", "0,255,0,255"); -_assertPixel(canvas, 39,31, 0,255,0,255, "39,31", "0,255,0,255"); -_assertPixel(canvas, 61,31, 0,255,0,255, "61,31", "0,255,0,255"); +_assertPixel(canvas, 21,11, 0,255,0,255); +_assertPixel(canvas, 79,11, 0,255,0,255); +_assertPixel(canvas, 21,39, 0,255,0,255); +_assertPixel(canvas, 79,39, 0,255,0,255); +_assertPixel(canvas, 39,19, 0,255,0,255); +_assertPixel(canvas, 61,19, 0,255,0,255); +_assertPixel(canvas, 39,31, 0,255,0,255); +_assertPixel(canvas, 61,31, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.translate.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.translate.basic.html index 0a506ad745c..967d2d27614 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.translate.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.translate.basic.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.translate(100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); +_assertPixel(canvas, 90,40, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.translate.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.translate.nonfinite.html index 898aad99d08..83a8ebf7ba8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.translate.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.translate.nonfinite.html @@ -34,7 +34,7 @@ ctx.translate(Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.copy.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.copy.html index bab39234ad7..a89736b5793 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.copy.html @@ -39,7 +39,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,191, "50,25", "255,255,0,191", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.copy.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.copy.worker.js index ecf7afd3e03..a8fbc74c1c3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.copy.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.copy.worker.js @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,191, "50,25", "255,255,0,191", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.html index feb3080ba80..dc53e8b5f02 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.html @@ -39,7 +39,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 128,255,128,191, "50,25", "128,255,128,191", 5); + _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.worker.js index f6c64225739..fcb944543c0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.worker.js @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 128,255,128,191, "50,25", "128,255,128,191", 5); + _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.html index b3579219563..73140e11df1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.html @@ -39,7 +39,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,255,96, "50,25", "0,255,255,96", 5); + _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.worker.js index d150bffbfbd..e5d7f0b039f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.worker.js @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,255,96, "50,25", "0,255,255,96", 5); + _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.html index 401a9e0dc51..5f89aa29f7f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.html @@ -39,7 +39,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-out'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,255,32, "50,25", "0,255,255,32", 5); + _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.worker.js index cbdcfde403c..a4436be0d2f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.worker.js @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-out'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,255,32, "50,25", "0,255,255,32", 5); + _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.html index 079f74e5ebb..d18f9dc8641 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.html @@ -39,7 +39,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 109,255,146,223, "50,25", "109,255,146,223", 5); + _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.worker.js index 3ae7bdb85bb..967e47b34d2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.worker.js @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 109,255,146,223, "50,25", "109,255,146,223", 5); + _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.html index 0a3862abe66..9de44add683 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.html @@ -39,7 +39,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'lighter'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,128,255, "50,25", "191,255,128,255", 5); + _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.worker.js index 2c217ceca2e..849d4a6a6f8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.worker.js @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'lighter'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,128,255, "50,25", "191,255,128,255", 5); + _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.html index 092e191aeb0..cf9d5cfcbe1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.html @@ -39,7 +39,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-atop'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); + _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.worker.js index 2664155c3d7..7601db1f5aa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.worker.js @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-atop'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); + _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.html index ee053857a94..30864d65a33 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.html @@ -39,7 +39,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.worker.js index 4c9731d8a74..5b21b35564a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.worker.js @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.html index 95b77f5bb67..d698540260f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.html @@ -39,7 +39,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.worker.js index 0d2da83f516..cf5b0a9ac47 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.worker.js @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.html index cb93a986f46..e1e86c7979f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.html @@ -39,7 +39,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-over'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 219,255,36,223, "50,25", "219,255,36,223", 5); + _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.worker.js index 85ff012081e..d61ebd1e56a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.worker.js @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-over'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 219,255,36,223, "50,25", "219,255,36,223", 5); + _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.xor.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.xor.html index d9e57fc8c4f..c2d1f526454 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.xor.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.xor.html @@ -39,7 +39,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'xor'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); + _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.xor.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.xor.worker.js index eedd05d5db3..1b2286a87ac 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.xor.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.canvas.xor.worker.js @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'xor'; ctx.drawImage(offscreenCanvas2, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); + _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.copy.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.copy.html index 0023597610e..5d6afc11cf6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.copy.html @@ -28,8 +28,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.copy.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.copy.worker.js index 6803969762f..3158893fc5b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.copy.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.copy.worker.js @@ -24,8 +24,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.html index e72e962ee11..93d4d70adb7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.html @@ -28,8 +28,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.worker.js index 67bea9fa696..78b5368194d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.worker.js @@ -24,8 +24,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.html index d808d13d1c0..d2520378e47 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.html @@ -28,8 +28,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.worker.js index 7576ba59cf1..bc120261038 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.worker.js @@ -24,8 +24,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.html index 292c7b0cc00..fdb1792b538 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.html @@ -28,8 +28,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.worker.js index 2d2b58ef007..ebe3a70d035 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.worker.js @@ -24,8 +24,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.html index 61a508e52c3..ae4cb499bca 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.html @@ -28,8 +28,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.worker.js index 79dc3f7d50a..fb8778f0e15 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.worker.js @@ -24,8 +24,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.lighter.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.lighter.html index 1e8c3477624..1f705f26455 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.lighter.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.lighter.html @@ -28,8 +28,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.lighter.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.lighter.worker.js index 267030c8ce0..f6bf4c4aff4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.lighter.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.lighter.worker.js @@ -24,8 +24,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.html index 1d239686690..eb5474702c7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.html @@ -28,8 +28,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.worker.js index 8b869b19b3b..fec34e1bc62 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.worker.js @@ -24,8 +24,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-in.html index 43f9304ba54..cdc814fa75f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-in.html @@ -28,8 +28,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-in.worker.js index a8d2e587af9..b9a67cef2e8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-in.worker.js @@ -24,8 +24,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-out.html index b4872e5e76e..9df047f77f9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-out.html @@ -28,8 +28,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-out.worker.js index 42dcb8e5c98..9d2524064a7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-out.worker.js @@ -24,8 +24,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-over.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-over.html index 1da6f53b80f..522f4f996ba 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-over.html @@ -28,8 +28,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-over.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-over.worker.js index aac34989159..6d401c46b05 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-over.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.source-over.worker.js @@ -24,8 +24,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.xor.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.xor.html index ce92ac6115c..dc1170db37a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.xor.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.xor.html @@ -28,8 +28,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.xor.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.xor.worker.js index 38a33a35279..1d89becc27b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.xor.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.clip.xor.worker.js @@ -24,8 +24,8 @@ ctx.rect(-20, -20, 10, 10); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvas.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvas.html index 612731bae94..cd05d7b57b1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvas.html @@ -28,7 +28,7 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +_assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvas.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvas.worker.js index 5089f8cfea2..fe644f2ca3e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvas.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvas.worker.js @@ -24,7 +24,7 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +_assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvascopy.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvascopy.html index f76e9d5afb8..52a431cfaa1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvascopy.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvascopy.html @@ -29,7 +29,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy' ctx.globalAlpha = 0.51; ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,130, "50,25", "0,255,0,130", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,130, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvascopy.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvascopy.worker.js index 87d741b4ad5..e0ef84a78b4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvascopy.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvascopy.worker.js @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy' ctx.globalAlpha = 0.51; ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,130, "50,25", "0,255,0,130", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,130, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvaspattern.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvaspattern.html index 13af53a6d41..24d7a0fc3cd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvaspattern.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvaspattern.html @@ -29,7 +29,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = ctx.createPattern(offscreenCanvas2, 'no-repeat'); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +_assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvaspattern.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvaspattern.worker.js index 0bb2b58327a..2fb494d054a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvaspattern.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.canvaspattern.worker.js @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = ctx.createPattern(offscreenCanvas2, 'no-repeat'); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +_assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.fill.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.fill.html index 62a74820199..e349b92376b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.fill.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.fill.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +_assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.fill.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.fill.worker.js index e70a53821a4..f354773bf46 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.fill.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.fill.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +_assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html index e1b3d84e49e..29a963a7c6f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html @@ -35,10 +35,9 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); + _assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); }, t_fail); }).then(t_pass, t_fail); -t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js index 8b1d5781bca..010fbd8bfa9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js @@ -31,10 +31,9 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); + _assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); }, t_fail); }).then(t_pass, t_fail); -t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html index 2f61c5a6cd2..7eacf16c4fc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html @@ -36,10 +36,9 @@ promise.then(function(response) { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillRect(0, 0, 100, 50); - _assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); + _assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); }, t_fail); }).then(t_pass, t_fail); -t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js index a0b21fa657c..5607972635e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js @@ -32,10 +32,9 @@ promise.then(function(response) { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillRect(0, 0, 100, 50); - _assertPixelApprox(canvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); + _assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); }, t_fail); }).then(t_pass, t_fail); -t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.copy.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.copy.html index b6ee1ffb0e0..1aa9c98e9d3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.copy.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,191, "50,25", "255,255,0,191", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.copy.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.copy.worker.js index 82f3cdbcd81..ba3399a2b11 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.copy.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.copy.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,191, "50,25", "255,255,0,191", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.html index 91b1922ee53..76547a1f86a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 128,255,128,191, "50,25", "128,255,128,191", 5); + _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.worker.js index b69c55882c3..677b882b011 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 128,255,128,191, "50,25", "128,255,128,191", 5); + _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-in.html index ec6b1b0b7d1..8fa57869616 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-in.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,255,96, "50,25", "0,255,255,96", 5); + _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-in.worker.js index 58d40492a04..aa8c1ac06d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-in.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,255,96, "50,25", "0,255,255,96", 5); + _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-out.html index e383b18b2d7..3a4da68c2cb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-out.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,255,32, "50,25", "0,255,255,32", 5); + _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-out.worker.js index 95936bdc4b7..94ac27a00d4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-out.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,255,32, "50,25", "0,255,255,32", 5); + _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-over.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-over.html index f96cfb70803..c6da28db6a7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-over.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 109,255,146,223, "50,25", "109,255,146,223", 5); + _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-over.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-over.worker.js index 65dc9a74451..3bc357dce87 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-over.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.destination-over.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 109,255,146,223, "50,25", "109,255,146,223", 5); + _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.lighter.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.lighter.html index f0db5b43f64..db89e5a3e8e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.lighter.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.lighter.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,128,255, "50,25", "191,255,128,255", 5); + _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.lighter.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.lighter.worker.js index cca47e902da..922b5f46352 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.lighter.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.lighter.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,128,255, "50,25", "191,255,128,255", 5); + _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-atop.html index 1547e108c79..44dd6f4274d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-atop.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); + _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-atop.worker.js index 434eeb7f991..1b329938588 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-atop.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); + _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-in.html index 6529b904258..64c28c0c211 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-in.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-in.worker.js index 869a6b94c4d..3048f849a9c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-in.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-out.html index fde8083be40..46d3e483ee7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-out.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-out.worker.js index 37934762837..090bbe7d226 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-out.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); + _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-over.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-over.html index 67c08390bdb..1d13b772483 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-over.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 219,255,36,223, "50,25", "219,255,36,223", 5); + _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-over.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-over.worker.js index e337f4d7b0e..7937e5be694 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-over.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.source-over.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 219,255,36,223, "50,25", "219,255,36,223", 5); + _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.xor.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.xor.html index 800a615510a..73253fabcaa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.xor.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.xor.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); + _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.xor.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.xor.worker.js index 0793948b38f..7a22f7d39f2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.xor.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.image.xor.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); + _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.copy.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.copy.html index b9e34001b42..aaad0b418ff 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.copy.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.copy.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.copy.worker.js index 2baab2847b6..63cc6c1e90d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.copy.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.copy.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.html index 6fae26d9804..be4cf393a1b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.worker.js index e9cc3f9a9da..a09827ca88b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.html index 72b51c6cb3e..e5ea33b5b0b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.worker.js index d4b55604e0b..b06ad632668 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.html index 7fe711decbd..49efe240d08 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-out'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.worker.js index de9811ecb3e..3b0232e2555 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-out'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.html index 1d7e0fb08e0..c1d7965cad1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.worker.js index 60464d2c242..99d64be5783 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.lighter.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.lighter.html index 5bb9593cb9d..2877e14ad9c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.lighter.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.lighter.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'lighter'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,255,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.lighter.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.lighter.worker.js index 23a34fcc01a..011a19934ee 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.lighter.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.lighter.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'lighter'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,255,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.html index 5360ac58f4f..9f972edabc9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-atop'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.worker.js index 79ce54ef2cf..2dc6ec9b2e8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-atop'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-in.html index 80ecf3aba1c..c674bbde91b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-in.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-in.worker.js index 1cfedc98617..5b833ec156a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-in.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-out.html index 8bab40a14d6..0fa403bb75c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-out.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-out.worker.js index 7a64d43b780..0486939935f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-out.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-over.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-over.html index 6a77533886b..4392e60c9e5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-over.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-over'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-over.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-over.worker.js index db6f5c3ca6a..ce8190ec0f9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-over.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.source-over.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-over'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); +_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.xor.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.xor.html index 12a5ab864ab..a9eb83e6a9d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.xor.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.xor.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'xor'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.xor.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.xor.worker.js index 3da6e4dca5a..8b7edec945f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.xor.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.solid.xor.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'xor'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.copy.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.copy.html index 1f15d77ac94..20c107bd774 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.copy.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,255,191, "50,25", "0,0,255,191", 5); +_assertPixelApprox(canvas, 50,25, 0,0,255,191, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.copy.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.copy.worker.js index 0c954b08ccc..7fb646acd50 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.copy.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.copy.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,255,191, "50,25", "0,0,255,191", 5); +_assertPixelApprox(canvas, 50,25, 0,0,255,191, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.html index b6f5e88425f..2bc5466d278 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,128,128,191, "50,25", "0,128,128,191", 5); +_assertPixelApprox(canvas, 50,25, 0,128,128,191, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.worker.js index d2909e4e008..f433bedf7c9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,128,128,191, "50,25", "0,128,128,191", 5); +_assertPixelApprox(canvas, 50,25, 0,128,128,191, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.html index 4ba2c25de9c..1d1121812df 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,96, "50,25", "0,255,0,96", 5); +_assertPixelApprox(canvas, 50,25, 0,255,0,96, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.worker.js index a62b40e1140..a4c159aeef8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,96, "50,25", "0,255,0,96", 5); +_assertPixelApprox(canvas, 50,25, 0,255,0,96, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.html index e5dcfed8108..17b3fecd028 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-out'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,32, "50,25", "0,255,0,32", 5); +_assertPixelApprox(canvas, 50,25, 0,255,0,32, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.worker.js index 49f968da421..cf6827fc51f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-out'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,32, "50,25", "0,255,0,32", 5); +_assertPixelApprox(canvas, 50,25, 0,255,0,32, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.html index 0b81d543a78..04c267a8170 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,146,109,223, "50,25", "0,146,109,223", 5); +_assertPixelApprox(canvas, 50,25, 0,146,109,223, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.worker.js index 3ef1433d106..98a4b5b59ed 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,146,109,223, "50,25", "0,146,109,223", 5); +_assertPixelApprox(canvas, 50,25, 0,146,109,223, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.html index b74c593dc27..86d06f2485d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'lighter'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,128,191,255, "50,25", "0,128,191,255", 5); +_assertPixelApprox(canvas, 50,25, 0,128,191,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.worker.js index 239ad657393..f9b419ace74 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'lighter'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,128,191,255, "50,25", "0,128,191,255", 5); +_assertPixelApprox(canvas, 50,25, 0,128,191,255, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.html index ba61962a1fa..f4e79c0c240 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-atop'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,64,191,128, "50,25", "0,64,191,128", 5); +_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.worker.js index 517942b9356..db65db83666 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-atop'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,64,191,128, "50,25", "0,64,191,128", 5); +_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.html index 501d5975626..56b4e7704d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,255,96, "50,25", "0,0,255,96", 5); +_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.worker.js index 7e3964a18eb..32765c4c03e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,255,96, "50,25", "0,0,255,96", 5); +_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.html index 09e2f3f6555..cca28c5ebcf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,255,96, "50,25", "0,0,255,96", 5); +_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.worker.js index f0660fe1073..3cf507bf845 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,255,96, "50,25", "0,0,255,96", 5); +_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.html index 291355d1f89..a8ae30131d0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-over'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,36,219,223, "50,25", "0,36,219,223", 5); +_assertPixelApprox(canvas, 50,25, 0,36,219,223, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.worker.js index 126e80741e4..35545c04d4e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-over'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,36,219,223, "50,25", "0,36,219,223", 5); +_assertPixelApprox(canvas, 50,25, 0,36,219,223, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.xor.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.xor.html index b9100d636bb..638bae02ece 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.xor.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.xor.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'xor'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,64,191,128, "50,25", "0,64,191,128", 5); +_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.xor.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.xor.worker.js index d97d3a98413..b21d30d900c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.xor.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.transparent.xor.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'xor'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,64,191,128, "50,25", "0,64,191,128", 5); +_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.html index ea7f416feeb..f10275f4075 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.html @@ -27,7 +27,7 @@ ctx.globalCompositeOperation = 'copy'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.worker.js index 6d8b4c22ec0..3b86c720f5f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.worker.js @@ -23,7 +23,7 @@ ctx.globalCompositeOperation = 'copy'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.html index 37d3ffbda61..8672e9e19f4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.html @@ -27,7 +27,7 @@ ctx.globalCompositeOperation = 'destination-atop'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.worker.js index 9312298b965..69610fc1072 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.worker.js @@ -23,7 +23,7 @@ ctx.globalCompositeOperation = 'destination-atop'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.html index 690a03fcb86..0f069372ad1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.html @@ -28,7 +28,7 @@ ctx.globalCompositeOperation = 'destination-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.worker.js index 5e7b3b3d08d..26b287134b1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.worker.js @@ -24,7 +24,7 @@ ctx.globalCompositeOperation = 'destination-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.html index 704221440f1..6e1ecdd719f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.html @@ -27,7 +27,7 @@ ctx.globalCompositeOperation = 'source-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.worker.js index 79153081190..6da98654cfc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.worker.js @@ -23,7 +23,7 @@ ctx.globalCompositeOperation = 'source-in'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.html index d9f63657e58..de16897f8c4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.html @@ -27,7 +27,7 @@ ctx.globalCompositeOperation = 'source-out'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.worker.js index f77835ae27d..515b587b58b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.worker.js @@ -23,7 +23,7 @@ ctx.globalCompositeOperation = 'source-out'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.translate(0, 25); ctx.fillRect(0, 50, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.html index 30d9022cfa5..5f3c9a19143 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.html @@ -36,8 +36,8 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10); - _assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.worker.js index bd07d4d3713..2faecdf0dd9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.worker.js @@ -32,8 +32,8 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10); - _assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.html index a44416863e0..3605e446983 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.html @@ -36,8 +36,8 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10); - _assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.worker.js index d12ca85fa3b..8b361e066d9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.worker.js @@ -32,8 +32,8 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10); - _assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.html index 9257ff9fb52..c48ee8e16e3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.html @@ -36,8 +36,8 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10); - _assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.worker.js index eb119651eee..b270efc7aa4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.worker.js @@ -32,8 +32,8 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10); - _assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.html index 954f9be2f61..af4c3b7daaa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.html @@ -36,8 +36,8 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10); - _assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.worker.js index b5344ee1bd7..5fe00cf14b0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.worker.js @@ -32,8 +32,8 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10); - _assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.html index 7c9060caed7..4f1c3869b0d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.html @@ -36,8 +36,8 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10); - _assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.worker.js index 06fdd5a1a41..f93185bc66c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.worker.js @@ -32,8 +32,8 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10); - _assertPixelApprox(canvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.html index 81e72a0c762..57c499d81cc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; var offscreenCanvas2 = new OffscreenCanvas(100, 50); ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.worker.js index 85b5e3bef30..bf6bdfe9431 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'copy'; var offscreenCanvas2 = new OffscreenCanvas(100, 50); ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.html index 1083a875ba5..73684800ca5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; var offscreenCanvas2 = new OffscreenCanvas(100, 50); ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js index 3b26653a560..3574add7d80 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; var offscreenCanvas2 = new OffscreenCanvas(100, 50); ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.html index ceac0e58d22..b41c4b749c7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; var offscreenCanvas2 = new OffscreenCanvas(100, 50); ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js index ed739a8eb25..979a0849e81 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-in'; var offscreenCanvas2 = new OffscreenCanvas(100, 50); ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.html index d114ee2d131..99aeefbb6af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; var offscreenCanvas2 = new OffscreenCanvas(100, 50); ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.worker.js index 77d2e442f6e..55596f859de 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; var offscreenCanvas2 = new OffscreenCanvas(100, 50); ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.html index d8ec902f058..0dfd4ae0d0b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.html @@ -26,7 +26,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; var offscreenCanvas2 = new OffscreenCanvas(100, 50); ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.worker.js index 1696690cd90..f0820e03fe0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.worker.js @@ -22,7 +22,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-out'; var offscreenCanvas2 = new OffscreenCanvas(100, 50); ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.html index db3ca44053e..244cc82f556 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.html @@ -37,7 +37,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillRect(0, 50, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.worker.js index 209e56b4841..3aeddac219e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.worker.js @@ -33,7 +33,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillRect(0, 50, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.html index 76153815a42..3624f1baa91 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.html @@ -37,7 +37,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillRect(0, 50, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js index 774fbc093f7..86aaf9fb52a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js @@ -33,7 +33,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillRect(0, 50, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.html index 9951cefd76e..21990f1ae0f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.html @@ -37,7 +37,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillRect(0, 50, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.worker.js index 2eafc21ba3b..184efcd71e3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.worker.js @@ -33,7 +33,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillRect(0, 50, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.html index e6117e2215d..f95da543c91 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.html @@ -37,7 +37,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillRect(0, 50, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.worker.js index 90394a19d12..61c798b7aae 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.worker.js @@ -33,7 +33,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillRect(0, 50, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.html index a0856adad63..4eb6ba519f7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.html @@ -37,7 +37,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillRect(0, 50, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.worker.js index 515411d7d7c..5827c7a1d7f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.worker.js @@ -33,7 +33,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillRect(0, 50, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.3arg.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.3arg.html index 15d7b73a731..8e144b1ba6b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.3arg.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.3arg.html @@ -48,10 +48,10 @@ Promise.all([promise1, promise2]).then(function(response1, response2) { ctx.drawImage(bitmap1, 100, 0); ctx.drawImage(bitmap1, 0, -50); ctx.drawImage(bitmap1, 0, 50); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js index 875e618d189..22cb3653e41 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js @@ -44,10 +44,10 @@ Promise.all([promise1, promise2]).then(function(response1, response2) { ctx.drawImage(bitmap1, 100, 0); ctx.drawImage(bitmap1, 0, -50); ctx.drawImage(bitmap1, 0, 50); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.5arg.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.5arg.html index 046e38f217b..c383d1a4172 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.5arg.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.5arg.html @@ -49,10 +49,10 @@ Promise.all([promise1, promise2]).then(function(response1, response2) { ctx.drawImage(bitmap1, 0, 0, 50, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 50); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js index d5dad453a93..3906a5a00b3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js @@ -45,10 +45,10 @@ Promise.all([promise1, promise2]).then(function(response1, response2) { ctx.drawImage(bitmap1, 0, 0, 50, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 50); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html index c1b927dfaf7..72ffb4ee3b6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html @@ -35,10 +35,10 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, 50); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js index c392330cce9..244bc90fe7f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js @@ -31,10 +31,10 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, 50); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html index 4c0dc527c99..ddfa0cbf7cd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html @@ -50,10 +50,10 @@ Promise.all([promise1, promise2]).then(function(response1, response2) { ctx.drawImage(bitmap1, 0, 0, 100, 50, 100, 0, 100, 50); ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, -50, 100, 50); ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, 50, 100, 50); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js index 292b1134450..81fdae81df6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js @@ -46,10 +46,10 @@ Promise.all([promise1, promise2]).then(function(response1, response2) { ctx.drawImage(bitmap1, 0, 0, 100, 50, 100, 0, 100, 50); ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, -50, 100, 50); ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, 50, 100, 50); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html index 96d7666b989..d94daa861e0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html @@ -50,10 +50,10 @@ Promise.all([promise1, promise2]).then(function(response1, response2) { ctx.drawImage(bitmap1, 0, 0, 100, 50, 100, 0, 50, 50); ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, -25, 100, 25); ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, 50, 100, 25); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js index 32a87f914cd..60fea26afe3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js @@ -46,10 +46,10 @@ Promise.all([promise1, promise2]).then(function(response1, response2) { ctx.drawImage(bitmap1, 0, 0, 100, 50, 100, 0, 50, 50); ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, -25, 100, 25); ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, 50, 100, 25); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html index 53f9dcf2826..ffd60f5da94 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html @@ -35,10 +35,10 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 140, 20, 100, 50, 0, 0, 100, 50); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js index 79604b11a67..1522353ad6e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js @@ -31,10 +31,10 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 140, 20, 100, 50, 0, 0, 100, 50); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html index 1ba1c4571fd..91962b671b1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html @@ -38,14 +38,14 @@ promise.then(function(response) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 51, 26); ctx.fillRect(49, 24, 51, 26); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255", 2); - _assertPixelApprox(canvas, 80,20, 0,255,0,255, "80,20", "0,255,0,255", 2); - _assertPixelApprox(canvas, 20,30, 0,255,0,255, "20,30", "0,255,0,255", 2); - _assertPixelApprox(canvas, 80,30, 0,255,0,255, "80,30", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 20,20, 0,255,0,255, 2); + _assertPixelApprox(canvas, 80,20, 0,255,0,255, 2); + _assertPixelApprox(canvas, 20,30, 0,255,0,255, 2); + _assertPixelApprox(canvas, 80,30, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js index b1667d68cba..6658e217505 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js @@ -34,14 +34,14 @@ promise.then(function(response) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 51, 26); ctx.fillRect(49, 24, 51, 26); - _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); - _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); - _assertPixelApprox(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255", 2); - _assertPixelApprox(canvas, 80,20, 0,255,0,255, "80,20", "0,255,0,255", 2); - _assertPixelApprox(canvas, 20,30, 0,255,0,255, "20,30", "0,255,0,255", 2); - _assertPixelApprox(canvas, 80,30, 0,255,0,255, "80,30", "0,255,0,255", 2); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 20,20, 0,255,0,255, 2); + _assertPixelApprox(canvas, 80,20, 0,255,0,255, 2); + _assertPixelApprox(canvas, 20,30, 0,255,0,255, 2); + _assertPixelApprox(canvas, 80,30, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html index 7382452ec32..505c3fde5d1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js index 59f48f8c2d5..92cb23fe14d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html index ee4e17ec1e8..59d79fd7174 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html @@ -33,7 +33,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js index ba77be0a8d4..94ca08a075b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js @@ -29,7 +29,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html index ee3f758bb96..3324bebcbf9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html @@ -35,7 +35,7 @@ promise.then(function(response) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js index f43f7eef171..d3f1b7e4a11 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js @@ -31,7 +31,7 @@ promise.then(function(response) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.canvas.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.canvas.html index 99251b5a208..9b128710866 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.canvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.canvas.html @@ -27,10 +27,10 @@ ctx2.fillStyle = '#0f0'; ctx2.fillRect(0, 0, 100, 50); ctx.fillStyle = '#f00'; ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js index fb979816999..da01a86ba05 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js @@ -23,10 +23,10 @@ ctx2.fillStyle = '#0f0'; ctx2.fillRect(0, 0, 100, 50); ctx.fillStyle = '#f00'; ctx.drawImage(offscreenCanvas2, 0, 0); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html index 2d7b97a93f8..fa318521585 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html @@ -37,7 +37,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js index d6fa618f77e..d30a05fa9db 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js @@ -33,7 +33,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html index 9d721a50d55..de4ea40d7d7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js index 6a8962b195b..0c4a7fe10a8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html index a4a82615fa9..5f729737827 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html @@ -33,7 +33,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js index b2e91122441..7b16cbb4f5f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js @@ -29,7 +29,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html index a70da77feec..5851fcfb03c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html @@ -36,16 +36,16 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 100, 78, 50, 50, 0, 50, 50, -50); ctx.drawImage(bitmap, 100, 128, 50, -50, 100, 50, -50, -50); - _assertPixelApprox(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js index 567a126f93a..5ca4d14ef63 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js @@ -32,16 +32,16 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 100, 78, 50, 50, 0, 50, 50, -50); ctx.drawImage(bitmap, 100, 128, 50, -50, 100, 50, -50, -50); - _assertPixelApprox(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html index caf5ebaa396..f9d820733d0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html @@ -36,16 +36,16 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 178, 50, -100, 0, 0, 50, 100); ctx.drawImage(bitmap, 0, 78, 50, 100, 50, 100, 50, -100); - _assertPixelApprox(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js index a52ef8269fd..2a6cc81058d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js @@ -32,16 +32,16 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 178, 50, -100, 0, 0, 50, 100); ctx.drawImage(bitmap, 0, 78, 50, 100, 50, 100, 50, -100); - _assertPixelApprox(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html index 3c9dffe3993..9c2a2a1b103 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html @@ -36,16 +36,16 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 100, 78, -100, 50, 0, 0, 50, 50); ctx.drawImage(bitmap, 100, 128, -100, -50, 50, 0, 50, 50); - _assertPixelApprox(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js index de832f4ac7a..ada79f9137d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js @@ -32,16 +32,16 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 100, 78, -100, 50, 0, 0, 50, 50); ctx.drawImage(bitmap, 100, 128, -100, -50, 50, 0, 50, 50); - _assertPixelApprox(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); - _assertPixelApprox(canvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); - _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html index a1911392020..54f8d952693 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html @@ -335,7 +335,7 @@ ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, Infinity, 50); ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, Infinity, Infinity); ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, 100, Infinity); ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, Infinity, Infinity); - _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + _assertPixel(canvas, 50,25, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js index f7484b6577b..a2e77832a20 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js @@ -331,7 +331,7 @@ ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, Infinity, 50); ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, Infinity, Infinity); ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, 100, Infinity); ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, Infinity, Infinity); - _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + _assertPixel(canvas, 50,25, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html index aeeaff6ddaa..6ec22c45d61 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html @@ -35,9 +35,9 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, -1950, 0, 2000, 50); - _assertPixelApprox(canvas, 45,25, 0,255,0,255, "45,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 55,25, 0,255,0,255, "55,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 45,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 55,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js index 6fc94276ac5..ab3a9367dd3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js @@ -31,9 +31,9 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, -1950, 0, 2000, 50); - _assertPixelApprox(canvas, 45,25, 0,255,0,255, "45,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); - _assertPixelApprox(canvas, 55,25, 0,255,0,255, "55,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 45,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 55,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.null.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.null.html index b74b93a3ef2..c32d836ce47 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.null.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.null.html @@ -1,7 +1,6 @@ OffscreenCanvas test: 2d.drawImage.null - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.null.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.null.worker.js index 6c649ac413b..792dc6ef41c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.null.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.null.worker.js @@ -1,4 +1,3 @@ -// META: timeout=long // DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. // OffscreenCanvas test in a worker:2d.drawImage.null // Description: diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html index df3af5bf663..b6bad65df59 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html @@ -36,7 +36,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); ctx.fill(); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js index 3f477c0594c..55212909778 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js @@ -32,7 +32,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); ctx.fill(); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.1.html index 6ffbd39fd88..38857453a44 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.1.html @@ -1,7 +1,6 @@ OffscreenCanvas test: 2d.drawImage.self.1 - @@ -26,10 +25,11 @@ ctx.fillRect(0, 0, 50, 50); ctx.fillStyle = '#f00'; ctx.fillRect(50, 0, 50, 50); ctx.drawImage(canvas, 50, 0); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js index 98706dd0e5d..01d47cb334e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js @@ -1,4 +1,3 @@ -// META: timeout=long // DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. // OffscreenCanvas test in a worker:2d.drawImage.self.1 // Description: @@ -22,10 +21,11 @@ ctx.fillRect(0, 0, 50, 50); ctx.fillStyle = '#f00'; ctx.fillRect(50, 0, 50, 50); ctx.drawImage(canvas, 50, 0); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.2.html index 856d572870a..74d383f7e38 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.2.html @@ -1,7 +1,6 @@ OffscreenCanvas test: 2d.drawImage.self.2 - @@ -28,10 +27,11 @@ ctx.fillRect(0, 0, 100, 1); ctx.drawImage(canvas, 0, 1); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 2); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js index 59e6e9bf190..61a02c87a67 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js @@ -1,4 +1,3 @@ -// META: timeout=long // DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. // OffscreenCanvas test in a worker:2d.drawImage.self.2 // Description: @@ -24,10 +23,11 @@ ctx.fillRect(0, 0, 100, 1); ctx.drawImage(canvas, 0, 1); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 2); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + +_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); +_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); +_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html index 6f568d7d092..d275bf95675 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html @@ -33,7 +33,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js index 7c2c0933060..2d832be3636 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js @@ -29,7 +29,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html index 25f120269d2..741c5efb9fa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html @@ -36,7 +36,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js index 8fa51fb23e7..2fc0caf1c31 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js @@ -32,7 +32,7 @@ var promise = new Promise(function(resolve, reject) { promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html index f66944bf827..84cfaef1a73 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html @@ -1,7 +1,6 @@ OffscreenCanvas test: 2d.drawImage.wrongtype - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js index a5d0dfccbd8..9a52628c610 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js @@ -1,4 +1,3 @@ -// META: timeout=long // DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. // OffscreenCanvas test in a worker:2d.drawImage.wrongtype // Description:Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeError diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html index 77d05e8c845..cc610399dbb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html @@ -37,7 +37,7 @@ promise.then(function(response) { ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50); ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50); ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html index 50c49d97842..d79f821d440 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html @@ -37,7 +37,7 @@ promise.then(function(response) { ctx.drawImage(bitmap, 0, 0, 100, 50); ctx.drawImage(bitmap, 0, 0, 100, 50); ctx.drawImage(bitmap, 0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + _assertPixel(canvas, 50,25, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js index 57985f2ec4a..1465d6c1bc2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js @@ -33,7 +33,7 @@ promise.then(function(response) { ctx.drawImage(bitmap, 0, 0, 100, 50); ctx.drawImage(bitmap, 0, 0, 100, 50); ctx.drawImage(bitmap, 0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + _assertPixel(canvas, 50,25, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js index 1c0c2b15332..654e9bdd744 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js @@ -33,7 +33,7 @@ promise.then(function(response) { ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50); ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50); ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html index 7a931c37486..846b264ee8c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html @@ -23,7 +23,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.clearRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js index 2a7a70e7dc7..5908ecca85b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js @@ -19,7 +19,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.clearRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html index 6f70f0e8547..eb3de8b591f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html @@ -28,7 +28,7 @@ ctx.clip(); ctx.clearRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 16); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js index ac9d849988b..7fb5791cc9a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js @@ -24,7 +24,7 @@ ctx.clip(); ctx.clearRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 16); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html index 3f89f69f55c..c1a3463d313 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html @@ -24,7 +24,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.1; ctx.clearRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js index b0d766a9648..885e389ba52 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js @@ -20,7 +20,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.1; ctx.clearRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html index 828ea03fc26..a77f67a4ba4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html @@ -24,7 +24,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.clearRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js index 6f31696027a..a31962f73e0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js @@ -20,7 +20,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-atop'; ctx.clearRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html index 3c1afcb572c..158294ab3ea 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html @@ -26,10 +26,10 @@ ctx.clearRect(0, 0, 50, 25); ctx.clearRect(100, 0, -50, 25); ctx.clearRect(0, 50, 50, -25); ctx.clearRect(100, 50, -50, -25); -_assertPixel(canvas, 25,12, 0,0,0,0, "25,12", "0,0,0,0"); -_assertPixel(canvas, 75,12, 0,0,0,0, "75,12", "0,0,0,0"); -_assertPixel(canvas, 25,37, 0,0,0,0, "25,37", "0,0,0,0"); -_assertPixel(canvas, 75,37, 0,0,0,0, "75,37", "0,0,0,0"); +_assertPixel(canvas, 25,12, 0,0,0,0); +_assertPixel(canvas, 75,12, 0,0,0,0); +_assertPixel(canvas, 25,37, 0,0,0,0); +_assertPixel(canvas, 75,37, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js index e07e6360952..c7390550b8a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js @@ -22,10 +22,10 @@ ctx.clearRect(0, 0, 50, 25); ctx.clearRect(100, 0, -50, 25); ctx.clearRect(0, 50, 50, -25); ctx.clearRect(100, 50, -50, -25); -_assertPixel(canvas, 25,12, 0,0,0,0, "25,12", "0,0,0,0"); -_assertPixel(canvas, 75,12, 0,0,0,0, "75,12", "0,0,0,0"); -_assertPixel(canvas, 25,37, 0,0,0,0, "25,37", "0,0,0,0"); -_assertPixel(canvas, 75,37, 0,0,0,0, "75,37", "0,0,0,0"); +_assertPixel(canvas, 25,12, 0,0,0,0); +_assertPixel(canvas, 75,12, 0,0,0,0); +_assertPixel(canvas, 25,37, 0,0,0,0); +_assertPixel(canvas, 75,37, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html index dc11a5a9e3c..4d3037b26ba 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html @@ -45,7 +45,7 @@ ctx.clearRect(0, Infinity, Infinity, 50); ctx.clearRect(0, Infinity, Infinity, Infinity); ctx.clearRect(0, Infinity, 100, Infinity); ctx.clearRect(0, 0, Infinity, Infinity); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js index 0e24270901c..e4dc952200d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js @@ -41,7 +41,7 @@ ctx.clearRect(0, Infinity, Infinity, 50); ctx.clearRect(0, Infinity, Infinity, Infinity); ctx.clearRect(0, Infinity, 100, Infinity); ctx.clearRect(0, 0, Infinity, Infinity); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.path.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.path.html index 435d6906cf7..ab813b1e9b8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.path.html @@ -25,7 +25,7 @@ ctx.beginPath(); ctx.rect(0, 0, 100, 50); ctx.clearRect(0, 0, 16, 16); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js index ab6f498bd08..eee973df5a3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js @@ -21,7 +21,7 @@ ctx.beginPath(); ctx.rect(0, 0, 100, 50); ctx.clearRect(0, 0, 16, 16); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html index d543d73240c..050591d6203 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html @@ -27,7 +27,7 @@ ctx.shadowBlur = 0; ctx.shadowOffsetX = 0; ctx.shadowOffsetY = 50; ctx.clearRect(0, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js index 02740b85d00..74ac17c1d2f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js @@ -23,7 +23,7 @@ ctx.shadowBlur = 0; ctx.shadowOffsetX = 0; ctx.shadowOffsetY = 50; ctx.clearRect(0, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html index d861e75788f..cca3c4d32bd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.scale(10, 10); ctx.translate(0, 5); ctx.clearRect(0, -5, 10, 5); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js index bfbaa92fb02..8b76d4e0ae9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.scale(10, 10); ctx.translate(0, 5); ctx.clearRect(0, -5, 10, 5); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html index a418fe62b5c..69bbb5ecc7b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.clearRect(0, 0, 100, 0); ctx.clearRect(0, 0, 0, 50); ctx.clearRect(0, 0, 0, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js index de87699bb4d..24c1c4253f8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.clearRect(0, 0, 100, 0); ctx.clearRect(0, 0, 0, 50); ctx.clearRect(0, 0, 0, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html index f39d9ddb9d4..bad032bb7c7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html @@ -22,7 +22,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js index 7d07bbd00e8..3a42a2a13b1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js @@ -18,7 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html index d39bbc96e85..7043c2355bc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html @@ -29,7 +29,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 16); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js index 0edab03b0eb..926821ac96d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js @@ -25,7 +25,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 16); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html index 1802e96ff3e..880e5700bd3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html @@ -27,10 +27,10 @@ ctx.fillRect(0, 0, 50, 25); ctx.fillRect(100, 0, -50, 25); ctx.fillRect(0, 50, 50, -25); ctx.fillRect(100, 50, -50, -25); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js index 9acaeb4941d..b868dec9ff6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js @@ -23,10 +23,10 @@ ctx.fillRect(0, 0, 50, 25); ctx.fillRect(100, 0, -50, 25); ctx.fillRect(0, 50, 50, -25); ctx.fillRect(100, 50, -50, -25); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html index 70f91e1d2ba..0d545e9f3fa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html @@ -46,7 +46,7 @@ ctx.fillRect(0, Infinity, Infinity, 50); ctx.fillRect(0, Infinity, Infinity, Infinity); ctx.fillRect(0, Infinity, 100, Infinity); ctx.fillRect(0, 0, Infinity, Infinity); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js index dc429214a12..418250e4bf9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js @@ -42,7 +42,7 @@ ctx.fillRect(0, Infinity, Infinity, 50); ctx.fillRect(0, Infinity, Infinity, Infinity); ctx.fillRect(0, Infinity, 100, Infinity); ctx.fillRect(0, 0, Infinity, Infinity); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.path.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.path.html index 8fa577e680c..13974b7e2ab 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.path.html @@ -26,7 +26,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 16, 16); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js index d8a5e00ad84..0200fc568ee 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js @@ -22,7 +22,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 16, 16); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html index 71c677d092a..f3b015f25a7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html @@ -27,7 +27,7 @@ ctx.shadowBlur = 0; ctx.shadowOffsetX = 0; ctx.shadowOffsetY = 50; ctx.fillRect(0, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js index 3da576dfd64..dea83df9aae 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js @@ -23,7 +23,7 @@ ctx.shadowBlur = 0; ctx.shadowOffsetX = 0; ctx.shadowOffsetY = 50; ctx.fillRect(0, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html index 858beb44899..081ac763bdf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html @@ -24,7 +24,7 @@ ctx.scale(10, 10); ctx.translate(0, 5); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -5, 10, 5); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js index 4aed159862a..8d0cb83c1bf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js @@ -20,7 +20,7 @@ ctx.scale(10, 10); ctx.translate(0, 5); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -5, 10, 5); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html index f5d1f1dacb8..3f015475d53 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html @@ -26,7 +26,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 0); ctx.fillRect(0, 0, 0, 50); ctx.fillRect(0, 0, 0, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js index a034c0caa2d..48ee67ae748 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js @@ -22,7 +22,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 0); ctx.fillRect(0, 0, 0, 50); ctx.fillRect(0, 0, 0, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html index 489754a0fb1..caee5d67354 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html @@ -23,7 +23,7 @@ var ctx = canvas.getContext('2d'); ctx.strokeStyle = '#0f0'; ctx.lineWidth = 50; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js index 39d8ac70546..304fc5ba843 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js @@ -19,7 +19,7 @@ var ctx = canvas.getContext('2d'); ctx.strokeStyle = '#0f0'; ctx.lineWidth = 50; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html index 135b6854844..3aa5d0392eb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html @@ -30,7 +30,7 @@ ctx.lineWidth = 50; ctx.strokeRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 16); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js index 0937ac4e0af..d5a50443d3a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js @@ -26,7 +26,7 @@ ctx.lineWidth = 50; ctx.strokeRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 16); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html index 6e4a71899b5..a470939455b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html @@ -24,7 +24,7 @@ ctx.globalAlpha = 0; ctx.strokeStyle = '#f00'; ctx.lineWidth = 50; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js index 25538b368e0..2556f656681 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js @@ -20,7 +20,7 @@ ctx.globalAlpha = 0; ctx.strokeStyle = '#f00'; ctx.lineWidth = 50; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html index ca2e49cbcf0..bfca74c48af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html @@ -24,7 +24,7 @@ ctx.globalCompositeOperation = 'source-in'; ctx.strokeStyle = '#f00'; ctx.lineWidth = 50; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js index 86e8f32ebb3..7c9859c7fb3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js @@ -20,7 +20,7 @@ ctx.globalCompositeOperation = 'source-in'; ctx.strokeStyle = '#f00'; ctx.lineWidth = 50; ctx.strokeRect(25, 24, 50, 2); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html index c2d3f9b50cc..04f33b184cd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html @@ -28,10 +28,10 @@ ctx.strokeRect(12, 12, 26, 1); ctx.strokeRect(88, 12, -26, 1); ctx.strokeRect(12, 38, 26, -1); ctx.strokeRect(88, 38, -26, -1); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js index 7df75594ba2..c80a44680ca 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js @@ -24,10 +24,10 @@ ctx.strokeRect(12, 12, 26, 1); ctx.strokeRect(88, 12, -26, 1); ctx.strokeRect(12, 38, 26, -1); ctx.strokeRect(88, 38, -26, -1); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html index de1617b157b..1688912ab89 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html @@ -47,7 +47,7 @@ ctx.strokeRect(0, Infinity, Infinity, 50); ctx.strokeRect(0, Infinity, Infinity, Infinity); ctx.strokeRect(0, Infinity, 100, Infinity); ctx.strokeRect(0, 0, Infinity, Infinity); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js index 11efdf8a668..4c1bc4c609d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js @@ -43,7 +43,7 @@ ctx.strokeRect(0, Infinity, Infinity, 50); ctx.strokeRect(0, Infinity, Infinity, Infinity); ctx.strokeRect(0, Infinity, 100, Infinity); ctx.strokeRect(0, 0, Infinity, Infinity); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html index 42891df44e4..c3d80bf299e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html @@ -27,7 +27,7 @@ ctx.lineWidth = 5; ctx.strokeRect(0, 0, 16, 16); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js index 81da4d363a5..436bd03107d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 5; ctx.strokeRect(0, 0, 16, 16); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html index 44c98389490..e80d7511d43 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html @@ -30,7 +30,7 @@ ctx.shadowOffsetY = 50; ctx.strokeStyle = '#f00'; ctx.lineWidth = 50; ctx.strokeRect(0, -75, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js index 7b51e5e92b7..13beb42ff09 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js @@ -26,7 +26,7 @@ ctx.shadowOffsetY = 50; ctx.strokeStyle = '#f00'; ctx.lineWidth = 50; ctx.strokeRect(0, -75, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html index fa6676270ab..2b44d0c6272 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html @@ -25,7 +25,7 @@ ctx.translate(0, 5); ctx.strokeStyle = '#0f0'; ctx.lineWidth = 5; ctx.strokeRect(2.5, -2.6, 5, 0.2); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js index c3c2863f32f..5958cf14069 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js @@ -21,7 +21,7 @@ ctx.translate(0, 5); ctx.strokeStyle = '#0f0'; ctx.lineWidth = 5; ctx.strokeRect(2.5, -2.6, 5, 0.2); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html index d663833f443..fe4d77baaa9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html @@ -23,7 +23,7 @@ var ctx = canvas.getContext('2d'); ctx.strokeStyle = '#f00'; ctx.lineWidth = 250; ctx.strokeRect(50, 25, 0, 0); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js index 10750ec9f19..be3da7c88a8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js @@ -19,7 +19,7 @@ var ctx = canvas.getContext('2d'); ctx.strokeStyle = '#f00'; ctx.lineWidth = 250; ctx.strokeRect(50, 25, 0, 0); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html index 962502f2e83..0e234f85e58 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html @@ -25,7 +25,7 @@ ctx.lineWidth = 250; ctx.lineCap = 'round'; ctx.lineJoin = 'round'; ctx.strokeRect(50, 25, 0, 0); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js index eabc3883714..ab24ad34127 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js @@ -21,7 +21,7 @@ ctx.lineWidth = 250; ctx.lineCap = 'round'; ctx.lineJoin = 'round'; ctx.strokeRect(50, 25, 0, 0); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html index 079e84b17d5..0145b2e412c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html @@ -23,7 +23,7 @@ var ctx = canvas.getContext('2d'); ctx.strokeStyle = '#0f0'; ctx.lineWidth = 50; ctx.strokeRect(0, 25, 100, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js index 452fd83aa9e..d9b365f7e80 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js @@ -19,7 +19,7 @@ var ctx = canvas.getContext('2d'); ctx.strokeStyle = '#0f0'; ctx.lineWidth = 50; ctx.strokeRect(0, 25, 100, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html index 1cc44b7c29b..d0c284f8e09 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html @@ -24,7 +24,7 @@ ctx.strokeStyle = '#f00'; ctx.lineWidth = 250; ctx.lineCap = 'round'; ctx.strokeRect(100, 25, 100, 0); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js index 94d407293d6..23513a47507 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js @@ -20,7 +20,7 @@ ctx.strokeStyle = '#f00'; ctx.lineWidth = 250; ctx.lineCap = 'round'; ctx.strokeRect(100, 25, 100, 0); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html index a3c5a041e1c..2441354c907 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html @@ -24,7 +24,7 @@ ctx.strokeStyle = '#0f0'; ctx.lineWidth = 250; ctx.lineJoin = 'round'; ctx.strokeRect(100, 25, 100, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js index 9846ec3c339..0ef9e677254 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js @@ -20,7 +20,7 @@ ctx.strokeStyle = '#0f0'; ctx.lineWidth = 250; ctx.lineJoin = 'round'; ctx.strokeRect(100, 25, 100, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html index d89a51f3c44..af5b04170d4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html @@ -22,23 +22,23 @@ var ctx = offscreenCanvas.getContext('2d'); ctx.fillStyle = new CSSHSL(CSS.deg(180), 0.5, 0.5); ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(offscreenCanvas, 50,25, 64,191,191,255, "50,25", "64,191,191,255", 3); +_assertPixelApprox(offscreenCanvas, 50,25, 64,191,191,255, 3); const color = new CSSHSL(CSS.deg(180), 1, 1); ctx.fillStyle = color; _assertSame(ctx.fillStyle, '#ffffff', "ctx.fillStyle", "'#ffffff'"); ctx.fillRect(0, 0, 100, 50); -_assertPixel(offscreenCanvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255"); +_assertPixel(offscreenCanvas, 50,25, 255,255,255,255); color.l = 0.5; ctx.fillStyle = color; _assertSame(ctx.fillStyle, '#00ffff', "ctx.fillStyle", "'#00ffff'"); ctx.fillRect(0, 0, 100, 50); -_assertPixel(offscreenCanvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,255,255); ctx.fillStyle = new CSSRGB(1, 0, 1).toHSL(); _assertSame(ctx.fillStyle, '#ff00ff', "ctx.fillStyle", "'#ff00ff'"); ctx.fillRect(0, 0, 100, 50); -_assertPixel(offscreenCanvas, 50,25, 255,0,255,255, "50,25", "255,0,255,255"); +_assertPixel(offscreenCanvas, 50,25, 255,0,255,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html new file mode 100644 index 00000000000..68b09d06f54 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.get.halftransparent + + + + +

                                                                      2d.fillStyle.get.halftransparent

                                                                      +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.worker.js new file mode 100644 index 00000000000..de8f491ca36 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.get.halftransparent +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test(""); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +ctx.fillStyle = 'rgba(255,255,255,0.5)'; +_assertSame(ctx.fillStyle, 'rgba(255, 255, 255, 0.5)', "ctx.fillStyle", "'rgba(255, 255, 255, 0.5)'"); +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.html index a6e86cdfe0f..260554c4bcb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillStyle = 'invalid'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js index 43ac52e246f..4e4df4f810b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillStyle = 'invalid'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.html index a8de9932309..53c0f77c8ce 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillStyle = null; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js index f8b661aa221..19b31206388 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillStyle = null; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html index 7d6e78966dd..d4a2466b7d3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js index 99ccafd4934..074d796caf3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html index 67779b50d09..6853ae51ea5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js index d24a0dea8ee..a4226cf8cad 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html index 07881377270..62f4e48ef3c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js index 2e2f03438ad..de3e3791fa7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html index 5989679d702..082ddcd75ef 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js index 8cd4d66bc75..2714bdf835a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html index f60b97ee644..55f92e17ef8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js index 932b6969051..ef3fe13355b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html index 39d5a62fad6..74657fca63e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js index 572e8ccfcb3..a36af9a563a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html index a6c654ffc1a..419b15f72e1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js index 335c2600114..10da1141aac 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html index 644015f43fc..a5acc80ef8c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js index 0f8fb44f37e..e12f96350b9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html index 506f235e650..dc184153996 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js index fb2c3944554..51de0e0b15e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html index aa24927e2b9..84b80615be0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js index 2b0fcc89f24..2d7abab3be6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html index 6e629d16726..a3f2c67ab47 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js index 4ea0a256395..dd66b1d079a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html index d4ceb4d4655..5b809ba567b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js index 8f21b2f39b8..7ef6d8f4751 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html index 5c63ba21490..3e063664fb9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js index d138da57fdb..ed1dec01624 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html index 9320a1c2c80..34f626a0a55 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js index 80ad13a21b6..89042269ab2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html index d4b0499e0a4..3c1a23bf37e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js index 4afd20c40b1..645081df5e1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html index 10773ee1f66..cc874e8fbe1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js index 4fc3e4d5710..f42602ebc3a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html index 97e52102c8f..75014364817 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js index af502b3c707..376cb94c904 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html index 235f586e441..f759e6910bf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js index f048dda3893..58f404175d0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html index 1c38fce40f5..44648751a30 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0, 255.0, 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js index b35ee79812f..34ecf3d3186 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0, 255.0, 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html index 5efeb47bb3f..328d731e491 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0, 255, 0, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js index 0f996ec2811..958d5df352e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0, 255, 0, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html index 34ce23e0c1c..1dc99c24c7b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0, 255, 0, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js index f580f7bd730..f82df16e9ad 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0, 255, 0, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html index c35dd12bd2f..1b72c4f235d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0 255 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js index 02656cf36f4..08dba89ec81 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0 255 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html index 865c76deac1..9044fe81a4e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0 255 0 / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js index 306850a5d91..27ccca6c64f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0 255 0 / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html index 9b17978a468..66cb90876f1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0 255 0 / 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js index 38c492c50e3..3ff4312fcb2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgb(0 255 0 / 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html index a3c18c5a7a9..a0d2239244a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255.0, 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js index 2200d1d53b6..ef45434cabf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255.0, 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html index 20f99598c49..96dcbf61d8f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255, 0, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js index 8fe773cc3bb..e03f5252e9f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255, 0, 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html index 6172eef2a5a..f972e83696f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255, 0, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js index 3582e7d6b70..3bc693f212c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0, 255, 0, 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html index 37d02e60de1..6825e8658af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0 255 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js index 15d3c3ab539..a50cc026bb7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0 255 0)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html index 30a418a6b7e..7c8b19c80d4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0 255 0 / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js index a01ee82555b..e134e34b297 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0 255 0 / 0.2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html index b7f2287732a..b63b46f9d25 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0 255 0 / 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js index 8df045de2eb..3e401de74d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'rgba(0 255 0 / 20%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); +_assertPixel(canvas, 50,25, 0,255,0,51); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html index ca2fa741699..90d3e6037eb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js index 32d4bad2c17..9f0d0a4322a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html index 591d19435ea..d10e3a89106 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = '#0f0f'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js index cd73f70963d..fa84ca13529 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = '#0f0f'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html index f6e1c4f23f0..69394c9a831 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = '#00fF00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js index 55185d44999..cb432b4f99e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = '#00fF00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html index f24f6bcf9bb..80abfe3265e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = '#00ff00ff'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js index 39e5fb5da8f..e114569893e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = '#00ff00ff'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html index 71b3d567099..65e5c187474 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 100%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js index 71028334db2..83d507c826c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 100%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html index 819eebbd9b9..fdd78ad7bea 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl( -240 , 100% , 50% )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js index 182c050398e..0dfc848716e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl( -240 , 100% , 50% )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html index 38fb322d830..51692444076 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(360120, 100%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js index 612a31581f1..54dec44d38e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(360120, 100%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html index 72d8ce8430f..90f30ab92c3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(-360240, 100%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js index f9fb8582e09..43c20668afb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(-360240, 100%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html index 33a373ae99d..7760e236fdc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js index ade7babd4d6..d4c95c10b24 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html index dfd80ad4774..795092931b7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(+120, +100%, +50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js index 4669a0c631e..f5acc2df25b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(+120, +100%, +50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html index 87232ccbc99..1b375468baf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 200%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js index 00ccf329be0..cc3308d7ed6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 200%, 50%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html index 2aabf993ebb..0133f7f50a3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, -200%, 49.9%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255"); +_assertPixel(canvas, 50,25, 127,127,127,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js index 4cce2df08c6..48c23aa10aa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, -200%, 49.9%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255"); +_assertPixel(canvas, 50,25, 127,127,127,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html index 8d2d6bc8bee..e35355c21c0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 100%, 200%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255"); +_assertPixel(canvas, 50,25, 255,255,255,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js index 8dc92dfd55a..ef1ac418c9c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 100%, 200%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255"); +_assertPixel(canvas, 50,25, 255,255,255,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html index a2e56df94dc..c42b6f1f5d1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 100%, -200%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); +_assertPixel(canvas, 50,25, 0,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js index 89d33da8b8a..061685dbdef 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsl(120, 100%, -200%)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); +_assertPixel(canvas, 50,25, 0,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html index f8e130e0323..0defd457ab0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 50%, 0.499)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,127, "50,25", "0,255,0,127"); +_assertPixel(canvas, 50,25, 0,255,0,127); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js index 69a322e74e0..64a26e6ca3b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 50%, 0.499)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,127, "50,25", "0,255,0,127"); +_assertPixel(canvas, 50,25, 0,255,0,127); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html index a38f62464ca..0498edd6da6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla( 120.0 , 100.0% , 50.0% , 1 )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js index 34676fc23fe..6101f0e3ab7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla( 120.0 , 100.0% , 50.0% , 1 )'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html index 5c6a5eea2b2..313ecf277cf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 200%, 50%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js index 968684aad93..8724efd28ab 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 200%, 50%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html index 35cd11fb7f1..761471f43ae 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, -200%, 49.9%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255"); +_assertPixel(canvas, 50,25, 127,127,127,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js index ae40bbd6166..af4271c66cc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, -200%, 49.9%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255"); +_assertPixel(canvas, 50,25, 127,127,127,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html index 117e58f4056..287a23a58a2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 200%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255"); +_assertPixel(canvas, 50,25, 255,255,255,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js index 7e61bec4196..1e10a76dc27 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 200%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255"); +_assertPixel(canvas, 50,25, 255,255,255,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html index 31350f2470a..a0e420cab28 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, -200%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); +_assertPixel(canvas, 50,25, 0,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js index 8a461f16fe1..e746bc34729 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, -200%, 1)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); +_assertPixel(canvas, 50,25, 0,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html index 1476c2dcea1..06837197499 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 50%, 2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js index a7591080c29..61d86a8a95f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 50%, 2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html index 8514c70a296..a8106395194 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 0%, -2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js index f19520cb903..57c0d587eee 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'hsla(120, 100%, 0%, -2)'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); +_assertPixel(canvas, 50,25, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.html index e6fc9baadf2..767768ab2f7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'limE'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js index b4f2e00942f..a8b8552afb5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = 'limE'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html index 3db32fe49de..1a227a436a4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js index 97b03f75fb1..20fc879bc62 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html index 8051a63e9a4..36b95ed247a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js index c3a8cc5026b..c2c6fc0ace0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html index e0a6514a4ae..d208c6296b6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js index f64aa3efb29..c2f90ef320c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html index 07b5fd879a0..2fba5aaf9c6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0 100% 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js index d286c1963ec..6903ae94c2d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0 100% 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html index ababebd7c3b..f340a52aa8c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js index 80e19172abb..8f0cfc0cba5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html index 64fabf39f7c..834a1b7b18e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js index cb708650564..45e074321e3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html index 6c147431114..cd33bbf8007 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js index 6ba2fbd75a6..e0d75717db7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html index 24d347d74cd..fd01b7623af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js index 139eeb01e10..4adb92bb644 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html index 39801a0b131..f1e1b2ab37d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js index b87aff85a73..450556b31be 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html index d86e63afbcc..dc22f99e3d3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js index bf99c939f93..35217d1b807 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html index 0b47dc0cf87..434c15eccb3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js index dcbdc50a8b4..28200cfdd5a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html index c9682085e9f..58ed0e7318f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(0 0 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js index 3cf1c8dae40..1830996c26b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(0 0 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html index 75de3cf8de3..95643739c41 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(0, 0, 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js index a8277929ac3..4591bbde34a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(0, 0, 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html index 074c4bca95c..5ae093eae1e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js index 565395efaca..d9a315c98db 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html index a94393333e1..036f389153a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js index 5768745fc5b..1fc2f5d8638 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html index d87f0929c4b..663557987aa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js index e373b2f632f..1eadf9125b0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html index e27c89a799c..83e1c410f5e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js index e957f8886dd..3807fd33112 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html index acd620c97c5..453ec4bd5c3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#f0'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js index 0863e5fdb17..9bb7e2c33c8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#f0'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html index 14d687ba2df..c1d4e8c1e85 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#g00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js index faa66420bc6..4eaa0b0d0f5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#g00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html index 98d155bcd09..89c23a0074a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#fg00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js index 42ebb181bd7..ceffb191b2b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#fg00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html index 72eee71dee9..4d62d09be03 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#ff000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js index d864a883070..7225544f8b7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#ff000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html index 9ffa1efc4a9..69dfdc723fc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#fg0000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js index d0c6098fa07..2e5a93b49a9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#fg0000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html index 83dab53912f..2be93ca69a8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#ff0000f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js index 453e72f8644..fbd4a887c5e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#ff0000f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html index 9797b81de2e..f67758d42ed 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#fg0000ff'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js index 2c9c0d6076f..fcc230ce9db 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '#fg0000ff'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html index fc8a53e67a0..54e67111379 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0%, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js index f984cfb4a36..3b0bb9165b3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0%, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html index 2375c0d1d9a..7614b8c34d0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(z, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js index 1987103046f..ec906f7fa19 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(z, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html index 7769b878054..13d19ac9240 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 0, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js index cee63524943..370eba20978 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 0, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html index fa36f0c5902..9f01aa21800 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js index cb96b622051..9d53d26c96a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html index 7d17ebf8849..23f38067a9f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100.%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js index 0617cdadead..98f4b1c7214 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100.%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html index 65d4d2c4152..405a0e52b24 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 50%,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js index 656087e0e25..87185470028 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsl(0, 100%, 50%,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html index 0bb55b869ba..ae9d7986b7a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0%, 100%, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js index 152eca19477..b6a70f2a421 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0%, 100%, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html index 8da3bb73ea6..de123411ecd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 0, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js index 3af68054ddf..809c805352d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 0, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html index a41774f50cb..beab07b8624 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 0, 50%, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js index d78c3ec6952..4d2b53bbeba 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'hsla(0, 0, 50%, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html index f42c5e00fba..4ac286e6160 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'darkbrown'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js index 8acea69fdb3..ef588934c15 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'darkbrown'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html index 42fb3fc3b9f..6b54c1816b9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'firebrick1'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js index 7c2bf79d7f0..b66a07419c1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'firebrick1'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html index 8d351754c3e..05cfaa906d6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'red blue'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js index 3f5a115c08d..da51a4ab2ab 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'red blue'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html index b2f4b4f69cd..47aab58ada2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '"red"'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js index 2299ff85277..c167c2b9556 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '"red"'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html index 4fe8e676835..af19e193e04 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '"red'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js index 8280800d13e..8fe3a9b13e6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '"red'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html index 6e4fb4ed6f1..300bb85ee2c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255.0, 0, 0,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js index ae7cb8b154b..3c97d856c7a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255.0, 0, 0,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html index 15aedf0b805..8bc9c079dd1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(100%, 0, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js index 1d09da7389a..7e4e27c9142 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(100%, 0, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html index 93c0a82485d..11e93a1c724 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255, - 1, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js index 21ed0b90bd7..59d89f7b519 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgb(255, - 1, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html index 7ffc5613126..3a0b3991173 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(100%, 0, 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js index 450ed24d48a..efd7640594f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(100%, 0, 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html index 9771a390a89..28a21805204 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, 1. 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js index 974f09cec6e..dfdafb1a7e0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, 1. 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html index 052cda3862b..d9ad0be5e50 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, 1.)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js index e97be9122a2..1dca0eb9b14 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, 1.)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html index 58685cae410..db71a88e704 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, '; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js index a9a4e97a9f6..dff64ba9073 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, '; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html index 23c958e5ce3..00e7791bcbe 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html @@ -24,7 +24,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js index e354cc1b9c7..80a65dcbc2d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js @@ -20,7 +20,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; try { ctx.fillStyle = 'rgba(255, 0, 0, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html index bc53f858007..ce03f7b8403 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html @@ -8,7 +8,7 @@

                                                                      2d.fillStyle.parse.rgb-clamp-1

                                                                      -

                                                                      Assumes colours are clamped to [0,255]. +

                                                                      Assumes colors are clamped to [0,255]. + + + +

                                                                      2d.gradient.interpolate.color

                                                                      +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.color.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.color.worker.js new file mode 100644 index 00000000000..fcf1f84f37c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.color.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.color +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test(""); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 100, 0); +g.addColorStop(0, '#ff0'); +g.addColorStop(1, '#00f'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(canvas, 25,25, 191,191,63,255, 3); +_assertPixelApprox(canvas, 50,25, 127,127,127,255, 3); +_assertPixelApprox(canvas, 75,25, 63,63,191,255, 3); +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html new file mode 100644 index 00000000000..0e7d3b5577b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.coloralpha + + + + +

                                                                      2d.gradient.interpolate.coloralpha

                                                                      +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.worker.js new file mode 100644 index 00000000000..cc1cc9f2191 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.coloralpha +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test(""); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 100, 0); +g.addColorStop(0, 'rgba(255,255,0, 0)'); +g.addColorStop(1, 'rgba(0,0,255, 1)'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(canvas, 25,25, 190,190,65,65, 3); +_assertPixelApprox(canvas, 50,25, 126,126,128,128, 3); +_assertPixelApprox(canvas, 75,25, 62,62,192,192, 3); +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colour.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colour.html deleted file mode 100644 index 6b35d34e115..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colour.html +++ /dev/null @@ -1,34 +0,0 @@ - - -OffscreenCanvas test: 2d.gradient.interpolate.colour - - - - -

                                                                      2d.gradient.interpolate.colour

                                                                      -

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js deleted file mode 100644 index f25f7cfa5e3..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js +++ /dev/null @@ -1,30 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.gradient.interpolate.colour -// Description: -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test(""); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -var g = ctx.createLinearGradient(0, 0, 100, 0); -g.addColorStop(0, '#ff0'); -g.addColorStop(1, '#00f'); -ctx.fillStyle = g; -ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 25,25, 191,191,63,255, "25,25", "191,191,63,255", 3); -_assertPixelApprox(canvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255", 3); -_assertPixelApprox(canvas, 75,25, 63,63,191,255, "75,25", "63,63,191,255", 3); -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html deleted file mode 100644 index 0bf8070adbd..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html +++ /dev/null @@ -1,34 +0,0 @@ - - -OffscreenCanvas test: 2d.gradient.interpolate.colouralpha - - - - -

                                                                      2d.gradient.interpolate.colouralpha

                                                                      -

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js deleted file mode 100644 index f5abf5d31a2..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js +++ /dev/null @@ -1,30 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.gradient.interpolate.colouralpha -// Description: -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test(""); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -var g = ctx.createLinearGradient(0, 0, 100, 0); -g.addColorStop(0, 'rgba(255,255,0, 0)'); -g.addColorStop(1, 'rgba(0,0,255, 1)'); -ctx.fillStyle = g; -ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 25,25, 190,190,65,65, "25,25", "190,190,65,65", 3); -_assertPixelApprox(canvas, 50,25, 126,126,128,128, "50,25", "126,126,128,128", 3); -_assertPixelApprox(canvas, 75,25, 62,62,192,192, "75,25", "62,62,192,192", 3); -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html index 2abbd658701..724ae5c0939 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html @@ -27,9 +27,9 @@ g.addColorStop(0.5, '#0ff'); g.addColorStop(1, '#f0f'); ctx.fillStyle = g; ctx.fillRect(0, 0, 200, 50); -_assertPixelApprox(canvas, 50,25, 127,255,127,255, "50,25", "127,255,127,255", 3); -_assertPixelApprox(canvas, 100,25, 0,255,255,255, "100,25", "0,255,255,255", 3); -_assertPixelApprox(canvas, 150,25, 127,127,255,255, "150,25", "127,127,255,255", 3); +_assertPixelApprox(canvas, 50,25, 127,255,127,255, 3); +_assertPixelApprox(canvas, 100,25, 0,255,255,255, 3); +_assertPixelApprox(canvas, 150,25, 127,127,255,255, 3); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js index f732b0dbbb3..ff3687c1a98 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js @@ -23,9 +23,9 @@ g.addColorStop(0.5, '#0ff'); g.addColorStop(1, '#f0f'); ctx.fillStyle = g; ctx.fillRect(0, 0, 200, 50); -_assertPixelApprox(canvas, 50,25, 127,255,127,255, "50,25", "127,255,127,255", 3); -_assertPixelApprox(canvas, 100,25, 0,255,255,255, "100,25", "0,255,255,255", 3); -_assertPixelApprox(canvas, 150,25, 127,127,255,255, "150,25", "127,127,255,255", 3); +_assertPixelApprox(canvas, 50,25, 127,255,127,255, 3); +_assertPixelApprox(canvas, 100,25, 0,255,255,255, 3); +_assertPixelApprox(canvas, 150,25, 127,127,255,255, 3); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.html index ce53d957e38..0ef97af879a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.html @@ -27,9 +27,9 @@ g.addColorStop(0.4, '#0f0'); g.addColorStop(0.6, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 20,25, 0,255,0,255, "20,25", "0,255,0,255", 2); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); -_assertPixelApprox(canvas, 80,25, 0,255,0,255, "80,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 20,25, 0,255,0,255, 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +_assertPixelApprox(canvas, 80,25, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js index 9a9949fd843..60d10a59d8a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js @@ -23,9 +23,9 @@ g.addColorStop(0.4, '#0f0'); g.addColorStop(0.6, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 20,25, 0,255,0,255, "20,25", "0,255,0,255", 2); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); -_assertPixelApprox(canvas, 80,25, 0,255,0,255, "80,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 20,25, 0,255,0,255, 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +_assertPixelApprox(canvas, 80,25, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html index a63eb3626de..77eb328ecf1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html @@ -40,12 +40,12 @@ g.addColorStop(0.5, '#ff0'); g.addColorStop(1, '#00f'); ctx.fillStyle = g; ctx.fillRect(0, 0, 200, 50); -_assertPixelApprox(canvas, 49,25, 0,0,255,255, "49,25", "0,0,255,255", 16); -_assertPixelApprox(canvas, 51,25, 255,255,0,255, "51,25", "255,255,0,255", 16); -_assertPixelApprox(canvas, 99,25, 0,0,255,255, "99,25", "0,0,255,255", 16); -_assertPixelApprox(canvas, 101,25, 255,255,0,255, "101,25", "255,255,0,255", 16); -_assertPixelApprox(canvas, 149,25, 0,0,255,255, "149,25", "0,0,255,255", 16); -_assertPixelApprox(canvas, 151,25, 255,255,0,255, "151,25", "255,255,0,255", 16); +_assertPixelApprox(canvas, 49,25, 0,0,255,255, 16); +_assertPixelApprox(canvas, 51,25, 255,255,0,255, 16); +_assertPixelApprox(canvas, 99,25, 0,0,255,255, 16); +_assertPixelApprox(canvas, 101,25, 255,255,0,255, 16); +_assertPixelApprox(canvas, 149,25, 0,0,255,255, 16); +_assertPixelApprox(canvas, 151,25, 255,255,0,255, 16); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js index 8fc2fd5640b..e11c85f8d81 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js @@ -36,12 +36,12 @@ g.addColorStop(0.5, '#ff0'); g.addColorStop(1, '#00f'); ctx.fillStyle = g; ctx.fillRect(0, 0, 200, 50); -_assertPixelApprox(canvas, 49,25, 0,0,255,255, "49,25", "0,0,255,255", 16); -_assertPixelApprox(canvas, 51,25, 255,255,0,255, "51,25", "255,255,0,255", 16); -_assertPixelApprox(canvas, 99,25, 0,0,255,255, "99,25", "0,0,255,255", 16); -_assertPixelApprox(canvas, 101,25, 255,255,0,255, "101,25", "255,255,0,255", 16); -_assertPixelApprox(canvas, 149,25, 0,0,255,255, "149,25", "0,0,255,255", 16); -_assertPixelApprox(canvas, 151,25, 255,255,0,255, "151,25", "255,255,0,255", 16); +_assertPixelApprox(canvas, 49,25, 0,0,255,255, 16); +_assertPixelApprox(canvas, 51,25, 255,255,0,255, 16); +_assertPixelApprox(canvas, 99,25, 0,0,255,255, 16); +_assertPixelApprox(canvas, 101,25, 255,255,0,255, 16); +_assertPixelApprox(canvas, 149,25, 0,0,255,255, 16); +_assertPixelApprox(canvas, 151,25, 255,255,0,255, 16); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html index 25ef30ed054..662913b13f9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html @@ -31,11 +31,11 @@ for (var p = 0; p < ps.length; ++p) } ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 30,25, 0,255,0,255, "30,25", "0,255,0,255"); -_assertPixel(canvas, 40,25, 0,255,0,255, "40,25", "0,255,0,255"); -_assertPixel(canvas, 60,25, 0,255,0,255, "60,25", "0,255,0,255"); -_assertPixel(canvas, 80,25, 0,255,0,255, "80,25", "0,255,0,255"); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 30,25, 0,255,0,255); +_assertPixel(canvas, 40,25, 0,255,0,255); +_assertPixel(canvas, 60,25, 0,255,0,255); +_assertPixel(canvas, 80,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js index 8b47778338e..a6329af99ac 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js @@ -27,11 +27,11 @@ for (var p = 0; p < ps.length; ++p) } ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 30,25, 0,255,0,255, "30,25", "0,255,0,255"); -_assertPixel(canvas, 40,25, 0,255,0,255, "40,25", "0,255,0,255"); -_assertPixel(canvas, 60,25, 0,255,0,255, "60,25", "0,255,0,255"); -_assertPixel(canvas, 80,25, 0,255,0,255, "80,25", "0,255,0,255"); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 30,25, 0,255,0,255); +_assertPixel(canvas, 40,25, 0,255,0,255); +_assertPixel(canvas, 60,25, 0,255,0,255); +_assertPixel(canvas, 80,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.html index 98514add789..aa488d94120 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.html @@ -25,7 +25,7 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js index c296f483006..8cc4a88d98e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js @@ -21,7 +21,7 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html index 3ca5a764c2f..15c4c7c39ef 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html @@ -25,9 +25,9 @@ g.addColorStop(0, '#ff0'); g.addColorStop(1, '#00f'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,12, 191,191,63,255, "50,12", "191,191,63,255", 10); -_assertPixelApprox(canvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255", 5); -_assertPixelApprox(canvas, 50,37, 63,63,191,255, "50,37", "63,63,191,255", 10); +_assertPixelApprox(canvas, 50,12, 191,191,63,255, 10); +_assertPixelApprox(canvas, 50,25, 127,127,127,255, 5); +_assertPixelApprox(canvas, 50,37, 63,63,191,255, 10); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js index 319d03c0aec..a25692cf42f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js @@ -21,9 +21,9 @@ g.addColorStop(0, '#ff0'); g.addColorStop(1, '#00f'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,12, 191,191,63,255, "50,12", "191,191,63,255", 10); -_assertPixelApprox(canvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255", 5); -_assertPixelApprox(canvas, 50,37, 63,63,191,255, "50,37", "63,63,191,255", 10); +_assertPixelApprox(canvas, 50,12, 191,191,63,255, 10); +_assertPixelApprox(canvas, 50,25, 127,127,127,255, 5); +_assertPixelApprox(canvas, 50,37, 63,63,191,255, 10); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html index b0f7be685f5..b679d5b83d6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html @@ -28,7 +28,7 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.rect(0, 0, 100, 50); ctx.fill(); -_assertPixel(canvas, 40,20, 0,255,0,255, "40,20", "0,255,0,255"); +_assertPixel(canvas, 40,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js index 4fbb8582bd7..71df9674ce7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js @@ -24,7 +24,7 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.rect(0, 0, 100, 50); ctx.fill(); -_assertPixel(canvas, 40,20, 0,255,0,255, "40,20", "0,255,0,255"); +_assertPixel(canvas, 40,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html index cec97f0a688..9576f2a99e5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html @@ -27,7 +27,7 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 40,20, 0,255,0,255, "40,20", "0,255,0,255"); +_assertPixel(canvas, 40,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js index ef3f42a9d3a..b6dfbf081c8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js @@ -23,7 +23,7 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 40,20, 0,255,0,255, "40,20", "0,255,0,255"); +_assertPixel(canvas, 40,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html index ff1eac4249a..81a5e4e35da 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html @@ -28,15 +28,15 @@ g.addColorStop(1, '#f00'); ctx.strokeStyle = g; ctx.rect(20, 20, 60, 10); ctx.stroke(); -_assertPixel(canvas, 19,19, 0,255,0,255, "19,19", "0,255,0,255"); -_assertPixel(canvas, 20,19, 0,255,0,255, "20,19", "0,255,0,255"); -_assertPixel(canvas, 21,19, 0,255,0,255, "21,19", "0,255,0,255"); -_assertPixel(canvas, 19,20, 0,255,0,255, "19,20", "0,255,0,255"); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); -_assertPixel(canvas, 21,20, 0,255,0,255, "21,20", "0,255,0,255"); -_assertPixel(canvas, 19,21, 0,255,0,255, "19,21", "0,255,0,255"); -_assertPixel(canvas, 20,21, 0,255,0,255, "20,21", "0,255,0,255"); -_assertPixel(canvas, 21,21, 0,255,0,255, "21,21", "0,255,0,255"); +_assertPixel(canvas, 19,19, 0,255,0,255); +_assertPixel(canvas, 20,19, 0,255,0,255); +_assertPixel(canvas, 21,19, 0,255,0,255); +_assertPixel(canvas, 19,20, 0,255,0,255); +_assertPixel(canvas, 20,20, 0,255,0,255); +_assertPixel(canvas, 21,20, 0,255,0,255); +_assertPixel(canvas, 19,21, 0,255,0,255); +_assertPixel(canvas, 20,21, 0,255,0,255); +_assertPixel(canvas, 21,21, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js index 8fc30d69c85..c8744645a02 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js @@ -24,15 +24,15 @@ g.addColorStop(1, '#f00'); ctx.strokeStyle = g; ctx.rect(20, 20, 60, 10); ctx.stroke(); -_assertPixel(canvas, 19,19, 0,255,0,255, "19,19", "0,255,0,255"); -_assertPixel(canvas, 20,19, 0,255,0,255, "20,19", "0,255,0,255"); -_assertPixel(canvas, 21,19, 0,255,0,255, "21,19", "0,255,0,255"); -_assertPixel(canvas, 19,20, 0,255,0,255, "19,20", "0,255,0,255"); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); -_assertPixel(canvas, 21,20, 0,255,0,255, "21,20", "0,255,0,255"); -_assertPixel(canvas, 19,21, 0,255,0,255, "19,21", "0,255,0,255"); -_assertPixel(canvas, 20,21, 0,255,0,255, "20,21", "0,255,0,255"); -_assertPixel(canvas, 21,21, 0,255,0,255, "21,21", "0,255,0,255"); +_assertPixel(canvas, 19,19, 0,255,0,255); +_assertPixel(canvas, 20,19, 0,255,0,255); +_assertPixel(canvas, 21,19, 0,255,0,255); +_assertPixel(canvas, 19,20, 0,255,0,255); +_assertPixel(canvas, 20,20, 0,255,0,255); +_assertPixel(canvas, 21,20, 0,255,0,255); +_assertPixel(canvas, 19,21, 0,255,0,255); +_assertPixel(canvas, 20,21, 0,255,0,255); +_assertPixel(canvas, 21,21, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html index 76273ab1072..91cedc70695 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.strokeStyle = g; ctx.strokeRect(20, 20, 60, 10); -_assertPixel(canvas, 19,19, 0,255,0,255, "19,19", "0,255,0,255"); -_assertPixel(canvas, 20,19, 0,255,0,255, "20,19", "0,255,0,255"); -_assertPixel(canvas, 21,19, 0,255,0,255, "21,19", "0,255,0,255"); -_assertPixel(canvas, 19,20, 0,255,0,255, "19,20", "0,255,0,255"); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); -_assertPixel(canvas, 21,20, 0,255,0,255, "21,20", "0,255,0,255"); -_assertPixel(canvas, 19,21, 0,255,0,255, "19,21", "0,255,0,255"); -_assertPixel(canvas, 20,21, 0,255,0,255, "20,21", "0,255,0,255"); -_assertPixel(canvas, 21,21, 0,255,0,255, "21,21", "0,255,0,255"); +_assertPixel(canvas, 19,19, 0,255,0,255); +_assertPixel(canvas, 20,19, 0,255,0,255); +_assertPixel(canvas, 21,19, 0,255,0,255); +_assertPixel(canvas, 19,20, 0,255,0,255); +_assertPixel(canvas, 20,20, 0,255,0,255); +_assertPixel(canvas, 21,20, 0,255,0,255); +_assertPixel(canvas, 19,21, 0,255,0,255); +_assertPixel(canvas, 20,21, 0,255,0,255); +_assertPixel(canvas, 21,21, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js index 03e91be6e19..0949fc8a195 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.strokeStyle = g; ctx.strokeRect(20, 20, 60, 10); -_assertPixel(canvas, 19,19, 0,255,0,255, "19,19", "0,255,0,255"); -_assertPixel(canvas, 20,19, 0,255,0,255, "20,19", "0,255,0,255"); -_assertPixel(canvas, 21,19, 0,255,0,255, "21,19", "0,255,0,255"); -_assertPixel(canvas, 19,20, 0,255,0,255, "19,20", "0,255,0,255"); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); -_assertPixel(canvas, 21,20, 0,255,0,255, "21,20", "0,255,0,255"); -_assertPixel(canvas, 19,21, 0,255,0,255, "19,21", "0,255,0,255"); -_assertPixel(canvas, 20,21, 0,255,0,255, "20,21", "0,255,0,255"); -_assertPixel(canvas, 21,21, 0,255,0,255, "21,21", "0,255,0,255"); +_assertPixel(canvas, 19,19, 0,255,0,255); +_assertPixel(canvas, 20,19, 0,255,0,255); +_assertPixel(canvas, 21,19, 0,255,0,255); +_assertPixel(canvas, 19,20, 0,255,0,255); +_assertPixel(canvas, 20,20, 0,255,0,255); +_assertPixel(canvas, 21,20, 0,255,0,255); +_assertPixel(canvas, 19,21, 0,255,0,255); +_assertPixel(canvas, 20,21, 0,255,0,255); +_assertPixel(canvas, 21,21, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.html index 0dd162acf5d..5e791079077 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.html @@ -28,9 +28,9 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.translate(-50, 0); ctx.fillRect(50, 0, 100, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js index 57f23ff9da8..62a96e2f677 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js @@ -24,9 +24,9 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.translate(-50, 0); ctx.fillRect(50, 0, 100, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.html index 5856c3992f3..86fb5073349 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.html @@ -29,9 +29,9 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.translate(-150, 0); ctx.fillRect(50, 0, 100, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js index 326a02801ad..dace251811a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js @@ -25,9 +25,9 @@ g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.translate(-150, 0); ctx.fillRect(50, 0, 100, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.html index 3d0359cb9ef..ccbc3ab2839 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.html @@ -29,9 +29,9 @@ ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); ctx.translate(-50, 0); ctx.fillRect(50, 0, 100, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js index 8a3f5024461..8f5a7115eca 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js @@ -25,9 +25,9 @@ ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); ctx.translate(-50, 0); ctx.fillRect(50, 0, 100, 50); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html index 82b6bc139c2..8d54f95f727 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html @@ -28,7 +28,7 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js index 6639cc75229..fa8cee44caa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js @@ -24,7 +24,7 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html new file mode 100644 index 00000000000..e8122781559 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.gradient.object.invalidcolor + + + + +

                                                                      2d.gradient.object.invalidcolor

                                                                      +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.worker.js new file mode 100644 index 00000000000..278df5a0d1b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.object.invalidcolor +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test(""); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 100, 0); +assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, ""); }); +assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'null'); }); +assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'undefined'); }); +assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, null); }); +assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, undefined); }); +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html deleted file mode 100644 index a5841df604f..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html +++ /dev/null @@ -1,32 +0,0 @@ - - -OffscreenCanvas test: 2d.gradient.object.invalidcolour - - - - -

                                                                      2d.gradient.object.invalidcolour

                                                                      -

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js deleted file mode 100644 index 7643645b527..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js +++ /dev/null @@ -1,28 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.gradient.object.invalidcolour -// Description: -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test(""); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -var g = ctx.createLinearGradient(0, 0, 100, 0); -assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, ""); }); -assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'null'); }); -assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'undefined'); }); -assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, null); }); -assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, undefined); }); -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.html index fa48b02f202..05f8e747f2f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.html @@ -27,7 +27,7 @@ ctx.fillStyle = g; g.addColorStop(0.1, '#0f0'); g.addColorStop(0.9, '#0f0'); ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.worker.js index 758934237b7..5960d0afe9f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.worker.js @@ -23,7 +23,7 @@ ctx.fillStyle = g; g.addColorStop(0.1, '#0f0'); g.addColorStop(0.9, '#0f0'); ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html index 80c71480e15..537f960d8dd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js index 373896c892f..99711c732de 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html index 283a5fae2c4..360f1ab7359 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js index 77a4eb84ff3..6af48259a35 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html index 8dae29c43ec..3f3690381d3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js index d0aede162dc..2eca2d573e0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html index 9eb0840c020..700740938c8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js index 606a4d564a6..25ff9b861da 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.html index 2cabc1f8769..12f14ce0055 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js index 4fa20456d4b..6053cb40d19 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html index 424c08c0ff9..242aaa01280 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html @@ -34,15 +34,15 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js index 562570df6ba..15e7a6f696c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js @@ -30,15 +30,15 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html index 7b338dc7923..d51a132f82a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html @@ -34,15 +34,15 @@ ctx.moveTo(30-tol, 40); ctx.lineTo(110, -20-tol); ctx.lineTo(110, 100+tol); ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js index 1a138dabd6b..793d2513dd3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js @@ -30,15 +30,15 @@ ctx.moveTo(30-tol, 40); ctx.lineTo(110, -20-tol); ctx.lineTo(110, 100+tol); ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.html index ce021f4ab6a..9759eb3fa98 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js index f16460b5ae2..2ee6de3479c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.html index a63587ec09e..465ee976fae 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js index c436c6e773f..74567335b42 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.html index 63a3804ab44..7c6fd31d67d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js index 6db3ac8cd8a..6d73c0935ac 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.html index e3e4ac250cb..fbad8b57b56 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js index 5c307376081..aa6ecba5f49 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.html index 994e0b6853c..54794b13fc4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.html @@ -28,15 +28,15 @@ g.addColorStop(0.993, '#f00'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js index 2a8eda9def6..b6d58b656c0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js @@ -24,15 +24,15 @@ g.addColorStop(0.993, '#f00'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.html index e35b67d6603..44b2aa49fc1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js index 39720705a48..e1d3cddb244 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.html index ab26b36bc69..e9e7ce497cd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js index 63b4cb0524f..a3f0235ed7a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#0f0'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.html index f51f65249ce..b66480a52c4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.html @@ -28,15 +28,15 @@ g.addColorStop(0.001, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js index d369c2a5b77..7b90c87d038 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js @@ -24,15 +24,15 @@ g.addColorStop(0.001, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.html index b1a1bddc4b5..c042b03b339 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js index 3bfab866194..7465345f6bf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.html index 6ee97948e74..5da1d592f84 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.html @@ -29,15 +29,15 @@ g.addColorStop(0.99, '#0f0'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js index 74e9662ef58..91dfcb31acf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js @@ -25,15 +25,15 @@ g.addColorStop(0.99, '#0f0'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.html index a21416f4f2e..804589f074b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.html @@ -27,15 +27,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js index 9e476c245f2..11e17fbb80b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js @@ -23,15 +23,15 @@ g.addColorStop(0, '#f00'); g.addColorStop(1, '#f00'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.html index 875c8e6ada9..c54044c0ea6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.html @@ -29,9 +29,9 @@ ctx.fillStyle = g; ctx.translate(50, 25); ctx.scale(10, 10); ctx.fillRect(-5, -2.5, 10, 5); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js index 8daebf732a2..e2159d269f6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js @@ -25,9 +25,9 @@ ctx.fillStyle = g; ctx.translate(50, 25); ctx.scale(10, 10); ctx.fillRect(-5, -2.5, 10, 5); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.html index e2c221e2798..145c2923e90 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.html @@ -30,9 +30,9 @@ ctx.fillStyle = g; ctx.translate(-50, 25); ctx.scale(10, 10); ctx.fillRect(-5, -2.5, 10, 5); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js index 83734174e21..511b7f362a4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js @@ -26,9 +26,9 @@ ctx.fillStyle = g; ctx.translate(-50, 25); ctx.scale(10, 10); ctx.fillRect(-5, -2.5, 10, 5); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.html index ef6a880bc1a..01d14cfbfc0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.html @@ -30,9 +30,9 @@ ctx.fillRect(0, 0, 100, 50); ctx.translate(50, 25); ctx.scale(10, 10); ctx.fillRect(-5, -2.5, 10, 5); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js index a0790f04d5e..b7bf68a979d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js @@ -26,9 +26,9 @@ ctx.fillRect(0, 0, 100, 50); ctx.translate(50, 25); ctx.scale(10, 10); ctx.fillRect(-5, -2.5, 10, 5); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.html index 7b437e34375..80bb9466601 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.html @@ -29,15 +29,15 @@ ctx2.fillRect(0, 0, 100, 50); var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js index f76f25acab5..a2608066eac 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js @@ -25,15 +25,15 @@ ctx2.fillRect(0, 0, 100, 50); var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.html index f99eda30177..965daccd3aa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.html @@ -36,10 +36,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.worker.js index aca360c81a6..725df51307e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.worker.js @@ -32,10 +32,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.html index be6c5a1254b..50cd38ed0f0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.html @@ -27,10 +27,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#f00'; ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js index e710b2a61b3..8f33ec9d8d9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js @@ -23,10 +23,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#f00'; ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.html index b20ce96573d..c6e0b36092e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.html @@ -37,7 +37,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + _assertPixel(canvas, 50,25, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js index 6958906ad0b..1a1d045ba6f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js @@ -33,7 +33,7 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + _assertPixel(canvas, 50,25, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.html index 9ae28ac647f..4c27f26347f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.html @@ -29,10 +29,10 @@ ctx2.fillStyle = '#f00'; ctx2.fillRect(0, 0, 100, 50); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js index 84d4c81f387..c83755c984c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js @@ -25,10 +25,10 @@ ctx2.fillStyle = '#f00'; ctx2.fillRect(0, 0, 100, 50); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.html index 9e65676c9c2..08a6cd896ee 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.html @@ -33,10 +33,10 @@ ctx2.fillStyle = '#f00'; ctx2.fillRect(0, 0, 100, 50); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js index 9ffa1097719..a49dd10213e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js @@ -29,10 +29,10 @@ ctx2.fillStyle = '#f00'; ctx2.fillRect(0, 0, 100, 50); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html index 7e95b5e6cc6..f5d9f5a5582 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html @@ -36,10 +36,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js index 2c822d01efd..82a49c331b5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js @@ -32,10 +32,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html index 00c3d6a0bf1..87158be57ce 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html @@ -39,10 +39,10 @@ promise.then(function(response) { ctx.fillStyle = pattern; ctx.translate(50, 0); ctx.fillRect(-50, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js index 59d3d7d9381..731df50c00f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js @@ -35,10 +35,10 @@ promise.then(function(response) { ctx.fillStyle = pattern; ctx.translate(50, 0); ctx.fillRect(-50, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html index 193f2b4ee2c..a600e6ef578 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html @@ -39,10 +39,10 @@ promise.then(function(response) { ctx.fillStyle = pattern; ctx.translate(50, 0); ctx.fillRect(-50, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js index e3104475295..bd9c115f0da 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js @@ -35,10 +35,10 @@ promise.then(function(response) { ctx.fillStyle = pattern; ctx.translate(50, 0); ctx.fillRect(-50, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html index ff010a0ecd3..c569d877053 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html @@ -39,10 +39,10 @@ promise.then(function(response) { ctx.fillRect(-50, -25, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js index 80fa05ebcbe..cf88ebab734 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js @@ -35,10 +35,10 @@ promise.then(function(response) { ctx.fillRect(-50, -25, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html index 4b2dd935654..4242375b030 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html @@ -41,10 +41,10 @@ promise.then(function(response) { ctx.fillRect(-100, 0, 100, 50); ctx.fillRect(0, 50, 100, 50); ctx.fillRect(100, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js index e0eab9655f9..85a6e43bd10 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js @@ -37,10 +37,10 @@ promise.then(function(response) { ctx.fillRect(-100, 0, 100, 50); ctx.fillRect(0, 50, 100, 50); ctx.fillRect(100, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html index fb0da46c8b7..ccad92e529c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html @@ -33,10 +33,10 @@ ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 25); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js index 088985b9c92..38fa35f138d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js @@ -29,10 +29,10 @@ ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 25); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html index 79061ddcad5..377cc58685b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html @@ -41,10 +41,10 @@ promise.then(function(response) { ctx.restore(); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 25); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js index 453c5a73740..fccfe704267 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js @@ -37,10 +37,10 @@ promise.then(function(response) { ctx.restore(); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 25); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html index a2a3aa7d910..b5613c37980 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html @@ -36,10 +36,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js index 50a9883d104..1f09d297f9d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js @@ -32,10 +32,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html index b11e802f281..a4b2bbdd7d8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html @@ -37,10 +37,10 @@ promise.then(function(response) { ctx.fillStyle = pattern; ctx.translate(-128, -78); ctx.fillRect(128, 78, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js index f81a902796d..ea064ea327a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js @@ -33,10 +33,10 @@ promise.then(function(response) { ctx.fillStyle = pattern; ctx.translate(-128, -78); ctx.fillRect(128, 78, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html index bbffa5d5989..52449506a7d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html @@ -34,10 +34,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js index 469c2a3676d..29c6f8f006d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js @@ -30,10 +30,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html index a0688ba95e2..d01acb8a6de 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html @@ -36,10 +36,10 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.translate(-128, -78); ctx.fillRect(128, 78, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js index abda4b749f3..91c14f98dc0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js @@ -32,10 +32,10 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.translate(-128, -78); ctx.fillRect(128, 78, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html index 7b0b40d12b8..2c91f1d736c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html @@ -37,10 +37,10 @@ promise.then(function(response) { ctx.fillStyle = pattern; ctx.translate(50, 25); ctx.fillRect(-50, -25, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js index a4f70bd051e..147eadf8e71 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js @@ -33,10 +33,10 @@ promise.then(function(response) { ctx.fillStyle = pattern; ctx.translate(50, 25); ctx.fillRect(-50, -25, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html index 36bc3533a97..ed7cee297d3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html @@ -38,10 +38,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'repeat-x'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js index 408a5cc98ae..d7efcfa1e13 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js @@ -34,10 +34,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'repeat-x'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html index ee04dee0258..342ce06aadf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html @@ -39,12 +39,12 @@ promise.then(function(response) { ctx.fillRect(0, -16, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 16); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); - _assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,25, 0,255,0,255); + _assertPixel(canvas, 98,25, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js index 2e51b4469bd..351092befd3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js @@ -35,12 +35,12 @@ promise.then(function(response) { ctx.fillRect(0, -16, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 16); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); - _assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,25, 0,255,0,255); + _assertPixel(canvas, 98,25, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html index ebdafe1c6ee..ad4a4a24614 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html @@ -38,10 +38,10 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 16); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js index 4a2c1c4b2f8..0e031109f28 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js @@ -34,10 +34,10 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 16); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html index 43b68e2fda5..6069902498e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html @@ -38,10 +38,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'repeat-y'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js index 1d6b338c499..09e9b023946 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js @@ -34,10 +34,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, 'repeat-y'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html index fd79559bcd4..fd1cca2e959 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html @@ -39,12 +39,12 @@ promise.then(function(response) { ctx.fillRect(-48, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 50,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 50,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js index f91d0059011..1701d3cc766 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js @@ -35,12 +35,12 @@ promise.then(function(response) { ctx.fillRect(-48, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 50,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 50,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html index 44caa8033ba..b7fbd9eb879 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html @@ -38,10 +38,10 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js index e7b12c95b8b..7242c8ff484 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js @@ -34,10 +34,10 @@ promise.then(function(response) { ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.html index 11c38581353..76e54e9616f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.html @@ -36,10 +36,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, ""); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 200, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js index 9cf75403d39..e3048881e37 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js @@ -32,10 +32,10 @@ promise.then(function(response) { var pattern = ctx.createPattern(bitmap, ""); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 200, 50); - _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); - _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); - _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); - _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + _assertPixel(canvas, 1,1, 0,255,0,255); + _assertPixel(canvas, 98,1, 0,255,0,255); + _assertPixel(canvas, 1,48, 0,255,0,255); + _assertPixel(canvas, 98,48, 0,255,0,255); }, t_fail); }).then(t_pass, t_fail); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.html deleted file mode 100644 index f36184ed2f6..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.html +++ /dev/null @@ -1,32 +0,0 @@ - - -OffscreenCanvas test: 2d.filter.canvasFilterObject.blur.exceptions - - - - -

                                                                      2d.filter.canvasFilterObject.blur.exceptions

                                                                      -

                                                                      Test exceptions on CanvasFilter() blur.object

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html new file mode 100644 index 00000000000..bc476476e47 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.filter.canvasFilterObject.blur.exceptions.tentative + + + + +

                                                                      2d.filter.canvasFilterObject.blur.exceptions.tentative

                                                                      +

                                                                      Test exceptions on CanvasFilter() blur.object

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.worker.js new file mode 100644 index 00000000000..a44868f585c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.blur.exceptions.tentative +// Description:Test exceptions on CanvasFilter() blur.object +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Test exceptions on CanvasFilter() blur.object"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur"}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: undefined}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: "foo"}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: [1,2]}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: NaN}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: {}}); }); +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.worker.js deleted file mode 100644 index 88d774cb275..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.worker.js +++ /dev/null @@ -1,28 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.blur.exceptions -// Description:Test exceptions on CanvasFilter() blur.object -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test("Test exceptions on CanvasFilter() blur.object"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur"}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: undefined}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: "foo"}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: [1,2]}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: NaN}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: {}}); }); -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.html deleted file mode 100644 index cf6ea35b8ad..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.html +++ /dev/null @@ -1,69 +0,0 @@ - - -OffscreenCanvas test: 2d.filter.canvasFilterObject.colorMatrix - - - - -

                                                                      2d.filter.canvasFilterObject.colorMatrix

                                                                      -

                                                                      Test the functionality of ColorMatrix filters in CanvasFilter objects

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html new file mode 100644 index 00000000000..ece8a52216e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html @@ -0,0 +1,69 @@ + + +OffscreenCanvas test: 2d.filter.canvasFilterObject.colorMatrix.tentative + + + + +

                                                                      2d.filter.canvasFilterObject.colorMatrix.tentative

                                                                      +

                                                                      Test the functionality of ColorMatrix filters in CanvasFilter objects

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.worker.js new file mode 100644 index 00000000000..105f312b9ce --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.worker.js @@ -0,0 +1,65 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.colorMatrix.tentative +// Description:Test the functionality of ColorMatrix filters in CanvasFilter objects +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Test the functionality of ColorMatrix filters in CanvasFilter objects"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: undefined}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: "foo"}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: null}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, "a"]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); }); +ctx.fillStyle = "#f00"; +ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 0}); +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(canvas, 10,10, 255,0,0,255, 2); +ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 90}); +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(canvas, 10,10, 0,91,0,255, 2); +ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 180}); +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(canvas, 10,10, 0,109,109,255, 2); +ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 270}); +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(canvas, 10,10, 109,18,255,255, 2); +ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "saturate", values: 0.5}); +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(canvas, 10,10, 155,27,27,255, 2); +ctx.clearRect(0, 0, 100, 50); +ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "luminanceToAlpha"}); +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(canvas, 10,10, 0,0,0,54, 2); +ctx.filter = new CanvasFilter({filter: "colorMatrix", values: [ + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0 +]}); +ctx.fillRect(0, 0, 50, 25); +ctx.fillStyle = "#0f0"; +ctx.fillRect(50, 0, 50, 25); +ctx.fillStyle = "#00f"; +ctx.fillRect(0, 25, 50, 25); +ctx.fillStyle = "#fff"; +ctx.fillRect(50, 25, 50, 25); +_assertPixelApprox(canvas, 10,10, 0,255,0,255, 2); +_assertPixelApprox(canvas, 60,10, 0,255,0,255, 2); +_assertPixelApprox(canvas, 10,30, 0,255,0,255, 2); +_assertPixelApprox(canvas, 60,30, 0,255,0,255, 2); +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.worker.js deleted file mode 100644 index a7b29d45a8d..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.worker.js +++ /dev/null @@ -1,65 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.colorMatrix -// Description:Test the functionality of ColorMatrix filters in CanvasFilter objects -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test("Test the functionality of ColorMatrix filters in CanvasFilter objects"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: undefined}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: "foo"}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: null}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, "a"]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); }); -ctx.fillStyle = "#f00"; -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 0}); -ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 10,10, 255,0,0,255, "10,10", "255,0,0,255", 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 90}); -ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 10,10, 0,91,0,255, "10,10", "0,91,0,255", 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 180}); -ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 10,10, 0,109,109,255, "10,10", "0,109,109,255", 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 270}); -ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 10,10, 109,18,255,255, "10,10", "109,18,255,255", 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "saturate", values: 0.5}); -ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 10,10, 155,27,27,255, "10,10", "155,27,27,255", 2); -ctx.clearRect(0, 0, 100, 50); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "luminanceToAlpha"}); -ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 10,10, 0,0,0,54, "10,10", "0,0,0,54", 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", values: [ - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0 -]}); -ctx.fillRect(0, 0, 50, 25); -ctx.fillStyle = "#0f0"; -ctx.fillRect(50, 0, 50, 25); -ctx.fillStyle = "#00f"; -ctx.fillRect(0, 25, 50, 25); -ctx.fillStyle = "#fff"; -ctx.fillRect(50, 25, 50, 25); -_assertPixelApprox(canvas, 10,10, 0,255,0,255, "10,10", "0,255,0,255", 2); -_assertPixelApprox(canvas, 60,10, 0,255,0,255, "60,10", "0,255,0,255", 2); -_assertPixelApprox(canvas, 10,30, 0,255,0,255, "10,30", "0,255,0,255", 2); -_assertPixelApprox(canvas, 60,30, 0,255,0,255, "60,30", "0,255,0,255", 2); -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html deleted file mode 100644 index 2254e684f4c..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html +++ /dev/null @@ -1,67 +0,0 @@ - - -OffscreenCanvas test: 2d.filter.canvasFilterObject.componentTransfer.discrete - - - - -

                                                                      2d.filter.canvasFilterObject.componentTransfer.discrete

                                                                      -

                                                                      Test pixels on CanvasFilter() componentTransfer with discrete type

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html new file mode 100644 index 00000000000..eaaa12f0a79 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html @@ -0,0 +1,67 @@ + + +OffscreenCanvas test: 2d.filter.canvasFilterObject.componentTransfer.discrete.tentative + + + + +

                                                                      2d.filter.canvasFilterObject.componentTransfer.discrete.tentative

                                                                      +

                                                                      Test pixels on CanvasFilter() componentTransfer with discrete type

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.worker.js new file mode 100644 index 00000000000..f1274f14253 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.worker.js @@ -0,0 +1,63 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.componentTransfer.discrete.tentative +// Description:Test pixels on CanvasFilter() componentTransfer with discrete type +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Test pixels on CanvasFilter() componentTransfer with discrete type"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +// From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement +function getTransformedValue(C, V) { + // Get the right interval + const n = V.length; + const k = C == 1 ? n - 1 : Math.floor(C * n); + return V[k]; +} + +function getColor(inputColor, tableValues) { + const result = [0, 0, 0]; + for (const i in inputColor) { + const C = inputColor[i]/255; + const Cprime = getTransformedValue(C, tableValues[i]); + result[i] = Math.max(0, Math.min(1, Cprime)) * 255; + } + return result; +} + +tableValuesR = [0, 0, 1, 1]; +tableValuesG = [2, 0, 0.5, 3]; +tableValuesB = [1, -1, 5, 0]; +ctx.filter = new CanvasFilter({filter: "componentTransfer", + funcR: {type: "discrete", tableValues: tableValuesR}, + funcG: {type: "discrete", tableValues: tableValuesG}, + funcB: {type: "discrete", tableValues: tableValuesB}, +}); + +const inputColors = [ + [255, 255, 255], + [0, 0, 0], + [127, 0, 34], + [252, 186, 3], + [50, 68, 87], +]; + +for (const color of inputColors) { + let outputColor = getColor(color, [tableValuesR, tableValuesG, tableValuesB]); + ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; + ctx.fillRect(0, 0, 10, 10); + _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, 2); +} +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.worker.js deleted file mode 100644 index 3f5aafe0bc1..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.worker.js +++ /dev/null @@ -1,63 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.componentTransfer.discrete -// Description:Test pixels on CanvasFilter() componentTransfer with discrete type -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test("Test pixels on CanvasFilter() componentTransfer with discrete type"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -// From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement -function getTransformedValue(C, V) { - // Get the right interval - const n = V.length; - const k = C == 1 ? n - 1 : Math.floor(C * n); - return V[k]; -} - -function getColor(inputColor, tableValues) { - const result = [0, 0, 0]; - for (const i in inputColor) { - const C = inputColor[i]/255; - const Cprime = getTransformedValue(C, tableValues[i]); - result[i] = Math.max(0, Math.min(1, Cprime)) * 255; - } - return result; -} - -tableValuesR = [0, 0, 1, 1]; -tableValuesG = [2, 0, 0.5, 3]; -tableValuesB = [1, -1, 5, 0]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "discrete", tableValues: tableValuesR}, - funcG: {type: "discrete", tableValues: tableValuesG}, - funcB: {type: "discrete", tableValues: tableValuesB}, -}); - -const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], -]; - -for (const color of inputColors) { - let outputColor = getColor(color, [tableValuesR, tableValuesG, tableValuesB]); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); -} -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.html deleted file mode 100644 index fbc49079c08..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.html +++ /dev/null @@ -1,58 +0,0 @@ - - -OffscreenCanvas test: 2d.filter.canvasFilterObject.componentTransfer.gamma - - - - -

                                                                      2d.filter.canvasFilterObject.componentTransfer.gamma

                                                                      -

                                                                      Test pixels on CanvasFilter() componentTransfer with gamma type

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html new file mode 100644 index 00000000000..6c5b04ab8a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html @@ -0,0 +1,58 @@ + + +OffscreenCanvas test: 2d.filter.canvasFilterObject.componentTransfer.gamma.tentative + + + + +

                                                                      2d.filter.canvasFilterObject.componentTransfer.gamma.tentative

                                                                      +

                                                                      Test pixels on CanvasFilter() componentTransfer with gamma type

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.worker.js new file mode 100644 index 00000000000..14bf50f89dd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.worker.js @@ -0,0 +1,54 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.componentTransfer.gamma.tentative +// Description:Test pixels on CanvasFilter() componentTransfer with gamma type +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Test pixels on CanvasFilter() componentTransfer with gamma type"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +// From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement +function getColor(inputColor, amplitude, exponent, offset) { + return [ + Math.max(0, Math.min(1, Math.pow(inputColor[0]/255, exponent[0]) * amplitude[0] + offset[0])) * 255, + Math.max(0, Math.min(1, Math.pow(inputColor[1]/255, exponent[1]) * amplitude[1] + offset[1])) * 255, + Math.max(0, Math.min(1, Math.pow(inputColor[2]/255, exponent[2]) * amplitude[2] + offset[2])) * 255, + ]; +} + +const amplitudes = [2, 1.1, 0.5]; +const exponents = [5, 3, 1]; +const offsets = [0.25, 0, 0.5]; +ctx.filter = new CanvasFilter({filter: "componentTransfer", + funcR: {type: "gamma", amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, + funcG: {type: "gamma", amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, + funcB: {type: "gamma", amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, +}); + +const inputColors = [ + [255, 255, 255], + [0, 0, 0], + [127, 0, 34], + [252, 186, 3], + [50, 68, 87], +]; + +for (const color of inputColors) { + let outputColor = getColor(color, amplitudes, exponents, offsets); + ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; + ctx.fillRect(0, 0, 10, 10); + _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, 2); +} +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.worker.js deleted file mode 100644 index 89d04df675b..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.worker.js +++ /dev/null @@ -1,54 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.componentTransfer.gamma -// Description:Test pixels on CanvasFilter() componentTransfer with gamma type -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test("Test pixels on CanvasFilter() componentTransfer with gamma type"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -// From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement -function getColor(inputColor, amplitude, exponent, offset) { - return [ - Math.max(0, Math.min(1, Math.pow(inputColor[0]/255, exponent[0]) * amplitude[0] + offset[0])) * 255, - Math.max(0, Math.min(1, Math.pow(inputColor[1]/255, exponent[1]) * amplitude[1] + offset[1])) * 255, - Math.max(0, Math.min(1, Math.pow(inputColor[2]/255, exponent[2]) * amplitude[2] + offset[2])) * 255, - ]; -} - -const amplitudes = [2, 1.1, 0.5]; -const exponents = [5, 3, 1]; -const offsets = [0.25, 0, 0.5]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "gamma", amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, - funcG: {type: "gamma", amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, - funcB: {type: "gamma", amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, -}); - -const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], -]; - -for (const color of inputColors) { - let outputColor = getColor(color, amplitudes, exponents, offsets); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); -} -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.html deleted file mode 100644 index d698b8a21a1..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.html +++ /dev/null @@ -1,45 +0,0 @@ - - -OffscreenCanvas test: 2d.filter.canvasFilterObject.componentTransfer.identity - - - - -

                                                                      2d.filter.canvasFilterObject.componentTransfer.identity

                                                                      -

                                                                      Test pixels on CanvasFilter() componentTransfer with identity type

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html new file mode 100644 index 00000000000..a6a7a3615a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html @@ -0,0 +1,45 @@ + + +OffscreenCanvas test: 2d.filter.canvasFilterObject.componentTransfer.identity.tentative + + + + +

                                                                      2d.filter.canvasFilterObject.componentTransfer.identity.tentative

                                                                      +

                                                                      Test pixels on CanvasFilter() componentTransfer with identity type

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.worker.js new file mode 100644 index 00000000000..ae749673f43 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.worker.js @@ -0,0 +1,41 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.componentTransfer.identity.tentative +// Description:Test pixels on CanvasFilter() componentTransfer with identity type +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Test pixels on CanvasFilter() componentTransfer with identity type"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +ctx.filter = new CanvasFilter({filter: "componentTransfer", + funcR: {type: "identity"}, + funcG: {type: "identity"}, + funcB: {type: "identity"}, +}); + +const inputColors = [ + [255, 255, 255], + [0, 0, 0], + [127, 0, 34], + [252, 186, 3], + [50, 68, 87], +]; + +for (const color of inputColors) { + ctx.fillStyle = `rgba(${color[0]}, ${color[1]}, ${color[2]}, 1)`, + ctx.fillRect(0, 0, 10, 10); + _assertPixel(canvas, 5, 5, color[0],color[1],color[2],255); +} +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.worker.js deleted file mode 100644 index 18dfef038d7..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.worker.js +++ /dev/null @@ -1,41 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.componentTransfer.identity -// Description:Test pixels on CanvasFilter() componentTransfer with identity type -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test("Test pixels on CanvasFilter() componentTransfer with identity type"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "identity"}, - funcG: {type: "identity"}, - funcB: {type: "identity"}, -}); - -const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], -]; - -for (const color of inputColors) { - ctx.fillStyle = `rgba(${color[0]}, ${color[1]}, ${color[2]}, 1)`, - ctx.fillRect(0, 0, 10, 10); - _assertPixel(canvas, 5, 5, color[0],color[1],color[2],255, "5,5", `${color[0]},${color[1]},${color[2]}`); -} -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.html deleted file mode 100644 index 96b0960af41..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.html +++ /dev/null @@ -1,57 +0,0 @@ - - -OffscreenCanvas test: 2d.filter.canvasFilterObject.componentTransfer.linear - - - - -

                                                                      2d.filter.canvasFilterObject.componentTransfer.linear

                                                                      -

                                                                      Test pixels on CanvasFilter() componentTransfer with linear type

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html new file mode 100644 index 00000000000..f2218b7a1d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html @@ -0,0 +1,57 @@ + + +OffscreenCanvas test: 2d.filter.canvasFilterObject.componentTransfer.linear.tentative + + + + +

                                                                      2d.filter.canvasFilterObject.componentTransfer.linear.tentative

                                                                      +

                                                                      Test pixels on CanvasFilter() componentTransfer with linear type

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.worker.js new file mode 100644 index 00000000000..5117d4a1b3b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.worker.js @@ -0,0 +1,53 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.componentTransfer.linear.tentative +// Description:Test pixels on CanvasFilter() componentTransfer with linear type +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Test pixels on CanvasFilter() componentTransfer with linear type"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +// From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement +function getColor(inputColor, slopes, intercepts) { + return [ + Math.max(0, Math.min(1, inputColor[0]/255 * slopes[0] + intercepts[0])) * 255, + Math.max(0, Math.min(1, inputColor[1]/255 * slopes[1] + intercepts[1])) * 255, + Math.max(0, Math.min(1, inputColor[2]/255 * slopes[2] + intercepts[2])) * 255, + ]; +} + +const slopes = [0.5, 1.2, -0.2]; +const intercepts = [0.25, 0, 0.5]; +ctx.filter = new CanvasFilter({filter: "componentTransfer", + funcR: {type: "linear", slope: slopes[0], intercept: intercepts[0]}, + funcG: {type: "linear", slope: slopes[1], intercept: intercepts[1]}, + funcB: {type: "linear", slope: slopes[2], intercept: intercepts[2]}, +}); + +const inputColors = [ + [255, 255, 255], + [0, 0, 0], + [127, 0, 34], + [252, 186, 3], + [50, 68, 87], +]; + +for (const color of inputColors) { + let outputColor = getColor(color, slopes, intercepts); + ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; + ctx.fillRect(0, 0, 10, 10); + _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, 2); +} +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.worker.js deleted file mode 100644 index 1f3f9d85b01..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.worker.js +++ /dev/null @@ -1,53 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.componentTransfer.linear -// Description:Test pixels on CanvasFilter() componentTransfer with linear type -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test("Test pixels on CanvasFilter() componentTransfer with linear type"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -// From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement -function getColor(inputColor, slopes, intercepts) { - return [ - Math.max(0, Math.min(1, inputColor[0]/255 * slopes[0] + intercepts[0])) * 255, - Math.max(0, Math.min(1, inputColor[1]/255 * slopes[1] + intercepts[1])) * 255, - Math.max(0, Math.min(1, inputColor[2]/255 * slopes[2] + intercepts[2])) * 255, - ]; -} - -const slopes = [0.5, 1.2, -0.2]; -const intercepts = [0.25, 0, 0.5]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "linear", slope: slopes[0], intercept: intercepts[0]}, - funcG: {type: "linear", slope: slopes[1], intercept: intercepts[1]}, - funcB: {type: "linear", slope: slopes[2], intercept: intercepts[2]}, -}); - -const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], -]; - -for (const color of inputColors) { - let outputColor = getColor(color, slopes, intercepts); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); -} -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.html deleted file mode 100644 index 6b9a797b421..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.html +++ /dev/null @@ -1,67 +0,0 @@ - - -OffscreenCanvas test: 2d.filter.canvasFilterObject.componentTransfer.table - - - - -

                                                                      2d.filter.canvasFilterObject.componentTransfer.table

                                                                      -

                                                                      Test pixels on CanvasFilter() componentTransfer with table type

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html new file mode 100644 index 00000000000..9c4c16db851 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html @@ -0,0 +1,67 @@ + + +OffscreenCanvas test: 2d.filter.canvasFilterObject.componentTransfer.table.tentative + + + + +

                                                                      2d.filter.canvasFilterObject.componentTransfer.table.tentative

                                                                      +

                                                                      Test pixels on CanvasFilter() componentTransfer with table type

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.worker.js new file mode 100644 index 00000000000..e2463eb9e76 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.worker.js @@ -0,0 +1,63 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.componentTransfer.table.tentative +// Description:Test pixels on CanvasFilter() componentTransfer with table type +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Test pixels on CanvasFilter() componentTransfer with table type"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +// From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement +function getTransformedValue(C, V) { + // Get the right interval + const n = V.length - 1; + const k = C == 1 ? n - 1 : Math.floor(C * n); + return V[k] + (C - k/n) * n * (V[k + 1] - V[k]); +} + +function getColor(inputColor, tableValues) { + const result = [0, 0, 0]; + for (const i in inputColor) { + const C = inputColor[i]/255; + const Cprime = getTransformedValue(C, tableValues[i]); + result[i] = Math.max(0, Math.min(1, Cprime)) * 255; + } + return result; +} + +tableValuesR = [0, 0, 1, 1]; +tableValuesG = [2, 0, 0.5, 3]; +tableValuesB = [1, -1, 5, 0]; +ctx.filter = new CanvasFilter({filter: "componentTransfer", + funcR: {type: "table", tableValues: tableValuesR}, + funcG: {type: "table", tableValues: tableValuesG}, + funcB: {type: "table", tableValues: tableValuesB}, +}); + +const inputColors = [ + [255, 255, 255], + [0, 0, 0], + [127, 0, 34], + [252, 186, 3], + [50, 68, 87], +]; + +for (const color of inputColors) { + let outputColor = getColor(color, [tableValuesR, tableValuesG, tableValuesB]); + ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; + ctx.fillRect(0, 0, 10, 10); + _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, 2); +} +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.worker.js deleted file mode 100644 index 95a0e292ea4..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.worker.js +++ /dev/null @@ -1,63 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.componentTransfer.table -// Description:Test pixels on CanvasFilter() componentTransfer with table type -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test("Test pixels on CanvasFilter() componentTransfer with table type"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -// From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement -function getTransformedValue(C, V) { - // Get the right interval - const n = V.length - 1; - const k = C == 1 ? n - 1 : Math.floor(C * n); - return V[k] + (C - k/n) * n * (V[k + 1] - V[k]); -} - -function getColor(inputColor, tableValues) { - const result = [0, 0, 0]; - for (const i in inputColor) { - const C = inputColor[i]/255; - const Cprime = getTransformedValue(C, tableValues[i]); - result[i] = Math.max(0, Math.min(1, Cprime)) * 255; - } - return result; -} - -tableValuesR = [0, 0, 1, 1]; -tableValuesG = [2, 0, 0.5, 3]; -tableValuesB = [1, -1, 5, 0]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "table", tableValues: tableValuesR}, - funcG: {type: "table", tableValues: tableValuesG}, - funcB: {type: "table", tableValues: tableValuesB}, -}); - -const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], -]; - -for (const color of inputColors) { - let outputColor = getColor(color, [tableValuesR, tableValuesG, tableValuesB]); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); -} -t.done() - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.html deleted file mode 100644 index 949b6d79474..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.html +++ /dev/null @@ -1,37 +0,0 @@ - - -OffscreenCanvas test: 2d.filter.canvasFilterObject.convolveMatrix.exceptions - - - - -

                                                                      2d.filter.canvasFilterObject.convolveMatrix.exceptions

                                                                      -

                                                                      Test exceptions on CanvasFilter() convolveMatrix

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html new file mode 100644 index 00000000000..b44b074af1b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative + + + + +

                                                                      2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative

                                                                      +

                                                                      Test exceptions on CanvasFilter() convolveMatrix

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.worker.js new file mode 100644 index 00000000000..be361ee7aae --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative +// Description:Test exceptions on CanvasFilter() convolveMatrix +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Test exceptions on CanvasFilter() convolveMatrix"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix"}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", divisor: 2}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: null}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: 1}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, "a"], [0]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); }); +// This should not throw an error +ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]}); +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.worker.js deleted file mode 100644 index 169a26c6d96..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.worker.js +++ /dev/null @@ -1,33 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.convolveMatrix.exceptions -// Description:Test exceptions on CanvasFilter() convolveMatrix -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test("Test exceptions on CanvasFilter() convolveMatrix"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix"}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", divisor: 2}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: null}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: 1}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, "a"], [0]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); }); -// This should not throw an error -ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]}); -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.html deleted file mode 100644 index 93b046d55b0..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.html +++ /dev/null @@ -1,47 +0,0 @@ - - -OffscreenCanvas test: 2d.filter.canvasFilterObject - - - - -

                                                                      2d.filter.canvasFilterObject

                                                                      -

                                                                      Test CanvasFilter() object

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.html new file mode 100644 index 00000000000..e4e06f27d24 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.html @@ -0,0 +1,47 @@ + + +OffscreenCanvas test: 2d.filter.canvasFilterObject.tentative + + + + +

                                                                      2d.filter.canvasFilterObject.tentative

                                                                      +

                                                                      Test CanvasFilter() object

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.worker.js new file mode 100644 index 00000000000..30772a39d10 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.worker.js @@ -0,0 +1,43 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.tentative +// Description:Test CanvasFilter() object +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Test CanvasFilter() object"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +_assert(ctx.filter == 'none', "ctx.filter == 'none'"); +ctx.filter = 'blur(5px)'; +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); +ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); +_assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); +ctx.filter = new CanvasFilter([ + {filter: "gaussianBlur", stdDeviation: 5}, + {filter: "gaussianBlur", stdDeviation: 10} +]); +_assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); +var canvas2 = new OffscreenCanvas(100, 50); +var ctx2 = canvas2.getContext('2d'); +ctx2.filter = ctx.filter; +_assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); +ctx.filter = 'blur(5px)'; +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); +ctx.filter = 'none'; +_assert(ctx.filter == 'none', "ctx.filter == 'none'"); +ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); +ctx.filter = "this string is not a filter and should do nothing"; +_assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html new file mode 100644 index 00000000000..d5123476b5e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html @@ -0,0 +1,130 @@ + + +OffscreenCanvas test: 2d.filter.canvasFilterObject.turbulence.inputTypes.tentative + + + + +

                                                                      2d.filter.canvasFilterObject.turbulence.inputTypes.tentative

                                                                      +

                                                                      Test exceptions on CanvasFilter() turbulence object

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.worker.js new file mode 100644 index 00000000000..bd1cd162fe1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.worker.js @@ -0,0 +1,126 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject.turbulence.inputTypes.tentative +// Description:Test exceptions on CanvasFilter() turbulence object +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Test exceptions on CanvasFilter() turbulence object"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +const errorTestCases = [ + {baseFrequency: {}}, + {baseFrequency: -1}, + {baseFrequency: [0, -1]}, + {baseFrequency: NaN}, + {baseFrequency: Infinity}, + {baseFrequency: undefined}, + {baseFrequency: -Infinity}, + {baseFrequency: "test"}, + + {numOctaves: {}}, + {numOctaves: -1}, + {numOctaves: NaN}, + {numOctaves: Infinity}, + {numOctaves: undefined}, + {numOctaves: -Infinity}, + {numOctaves: [1, 1]}, + {numOctaves: "test"}, + + {seed: {}}, + {seed: NaN}, + {seed: Infinity}, + {seed: undefined}, + {seed: -Infinity}, + {seed: [1, 1]}, + {seed: "test"}, + + {stitchTiles: {}}, + {stitchTiles: NaN}, + {stitchTiles: Infinity}, + {stitchTiles: undefined}, + {stitchTiles: -Infinity}, + {stitchTiles: [1, 1]}, + {stitchTiles: "test"}, + {stitchTiles: null}, + {stitchTiles: []}, + {stitchTiles: [10]}, + {stitchTiles: 30}, + {stitchTiles: false}, + {stitchTiles: true}, + {stitchTiles: "10"}, + {stitchTiles: -1}, + + {type: {}}, + {type: NaN}, + {type: Infinity}, + {type: undefined}, + {type: -Infinity}, + {type: [1, 1]}, + {type: "test"}, + {type: null}, + {type: []}, + {type: [10]}, + {type: 30}, + {type: false}, + {type: true}, + {type: "10"}, + {type: -1}, +] + +// null and [] = 0 when parsed as number +const workingTestCases = [ + {baseFrequency: null}, + {baseFrequency: []}, + {baseFrequency: [10]}, + {baseFrequency: [10, 3]}, + {baseFrequency: 30}, + {baseFrequency: false}, + {baseFrequency: true}, + {baseFrequency: "10"}, + + {numOctaves: null}, + {numOctaves: []}, + {numOctaves: [10]}, + {numOctaves: 30}, + {numOctaves: false}, + {numOctaves: true}, + {numOctaves: "10"}, + + {seed: null}, + {seed: []}, + {seed: [10]}, + {seed: 30}, + {seed: false}, + {seed: true}, + {seed: "10"}, + {seed: -1}, + + {stitchTiles: "stitch"}, + {stitchTiles: "noStitch"}, + + {type: "fractalNoise"}, + {type: "turbulence"}, +] + +for (testCase of errorTestCases) { + const filterOptions = {...{filter: "turbulence"}, ...testCase}; + assert_throws_js(TypeError, function() { CanvasFilter(filterOptions); }); +} + +for (testCase of workingTestCases) { + const filterOptions = {...{filter: "turbulence"}, ...testCase}; + _assert(new CanvasFilter(filterOptions) != null, "new CanvasFilter(filterOptions) != null"); +} +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.worker.js deleted file mode 100644 index 3a38f8f0a79..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.worker.js +++ /dev/null @@ -1,43 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.filter.canvasFilterObject -// Description:Test CanvasFilter() object -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test("Test CanvasFilter() object"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -_assert(ctx.filter == 'none', "ctx.filter == 'none'"); -ctx.filter = 'blur(5px)'; -_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); -ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); -_assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); -ctx.filter = new CanvasFilter([ - {filter: "gaussianBlur", stdDeviation: 5}, - {filter: "gaussianBlur", stdDeviation: 10} -]); -_assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); -var canvas2 = new OffscreenCanvas(100, 50); -var ctx2 = canvas2.getContext('2d'); -ctx2.filter = ctx.filter; -_assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); -ctx.filter = 'blur(5px)'; -_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); -ctx.filter = 'none'; -_assert(ctx.filter == 'none', "ctx.filter == 'none'"); -ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); -ctx.filter = "this string is not a filter and should do nothing"; -_assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.value.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.value.html new file mode 100644 index 00000000000..8f06eb42fa0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.value.html @@ -0,0 +1,56 @@ + + +OffscreenCanvas test: 2d.filter.value + + + + +

                                                                      2d.filter.value

                                                                      +

                                                                      test if ctx.filter works correctly

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.value.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.value.worker.js new file mode 100644 index 00000000000..01403f398c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/filters/2d.filter.value.worker.js @@ -0,0 +1,52 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.filter.value +// Description:test if ctx.filter works correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("test if ctx.filter works correctly"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +_assert(ctx.filter == 'none', "ctx.filter == 'none'"); +ctx.filter = 'blur(5px)'; +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); +ctx.save(); +ctx.filter = 'none'; +_assert(ctx.filter == 'none', "ctx.filter == 'none'"); +ctx.restore(); +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); + +ctx.filter = 'blur(10)'; +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); +ctx.filter = 'blur 10px'; +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); + +ctx.filter = 'inherit'; +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); +ctx.filter = 'initial'; +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); +ctx.filter = 'unset'; +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); + +ctx.filter = ''; +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); +ctx.filter = null; +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); +ctx.filter = undefined; +_assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); + +ctx.filter = 'blur( 5px)'; +assert_equals(ctx.filter, 'blur( 5px)'); +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.butt.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.butt.html index 86fedde9521..7f34def5648 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.butt.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.butt.html @@ -38,18 +38,18 @@ ctx.moveTo(75, 15); ctx.lineTo(75, 35); ctx.stroke(); ctx.fillRect(65, 15, 20, 20); -_assertPixel(canvas, 25,14, 0,255,0,255, "25,14", "0,255,0,255"); -_assertPixel(canvas, 25,15, 0,255,0,255, "25,15", "0,255,0,255"); -_assertPixel(canvas, 25,16, 0,255,0,255, "25,16", "0,255,0,255"); -_assertPixel(canvas, 25,34, 0,255,0,255, "25,34", "0,255,0,255"); -_assertPixel(canvas, 25,35, 0,255,0,255, "25,35", "0,255,0,255"); -_assertPixel(canvas, 25,36, 0,255,0,255, "25,36", "0,255,0,255"); -_assertPixel(canvas, 75,14, 0,255,0,255, "75,14", "0,255,0,255"); -_assertPixel(canvas, 75,15, 0,255,0,255, "75,15", "0,255,0,255"); -_assertPixel(canvas, 75,16, 0,255,0,255, "75,16", "0,255,0,255"); -_assertPixel(canvas, 75,34, 0,255,0,255, "75,34", "0,255,0,255"); -_assertPixel(canvas, 75,35, 0,255,0,255, "75,35", "0,255,0,255"); -_assertPixel(canvas, 75,36, 0,255,0,255, "75,36", "0,255,0,255"); +_assertPixel(canvas, 25,14, 0,255,0,255); +_assertPixel(canvas, 25,15, 0,255,0,255); +_assertPixel(canvas, 25,16, 0,255,0,255); +_assertPixel(canvas, 25,34, 0,255,0,255); +_assertPixel(canvas, 25,35, 0,255,0,255); +_assertPixel(canvas, 25,36, 0,255,0,255); +_assertPixel(canvas, 75,14, 0,255,0,255); +_assertPixel(canvas, 75,15, 0,255,0,255); +_assertPixel(canvas, 75,16, 0,255,0,255); +_assertPixel(canvas, 75,34, 0,255,0,255); +_assertPixel(canvas, 75,35, 0,255,0,255); +_assertPixel(canvas, 75,36, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.butt.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.butt.worker.js index d31be7946a1..3eacba11a3e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.butt.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.butt.worker.js @@ -34,18 +34,18 @@ ctx.moveTo(75, 15); ctx.lineTo(75, 35); ctx.stroke(); ctx.fillRect(65, 15, 20, 20); -_assertPixel(canvas, 25,14, 0,255,0,255, "25,14", "0,255,0,255"); -_assertPixel(canvas, 25,15, 0,255,0,255, "25,15", "0,255,0,255"); -_assertPixel(canvas, 25,16, 0,255,0,255, "25,16", "0,255,0,255"); -_assertPixel(canvas, 25,34, 0,255,0,255, "25,34", "0,255,0,255"); -_assertPixel(canvas, 25,35, 0,255,0,255, "25,35", "0,255,0,255"); -_assertPixel(canvas, 25,36, 0,255,0,255, "25,36", "0,255,0,255"); -_assertPixel(canvas, 75,14, 0,255,0,255, "75,14", "0,255,0,255"); -_assertPixel(canvas, 75,15, 0,255,0,255, "75,15", "0,255,0,255"); -_assertPixel(canvas, 75,16, 0,255,0,255, "75,16", "0,255,0,255"); -_assertPixel(canvas, 75,34, 0,255,0,255, "75,34", "0,255,0,255"); -_assertPixel(canvas, 75,35, 0,255,0,255, "75,35", "0,255,0,255"); -_assertPixel(canvas, 75,36, 0,255,0,255, "75,36", "0,255,0,255"); +_assertPixel(canvas, 25,14, 0,255,0,255); +_assertPixel(canvas, 25,15, 0,255,0,255); +_assertPixel(canvas, 25,16, 0,255,0,255); +_assertPixel(canvas, 25,34, 0,255,0,255); +_assertPixel(canvas, 25,35, 0,255,0,255); +_assertPixel(canvas, 25,36, 0,255,0,255); +_assertPixel(canvas, 75,14, 0,255,0,255); +_assertPixel(canvas, 75,15, 0,255,0,255); +_assertPixel(canvas, 75,16, 0,255,0,255); +_assertPixel(canvas, 75,34, 0,255,0,255); +_assertPixel(canvas, 75,35, 0,255,0,255); +_assertPixel(canvas, 75,36, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.closed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.closed.html index 6a44954f65b..0a3f3fcab77 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.closed.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.closed.html @@ -33,10 +33,10 @@ ctx.lineTo(1000, 1000); ctx.lineTo(1000, 200); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.closed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.closed.worker.js index 278739606c6..24bace4c275 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.closed.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.closed.worker.js @@ -29,10 +29,10 @@ ctx.lineTo(1000, 1000); ctx.lineTo(1000, 200); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.open.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.open.html index 9eab060a4f7..00b72b62d2d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.open.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.open.html @@ -33,10 +33,10 @@ ctx.lineTo(1000, 1000); ctx.lineTo(1000, 200); ctx.lineTo(200, 200); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.open.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.open.worker.js index 94e70b1d6a4..621de99a83f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.open.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.open.worker.js @@ -29,10 +29,10 @@ ctx.lineTo(1000, 1000); ctx.lineTo(1000, 200); ctx.lineTo(200, 200); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.round.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.round.html index ddf6a4d1175..9f6c66567e9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.round.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.round.html @@ -47,18 +47,18 @@ ctx.moveTo(85+tol, 15); ctx.arc(75, 15, 10+tol, 0, Math.PI, true); ctx.arc(75, 35, 10+tol, Math.PI, 0, true); ctx.fill(); -_assertPixel(canvas, 17,6, 0,255,0,255, "17,6", "0,255,0,255"); -_assertPixel(canvas, 25,6, 0,255,0,255, "25,6", "0,255,0,255"); -_assertPixel(canvas, 32,6, 0,255,0,255, "32,6", "0,255,0,255"); -_assertPixel(canvas, 17,43, 0,255,0,255, "17,43", "0,255,0,255"); -_assertPixel(canvas, 25,43, 0,255,0,255, "25,43", "0,255,0,255"); -_assertPixel(canvas, 32,43, 0,255,0,255, "32,43", "0,255,0,255"); -_assertPixel(canvas, 67,6, 0,255,0,255, "67,6", "0,255,0,255"); -_assertPixel(canvas, 75,6, 0,255,0,255, "75,6", "0,255,0,255"); -_assertPixel(canvas, 82,6, 0,255,0,255, "82,6", "0,255,0,255"); -_assertPixel(canvas, 67,43, 0,255,0,255, "67,43", "0,255,0,255"); -_assertPixel(canvas, 75,43, 0,255,0,255, "75,43", "0,255,0,255"); -_assertPixel(canvas, 82,43, 0,255,0,255, "82,43", "0,255,0,255"); +_assertPixel(canvas, 17,6, 0,255,0,255); +_assertPixel(canvas, 25,6, 0,255,0,255); +_assertPixel(canvas, 32,6, 0,255,0,255); +_assertPixel(canvas, 17,43, 0,255,0,255); +_assertPixel(canvas, 25,43, 0,255,0,255); +_assertPixel(canvas, 32,43, 0,255,0,255); +_assertPixel(canvas, 67,6, 0,255,0,255); +_assertPixel(canvas, 75,6, 0,255,0,255); +_assertPixel(canvas, 82,6, 0,255,0,255); +_assertPixel(canvas, 67,43, 0,255,0,255); +_assertPixel(canvas, 75,43, 0,255,0,255); +_assertPixel(canvas, 82,43, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.round.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.round.worker.js index 37fffce3c8d..e744d2906fa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.round.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.round.worker.js @@ -43,18 +43,18 @@ ctx.moveTo(85+tol, 15); ctx.arc(75, 15, 10+tol, 0, Math.PI, true); ctx.arc(75, 35, 10+tol, Math.PI, 0, true); ctx.fill(); -_assertPixel(canvas, 17,6, 0,255,0,255, "17,6", "0,255,0,255"); -_assertPixel(canvas, 25,6, 0,255,0,255, "25,6", "0,255,0,255"); -_assertPixel(canvas, 32,6, 0,255,0,255, "32,6", "0,255,0,255"); -_assertPixel(canvas, 17,43, 0,255,0,255, "17,43", "0,255,0,255"); -_assertPixel(canvas, 25,43, 0,255,0,255, "25,43", "0,255,0,255"); -_assertPixel(canvas, 32,43, 0,255,0,255, "32,43", "0,255,0,255"); -_assertPixel(canvas, 67,6, 0,255,0,255, "67,6", "0,255,0,255"); -_assertPixel(canvas, 75,6, 0,255,0,255, "75,6", "0,255,0,255"); -_assertPixel(canvas, 82,6, 0,255,0,255, "82,6", "0,255,0,255"); -_assertPixel(canvas, 67,43, 0,255,0,255, "67,43", "0,255,0,255"); -_assertPixel(canvas, 75,43, 0,255,0,255, "75,43", "0,255,0,255"); -_assertPixel(canvas, 82,43, 0,255,0,255, "82,43", "0,255,0,255"); +_assertPixel(canvas, 17,6, 0,255,0,255); +_assertPixel(canvas, 25,6, 0,255,0,255); +_assertPixel(canvas, 32,6, 0,255,0,255); +_assertPixel(canvas, 17,43, 0,255,0,255); +_assertPixel(canvas, 25,43, 0,255,0,255); +_assertPixel(canvas, 32,43, 0,255,0,255); +_assertPixel(canvas, 67,6, 0,255,0,255); +_assertPixel(canvas, 75,6, 0,255,0,255); +_assertPixel(canvas, 82,6, 0,255,0,255); +_assertPixel(canvas, 67,43, 0,255,0,255); +_assertPixel(canvas, 75,43, 0,255,0,255); +_assertPixel(canvas, 82,43, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.square.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.square.html index 68f6d2418f1..0fd4b2c71a7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.square.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.square.html @@ -38,18 +38,18 @@ ctx.moveTo(75, 15); ctx.lineTo(75, 35); ctx.stroke(); ctx.fillRect(65, 5, 20, 40); -_assertPixel(canvas, 25,4, 0,255,0,255, "25,4", "0,255,0,255"); -_assertPixel(canvas, 25,5, 0,255,0,255, "25,5", "0,255,0,255"); -_assertPixel(canvas, 25,6, 0,255,0,255, "25,6", "0,255,0,255"); -_assertPixel(canvas, 25,44, 0,255,0,255, "25,44", "0,255,0,255"); -_assertPixel(canvas, 25,45, 0,255,0,255, "25,45", "0,255,0,255"); -_assertPixel(canvas, 25,46, 0,255,0,255, "25,46", "0,255,0,255"); -_assertPixel(canvas, 75,4, 0,255,0,255, "75,4", "0,255,0,255"); -_assertPixel(canvas, 75,5, 0,255,0,255, "75,5", "0,255,0,255"); -_assertPixel(canvas, 75,6, 0,255,0,255, "75,6", "0,255,0,255"); -_assertPixel(canvas, 75,44, 0,255,0,255, "75,44", "0,255,0,255"); -_assertPixel(canvas, 75,45, 0,255,0,255, "75,45", "0,255,0,255"); -_assertPixel(canvas, 75,46, 0,255,0,255, "75,46", "0,255,0,255"); +_assertPixel(canvas, 25,4, 0,255,0,255); +_assertPixel(canvas, 25,5, 0,255,0,255); +_assertPixel(canvas, 25,6, 0,255,0,255); +_assertPixel(canvas, 25,44, 0,255,0,255); +_assertPixel(canvas, 25,45, 0,255,0,255); +_assertPixel(canvas, 25,46, 0,255,0,255); +_assertPixel(canvas, 75,4, 0,255,0,255); +_assertPixel(canvas, 75,5, 0,255,0,255); +_assertPixel(canvas, 75,6, 0,255,0,255); +_assertPixel(canvas, 75,44, 0,255,0,255); +_assertPixel(canvas, 75,45, 0,255,0,255); +_assertPixel(canvas, 75,46, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.square.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.square.worker.js index 5f687a05766..7684bbbc85f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.square.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cap.square.worker.js @@ -34,18 +34,18 @@ ctx.moveTo(75, 15); ctx.lineTo(75, 35); ctx.stroke(); ctx.fillRect(65, 5, 20, 40); -_assertPixel(canvas, 25,4, 0,255,0,255, "25,4", "0,255,0,255"); -_assertPixel(canvas, 25,5, 0,255,0,255, "25,5", "0,255,0,255"); -_assertPixel(canvas, 25,6, 0,255,0,255, "25,6", "0,255,0,255"); -_assertPixel(canvas, 25,44, 0,255,0,255, "25,44", "0,255,0,255"); -_assertPixel(canvas, 25,45, 0,255,0,255, "25,45", "0,255,0,255"); -_assertPixel(canvas, 25,46, 0,255,0,255, "25,46", "0,255,0,255"); -_assertPixel(canvas, 75,4, 0,255,0,255, "75,4", "0,255,0,255"); -_assertPixel(canvas, 75,5, 0,255,0,255, "75,5", "0,255,0,255"); -_assertPixel(canvas, 75,6, 0,255,0,255, "75,6", "0,255,0,255"); -_assertPixel(canvas, 75,44, 0,255,0,255, "75,44", "0,255,0,255"); -_assertPixel(canvas, 75,45, 0,255,0,255, "75,45", "0,255,0,255"); -_assertPixel(canvas, 75,46, 0,255,0,255, "75,46", "0,255,0,255"); +_assertPixel(canvas, 25,4, 0,255,0,255); +_assertPixel(canvas, 25,5, 0,255,0,255); +_assertPixel(canvas, 25,6, 0,255,0,255); +_assertPixel(canvas, 25,44, 0,255,0,255); +_assertPixel(canvas, 25,45, 0,255,0,255); +_assertPixel(canvas, 25,46, 0,255,0,255); +_assertPixel(canvas, 75,4, 0,255,0,255); +_assertPixel(canvas, 75,5, 0,255,0,255); +_assertPixel(canvas, 75,6, 0,255,0,255); +_assertPixel(canvas, 75,44, 0,255,0,255); +_assertPixel(canvas, 75,45, 0,255,0,255); +_assertPixel(canvas, 75,46, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cross.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cross.html index 9569b1c4ef9..09d3a00b317 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cross.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cross.html @@ -30,10 +30,10 @@ ctx.moveTo(110, 50); ctx.lineTo(110, 60); ctx.lineTo(100, 60); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cross.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cross.worker.js index 4f961fbcf44..82b289bdeac 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cross.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.cross.worker.js @@ -26,10 +26,10 @@ ctx.moveTo(110, 50); ctx.lineTo(110, 60); ctx.lineTo(100, 60); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.bevel.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.bevel.html index 32c365ffdc8..45c8d3eb543 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.bevel.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.bevel.html @@ -53,16 +53,16 @@ ctx.moveTo(80, 20); ctx.lineTo(90+tol, 20); ctx.lineTo(80, 10-tol); ctx.fill(); -_assertPixel(canvas, 34,16, 0,255,0,255, "34,16", "0,255,0,255"); -_assertPixel(canvas, 34,15, 0,255,0,255, "34,15", "0,255,0,255"); -_assertPixel(canvas, 35,15, 0,255,0,255, "35,15", "0,255,0,255"); -_assertPixel(canvas, 36,15, 0,255,0,255, "36,15", "0,255,0,255"); -_assertPixel(canvas, 36,14, 0,255,0,255, "36,14", "0,255,0,255"); -_assertPixel(canvas, 84,16, 0,255,0,255, "84,16", "0,255,0,255"); -_assertPixel(canvas, 84,15, 0,255,0,255, "84,15", "0,255,0,255"); -_assertPixel(canvas, 85,15, 0,255,0,255, "85,15", "0,255,0,255"); -_assertPixel(canvas, 86,15, 0,255,0,255, "86,15", "0,255,0,255"); -_assertPixel(canvas, 86,14, 0,255,0,255, "86,14", "0,255,0,255"); +_assertPixel(canvas, 34,16, 0,255,0,255); +_assertPixel(canvas, 34,15, 0,255,0,255); +_assertPixel(canvas, 35,15, 0,255,0,255); +_assertPixel(canvas, 36,15, 0,255,0,255); +_assertPixel(canvas, 36,14, 0,255,0,255); +_assertPixel(canvas, 84,16, 0,255,0,255); +_assertPixel(canvas, 84,15, 0,255,0,255); +_assertPixel(canvas, 85,15, 0,255,0,255); +_assertPixel(canvas, 86,15, 0,255,0,255); +_assertPixel(canvas, 86,14, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.bevel.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.bevel.worker.js index 6917daacf5b..2dfbf34f156 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.bevel.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.bevel.worker.js @@ -49,16 +49,16 @@ ctx.moveTo(80, 20); ctx.lineTo(90+tol, 20); ctx.lineTo(80, 10-tol); ctx.fill(); -_assertPixel(canvas, 34,16, 0,255,0,255, "34,16", "0,255,0,255"); -_assertPixel(canvas, 34,15, 0,255,0,255, "34,15", "0,255,0,255"); -_assertPixel(canvas, 35,15, 0,255,0,255, "35,15", "0,255,0,255"); -_assertPixel(canvas, 36,15, 0,255,0,255, "36,15", "0,255,0,255"); -_assertPixel(canvas, 36,14, 0,255,0,255, "36,14", "0,255,0,255"); -_assertPixel(canvas, 84,16, 0,255,0,255, "84,16", "0,255,0,255"); -_assertPixel(canvas, 84,15, 0,255,0,255, "84,15", "0,255,0,255"); -_assertPixel(canvas, 85,15, 0,255,0,255, "85,15", "0,255,0,255"); -_assertPixel(canvas, 86,15, 0,255,0,255, "86,15", "0,255,0,255"); -_assertPixel(canvas, 86,14, 0,255,0,255, "86,14", "0,255,0,255"); +_assertPixel(canvas, 34,16, 0,255,0,255); +_assertPixel(canvas, 34,15, 0,255,0,255); +_assertPixel(canvas, 35,15, 0,255,0,255); +_assertPixel(canvas, 36,15, 0,255,0,255); +_assertPixel(canvas, 36,14, 0,255,0,255); +_assertPixel(canvas, 84,16, 0,255,0,255); +_assertPixel(canvas, 84,15, 0,255,0,255); +_assertPixel(canvas, 85,15, 0,255,0,255); +_assertPixel(canvas, 86,15, 0,255,0,255); +_assertPixel(canvas, 86,14, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.closed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.closed.html index 63a06536200..5e88ad0d017 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.closed.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.closed.html @@ -32,10 +32,10 @@ ctx.lineTo(1000, 1000); ctx.lineTo(1000, 50); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.closed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.closed.worker.js index 72c6038146a..f2b029ecaf0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.closed.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.closed.worker.js @@ -28,10 +28,10 @@ ctx.lineTo(1000, 1000); ctx.lineTo(1000, 50); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.miter.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.miter.html index 4be38c05757..64918eca383 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.miter.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.miter.html @@ -44,16 +44,16 @@ ctx.lineTo(80, 40); ctx.stroke(); ctx.fillRect(60, 10, 30, 20); ctx.fillRect(70, 10, 20, 30); -_assertPixel(canvas, 38,12, 0,255,0,255, "38,12", "0,255,0,255"); -_assertPixel(canvas, 39,11, 0,255,0,255, "39,11", "0,255,0,255"); -_assertPixel(canvas, 40,10, 0,255,0,255, "40,10", "0,255,0,255"); -_assertPixel(canvas, 41,9, 0,255,0,255, "41,9", "0,255,0,255"); -_assertPixel(canvas, 42,8, 0,255,0,255, "42,8", "0,255,0,255"); -_assertPixel(canvas, 88,12, 0,255,0,255, "88,12", "0,255,0,255"); -_assertPixel(canvas, 89,11, 0,255,0,255, "89,11", "0,255,0,255"); -_assertPixel(canvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); -_assertPixel(canvas, 91,9, 0,255,0,255, "91,9", "0,255,0,255"); -_assertPixel(canvas, 92,8, 0,255,0,255, "92,8", "0,255,0,255"); +_assertPixel(canvas, 38,12, 0,255,0,255); +_assertPixel(canvas, 39,11, 0,255,0,255); +_assertPixel(canvas, 40,10, 0,255,0,255); +_assertPixel(canvas, 41,9, 0,255,0,255); +_assertPixel(canvas, 42,8, 0,255,0,255); +_assertPixel(canvas, 88,12, 0,255,0,255); +_assertPixel(canvas, 89,11, 0,255,0,255); +_assertPixel(canvas, 90,10, 0,255,0,255); +_assertPixel(canvas, 91,9, 0,255,0,255); +_assertPixel(canvas, 92,8, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.miter.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.miter.worker.js index 603b3266a48..02712a806eb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.miter.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.miter.worker.js @@ -40,16 +40,16 @@ ctx.lineTo(80, 40); ctx.stroke(); ctx.fillRect(60, 10, 30, 20); ctx.fillRect(70, 10, 20, 30); -_assertPixel(canvas, 38,12, 0,255,0,255, "38,12", "0,255,0,255"); -_assertPixel(canvas, 39,11, 0,255,0,255, "39,11", "0,255,0,255"); -_assertPixel(canvas, 40,10, 0,255,0,255, "40,10", "0,255,0,255"); -_assertPixel(canvas, 41,9, 0,255,0,255, "41,9", "0,255,0,255"); -_assertPixel(canvas, 42,8, 0,255,0,255, "42,8", "0,255,0,255"); -_assertPixel(canvas, 88,12, 0,255,0,255, "88,12", "0,255,0,255"); -_assertPixel(canvas, 89,11, 0,255,0,255, "89,11", "0,255,0,255"); -_assertPixel(canvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); -_assertPixel(canvas, 91,9, 0,255,0,255, "91,9", "0,255,0,255"); -_assertPixel(canvas, 92,8, 0,255,0,255, "92,8", "0,255,0,255"); +_assertPixel(canvas, 38,12, 0,255,0,255); +_assertPixel(canvas, 39,11, 0,255,0,255); +_assertPixel(canvas, 40,10, 0,255,0,255); +_assertPixel(canvas, 41,9, 0,255,0,255); +_assertPixel(canvas, 42,8, 0,255,0,255); +_assertPixel(canvas, 88,12, 0,255,0,255); +_assertPixel(canvas, 89,11, 0,255,0,255); +_assertPixel(canvas, 90,10, 0,255,0,255); +_assertPixel(canvas, 91,9, 0,255,0,255); +_assertPixel(canvas, 92,8, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.open.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.open.html index 5520601c30c..48154df59b6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.open.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.open.html @@ -32,10 +32,10 @@ ctx.lineTo(1000, 1000); ctx.lineTo(1000, 50); ctx.lineTo(100, 50); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.open.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.open.worker.js index d946fc1ceb0..133854bf548 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.open.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.open.worker.js @@ -28,10 +28,10 @@ ctx.lineTo(1000, 1000); ctx.lineTo(1000, 50); ctx.lineTo(100, 50); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.parallel.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.parallel.html index fbd243723bf..fdda123dd8a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.parallel.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.parallel.html @@ -30,10 +30,10 @@ ctx.moveTo(-100, 25); ctx.lineTo(0, 25); ctx.lineTo(-100, 25); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.parallel.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.parallel.worker.js index a625bca1049..68ed957b6d7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.parallel.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.parallel.worker.js @@ -26,10 +26,10 @@ ctx.moveTo(-100, 25); ctx.lineTo(0, 25); ctx.lineTo(-100, 25); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.round.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.round.html index 79f01ed3695..ebc71c30f83 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.round.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.round.html @@ -51,16 +51,16 @@ ctx.beginPath(); ctx.moveTo(80, 20); ctx.arc(80, 20, 10+tol, 0, 2*Math.PI, true); ctx.fill(); -_assertPixel(canvas, 36,14, 0,255,0,255, "36,14", "0,255,0,255"); -_assertPixel(canvas, 36,13, 0,255,0,255, "36,13", "0,255,0,255"); -_assertPixel(canvas, 37,13, 0,255,0,255, "37,13", "0,255,0,255"); -_assertPixel(canvas, 38,13, 0,255,0,255, "38,13", "0,255,0,255"); -_assertPixel(canvas, 38,12, 0,255,0,255, "38,12", "0,255,0,255"); -_assertPixel(canvas, 86,14, 0,255,0,255, "86,14", "0,255,0,255"); -_assertPixel(canvas, 86,13, 0,255,0,255, "86,13", "0,255,0,255"); -_assertPixel(canvas, 87,13, 0,255,0,255, "87,13", "0,255,0,255"); -_assertPixel(canvas, 88,13, 0,255,0,255, "88,13", "0,255,0,255"); -_assertPixel(canvas, 88,12, 0,255,0,255, "88,12", "0,255,0,255"); +_assertPixel(canvas, 36,14, 0,255,0,255); +_assertPixel(canvas, 36,13, 0,255,0,255); +_assertPixel(canvas, 37,13, 0,255,0,255); +_assertPixel(canvas, 38,13, 0,255,0,255); +_assertPixel(canvas, 38,12, 0,255,0,255); +_assertPixel(canvas, 86,14, 0,255,0,255); +_assertPixel(canvas, 86,13, 0,255,0,255); +_assertPixel(canvas, 87,13, 0,255,0,255); +_assertPixel(canvas, 88,13, 0,255,0,255); +_assertPixel(canvas, 88,12, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.round.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.round.worker.js index 475070b219c..c7da3520b3f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.round.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.join.round.worker.js @@ -47,16 +47,16 @@ ctx.beginPath(); ctx.moveTo(80, 20); ctx.arc(80, 20, 10+tol, 0, 2*Math.PI, true); ctx.fill(); -_assertPixel(canvas, 36,14, 0,255,0,255, "36,14", "0,255,0,255"); -_assertPixel(canvas, 36,13, 0,255,0,255, "36,13", "0,255,0,255"); -_assertPixel(canvas, 37,13, 0,255,0,255, "37,13", "0,255,0,255"); -_assertPixel(canvas, 38,13, 0,255,0,255, "38,13", "0,255,0,255"); -_assertPixel(canvas, 38,12, 0,255,0,255, "38,12", "0,255,0,255"); -_assertPixel(canvas, 86,14, 0,255,0,255, "86,14", "0,255,0,255"); -_assertPixel(canvas, 86,13, 0,255,0,255, "86,13", "0,255,0,255"); -_assertPixel(canvas, 87,13, 0,255,0,255, "87,13", "0,255,0,255"); -_assertPixel(canvas, 88,13, 0,255,0,255, "88,13", "0,255,0,255"); -_assertPixel(canvas, 88,12, 0,255,0,255, "88,12", "0,255,0,255"); +_assertPixel(canvas, 36,14, 0,255,0,255); +_assertPixel(canvas, 36,13, 0,255,0,255); +_assertPixel(canvas, 37,13, 0,255,0,255); +_assertPixel(canvas, 38,13, 0,255,0,255); +_assertPixel(canvas, 38,12, 0,255,0,255); +_assertPixel(canvas, 86,14, 0,255,0,255); +_assertPixel(canvas, 86,13, 0,255,0,255); +_assertPixel(canvas, 87,13, 0,255,0,255); +_assertPixel(canvas, 88,13, 0,255,0,255); +_assertPixel(canvas, 88,12, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.acute.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.acute.html index 4620e179fda..fd6902ca4d6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.acute.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.acute.html @@ -38,10 +38,10 @@ ctx.moveTo(100, 1000); ctx.lineTo(100, 100); ctx.lineTo(1000, 1000); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.acute.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.acute.worker.js index abb963976bd..ef2954a7fe2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.acute.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.acute.worker.js @@ -34,10 +34,10 @@ ctx.moveTo(100, 1000); ctx.lineTo(100, 100); ctx.lineTo(1000, 1000); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.exceeded.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.exceeded.html index 3e8b444d002..fd0e7a1ca2f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.exceeded.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.exceeded.html @@ -31,10 +31,10 @@ ctx.moveTo(200, 1000); ctx.lineTo(200, 200); ctx.lineTo(1000, 201); // slightly non-right-angle to avoid being a special case ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.exceeded.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.exceeded.worker.js index cccdbc552af..2e0fbd4910c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.exceeded.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.exceeded.worker.js @@ -27,10 +27,10 @@ ctx.moveTo(200, 1000); ctx.lineTo(200, 200); ctx.lineTo(1000, 201); // slightly non-right-angle to avoid being a special case ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.lineedge.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.lineedge.html index e6418773449..292ed560de6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.lineedge.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.lineedge.html @@ -28,10 +28,10 @@ ctx.strokeStyle = '#f00'; ctx.miterLimit = 1.414; ctx.beginPath(); ctx.strokeRect(100, 25, 200, 0); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.lineedge.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.lineedge.worker.js index fca0924df83..c7fa1e6d173 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.lineedge.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.lineedge.worker.js @@ -24,10 +24,10 @@ ctx.strokeStyle = '#f00'; ctx.miterLimit = 1.414; ctx.beginPath(); ctx.strokeRect(100, 25, 200, 0); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.obtuse.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.obtuse.html index c956dcffbe6..4e60253ddca 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.obtuse.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.obtuse.html @@ -38,10 +38,10 @@ ctx.moveTo(800, 10000); ctx.lineTo(800, 300); ctx.lineTo(10000, -8900); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.obtuse.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.obtuse.worker.js index 8b369aa33aa..3cf78ed21e8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.obtuse.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.obtuse.worker.js @@ -34,10 +34,10 @@ ctx.moveTo(800, 10000); ctx.lineTo(800, 300); ctx.lineTo(10000, -8900); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.rightangle.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.rightangle.html index 331dbb4fb26..33cbe5d02c3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.rightangle.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.rightangle.html @@ -31,10 +31,10 @@ ctx.moveTo(200, 1000); ctx.lineTo(200, 200); ctx.lineTo(1000, 200); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.rightangle.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.rightangle.worker.js index 15bca3b57ca..895318c3ef3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.rightangle.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.rightangle.worker.js @@ -27,10 +27,10 @@ ctx.moveTo(200, 1000); ctx.lineTo(200, 200); ctx.lineTo(1000, 200); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.within.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.within.html index ccda7aa48dc..4af7c84a6a1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.within.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.within.html @@ -31,10 +31,10 @@ ctx.moveTo(200, 1000); ctx.lineTo(200, 200); ctx.lineTo(1000, 201); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.within.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.within.worker.js index 0a5c16a17b0..64fe4312c27 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.within.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.miter.within.worker.js @@ -27,10 +27,10 @@ ctx.moveTo(200, 1000); ctx.lineTo(200, 200); ctx.lineTo(1000, 201); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.union.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.union.html index e3f85ea255b..60defee7cb8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.union.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.union.html @@ -31,12 +31,12 @@ ctx.lineTo(100, 25); ctx.lineTo(0, 26); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 25,1, 0,255,0,255, "25,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 25,1, 0,255,0,255, "25,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 25,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 25,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.union.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.union.worker.js index 9770fc7ad79..ed262373374 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.union.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.union.worker.js @@ -27,12 +27,12 @@ ctx.lineTo(100, 25); ctx.lineTo(0, 26); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 25,1, 0,255,0,255, "25,1", "0,255,0,255"); -_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 25,1, 0,255,0,255, "25,1", "0,255,0,255"); -_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 25,1, 0,255,0,255); +_assertPixel(canvas, 48,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 25,1, 0,255,0,255); +_assertPixel(canvas, 48,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.basic.html index 1f8513df9f9..9b81b1c386c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.basic.html @@ -39,20 +39,20 @@ ctx.moveTo(75, 15); ctx.lineTo(75, 35); ctx.stroke(); ctx.fillRect(65, 15, 20, 20); -_assertPixel(canvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255"); -_assertPixel(canvas, 15,25, 0,255,0,255, "15,25", "0,255,0,255"); -_assertPixel(canvas, 16,25, 0,255,0,255, "16,25", "0,255,0,255"); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 34,25, 0,255,0,255, "34,25", "0,255,0,255"); -_assertPixel(canvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255"); -_assertPixel(canvas, 36,25, 0,255,0,255, "36,25", "0,255,0,255"); -_assertPixel(canvas, 64,25, 0,255,0,255, "64,25", "0,255,0,255"); -_assertPixel(canvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255"); -_assertPixel(canvas, 66,25, 0,255,0,255, "66,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); -_assertPixel(canvas, 84,25, 0,255,0,255, "84,25", "0,255,0,255"); -_assertPixel(canvas, 85,25, 0,255,0,255, "85,25", "0,255,0,255"); -_assertPixel(canvas, 86,25, 0,255,0,255, "86,25", "0,255,0,255"); +_assertPixel(canvas, 14,25, 0,255,0,255); +_assertPixel(canvas, 15,25, 0,255,0,255); +_assertPixel(canvas, 16,25, 0,255,0,255); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 34,25, 0,255,0,255); +_assertPixel(canvas, 35,25, 0,255,0,255); +_assertPixel(canvas, 36,25, 0,255,0,255); +_assertPixel(canvas, 64,25, 0,255,0,255); +_assertPixel(canvas, 65,25, 0,255,0,255); +_assertPixel(canvas, 66,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); +_assertPixel(canvas, 84,25, 0,255,0,255); +_assertPixel(canvas, 85,25, 0,255,0,255); +_assertPixel(canvas, 86,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.basic.worker.js index d1b6a353fa1..e822679c637 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.basic.worker.js @@ -35,20 +35,20 @@ ctx.moveTo(75, 15); ctx.lineTo(75, 35); ctx.stroke(); ctx.fillRect(65, 15, 20, 20); -_assertPixel(canvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255"); -_assertPixel(canvas, 15,25, 0,255,0,255, "15,25", "0,255,0,255"); -_assertPixel(canvas, 16,25, 0,255,0,255, "16,25", "0,255,0,255"); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 34,25, 0,255,0,255, "34,25", "0,255,0,255"); -_assertPixel(canvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255"); -_assertPixel(canvas, 36,25, 0,255,0,255, "36,25", "0,255,0,255"); -_assertPixel(canvas, 64,25, 0,255,0,255, "64,25", "0,255,0,255"); -_assertPixel(canvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255"); -_assertPixel(canvas, 66,25, 0,255,0,255, "66,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); -_assertPixel(canvas, 84,25, 0,255,0,255, "84,25", "0,255,0,255"); -_assertPixel(canvas, 85,25, 0,255,0,255, "85,25", "0,255,0,255"); -_assertPixel(canvas, 86,25, 0,255,0,255, "86,25", "0,255,0,255"); +_assertPixel(canvas, 14,25, 0,255,0,255); +_assertPixel(canvas, 15,25, 0,255,0,255); +_assertPixel(canvas, 16,25, 0,255,0,255); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 34,25, 0,255,0,255); +_assertPixel(canvas, 35,25, 0,255,0,255); +_assertPixel(canvas, 36,25, 0,255,0,255); +_assertPixel(canvas, 64,25, 0,255,0,255); +_assertPixel(canvas, 65,25, 0,255,0,255); +_assertPixel(canvas, 66,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); +_assertPixel(canvas, 84,25, 0,255,0,255); +_assertPixel(canvas, 85,25, 0,255,0,255); +_assertPixel(canvas, 86,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.scaledefault.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.scaledefault.html index 09ae2121295..78139978580 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.scaledefault.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.scaledefault.html @@ -27,11 +27,11 @@ ctx.strokeStyle = '#0f0'; ctx.moveTo(0, 0.5); ctx.lineTo(2, 0.5); ctx.stroke(); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); -_assertPixel(canvas, 50,5, 0,255,0,255, "50,5", "0,255,0,255"); -_assertPixel(canvas, 50,45, 0,255,0,255, "50,45", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); +_assertPixel(canvas, 50,5, 0,255,0,255); +_assertPixel(canvas, 50,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.scaledefault.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.scaledefault.worker.js index d6251463484..f9506c4accf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.scaledefault.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.scaledefault.worker.js @@ -23,11 +23,11 @@ ctx.strokeStyle = '#0f0'; ctx.moveTo(0, 0.5); ctx.lineTo(2, 0.5); ctx.stroke(); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); -_assertPixel(canvas, 50,5, 0,255,0,255, "50,5", "0,255,0,255"); -_assertPixel(canvas, 50,45, 0,255,0,255, "50,45", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); +_assertPixel(canvas, 50,5, 0,255,0,255); +_assertPixel(canvas, 50,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.transformed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.transformed.html index c99078517f4..e75cccd9912 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.transformed.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.transformed.html @@ -45,20 +45,20 @@ ctx.save(); ctx.stroke(); ctx.restore(); ctx.fillRect(65, 15, 20, 20); -_assertPixel(canvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255"); -_assertPixel(canvas, 15,25, 0,255,0,255, "15,25", "0,255,0,255"); -_assertPixel(canvas, 16,25, 0,255,0,255, "16,25", "0,255,0,255"); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 34,25, 0,255,0,255, "34,25", "0,255,0,255"); -_assertPixel(canvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255"); -_assertPixel(canvas, 36,25, 0,255,0,255, "36,25", "0,255,0,255"); -_assertPixel(canvas, 64,25, 0,255,0,255, "64,25", "0,255,0,255"); -_assertPixel(canvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255"); -_assertPixel(canvas, 66,25, 0,255,0,255, "66,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); -_assertPixel(canvas, 84,25, 0,255,0,255, "84,25", "0,255,0,255"); -_assertPixel(canvas, 85,25, 0,255,0,255, "85,25", "0,255,0,255"); -_assertPixel(canvas, 86,25, 0,255,0,255, "86,25", "0,255,0,255"); +_assertPixel(canvas, 14,25, 0,255,0,255); +_assertPixel(canvas, 15,25, 0,255,0,255); +_assertPixel(canvas, 16,25, 0,255,0,255); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 34,25, 0,255,0,255); +_assertPixel(canvas, 35,25, 0,255,0,255); +_assertPixel(canvas, 36,25, 0,255,0,255); +_assertPixel(canvas, 64,25, 0,255,0,255); +_assertPixel(canvas, 65,25, 0,255,0,255); +_assertPixel(canvas, 66,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); +_assertPixel(canvas, 84,25, 0,255,0,255); +_assertPixel(canvas, 85,25, 0,255,0,255); +_assertPixel(canvas, 86,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.transformed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.transformed.worker.js index 2ed23fb6878..f377d03ca75 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.transformed.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/line-styles/2d.line.width.transformed.worker.js @@ -41,20 +41,20 @@ ctx.save(); ctx.stroke(); ctx.restore(); ctx.fillRect(65, 15, 20, 20); -_assertPixel(canvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255"); -_assertPixel(canvas, 15,25, 0,255,0,255, "15,25", "0,255,0,255"); -_assertPixel(canvas, 16,25, 0,255,0,255, "16,25", "0,255,0,255"); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 34,25, 0,255,0,255, "34,25", "0,255,0,255"); -_assertPixel(canvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255"); -_assertPixel(canvas, 36,25, 0,255,0,255, "36,25", "0,255,0,255"); -_assertPixel(canvas, 64,25, 0,255,0,255, "64,25", "0,255,0,255"); -_assertPixel(canvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255"); -_assertPixel(canvas, 66,25, 0,255,0,255, "66,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); -_assertPixel(canvas, 84,25, 0,255,0,255, "84,25", "0,255,0,255"); -_assertPixel(canvas, 85,25, 0,255,0,255, "85,25", "0,255,0,255"); -_assertPixel(canvas, 86,25, 0,255,0,255, "86,25", "0,255,0,255"); +_assertPixel(canvas, 14,25, 0,255,0,255); +_assertPixel(canvas, 15,25, 0,255,0,255); +_assertPixel(canvas, 16,25, 0,255,0,255); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 34,25, 0,255,0,255); +_assertPixel(canvas, 35,25, 0,255,0,255); +_assertPixel(canvas, 36,25, 0,255,0,255); +_assertPixel(canvas, 64,25, 0,255,0,255); +_assertPixel(canvas, 65,25, 0,255,0,255); +_assertPixel(canvas, 66,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); +_assertPixel(canvas, 84,25, 0,255,0,255); +_assertPixel(canvas, 85,25, 0,255,0,255); +_assertPixel(canvas, 86,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.html index fa0e2ac5fc8..4ee68b430fd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.html @@ -11,7 +11,7 @@ function verifyPlaceholder(placeholder, expectedR, expectedG, expectedB, expecte canvas.width = canvas.height = 10; var ctx = canvas.getContext('2d'); ctx.drawImage(placeholder, 0, 0); - _assertPixel(canvas, 5,5, expectedR, expectedG, expectedB, expectedA, "5,5", expectedClrStr); + _assertPixel(canvas, 5,5, expectedR, expectedG, expectedB, expectedA); } async_test(function(t) { diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.w.html index 6d4bad11c94..7d1d2c85f9c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.w.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.w.html @@ -46,7 +46,7 @@ function verifyPlaceholder(placeholder) { canvas.width = canvas.height = 10; var ctx = canvas.getContext('2d'); ctx.drawImage(placeholder, 0, 0); - _assertPixel(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255"); + _assertPixel(canvas, 5,5, 0,255,0,255); } function makeWorker(test) { diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.html index 537b582dc1b..51c167ddca9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.html @@ -57,7 +57,7 @@ test(function() { var ctx = offscreenCanvas.getContext('2d', {alpha: false}); ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(offscreenCanvas, 5,5, 0,127,0,255, "5,5", "0,127,0,255", 2); + _assertPixelApprox(offscreenCanvas, 5,5, 0,127,0,255, 2); }, "Test that OffscreenCanvasRenderingContext2D with alpha disabled makes the OffscreenCanvas opaque"); test(function() { @@ -65,7 +65,7 @@ test(function() { var ctx = offscreenCanvas.getContext('2d', {alpha: true}); ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,127, "5,5", "0,255,0,127", 2); + _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,127, 2); }, "Test that OffscreenCanvasRenderingContext2D with alpha enabled preserves the alpha"); test(function() { @@ -73,7 +73,7 @@ test(function() { var ctx = offscreenCanvas.getContext('2d'); ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,127, "5,5", "0,255,0,127", 2); + _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,127, 2); }, "Test that 'alpha' context creation attribute is true by default"); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.worker.js index ad5e1243e97..c413791f61b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.worker.js @@ -55,7 +55,7 @@ test(function() { var ctx = offscreenCanvas.getContext('2d', {alpha: false}); ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(offscreenCanvas, 5,5, 0,127,0,255, "5,5", "0,127,0,255", 2); + _assertPixelApprox(offscreenCanvas, 5,5, 0,127,0,255, 2); }, "Test that OffscreenCanvasRenderingContext2D with alpha disabled makes the OffscreenCanvas opaque"); test(function() { @@ -63,7 +63,7 @@ test(function() { var ctx = offscreenCanvas.getContext('2d', {alpha: true}); ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,127, "5,5", "0,255,0,127", 2); + _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,127, 2); }, "Test that OffscreenCanvasRenderingContext2D with alpha enabled preserves the alpha"); test(function() { @@ -71,7 +71,7 @@ test(function() { var ctx = offscreenCanvas.getContext('2d'); ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,127, "5,5", "0,255,0,127", 2); + _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,127, 2); }, "Test that 'alpha' context creation attribute is true by default"); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html index c9a83802a43..6e1adf9591f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html @@ -50,11 +50,11 @@ test(function() { if (shouldCallTwice) { if (alphaVal) - _assertPixel(drawCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + _assertPixel(drawCanvas, 50,25, 0,0,0,0); else - _assertPixel(drawCanvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); + _assertPixel(drawCanvas, 50,25, 0,0,0,255); } else { - _assertPixel(drawCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + _assertPixel(drawCanvas, 50,25, 0,255,0,255); } } @@ -90,9 +90,9 @@ test(function() { var dCtx = drawCanvas.getContext('2d'); dCtx.drawImage(image2, 0, 0); // Verify that transform was carried over. - _assertPixel(drawCanvas, 23,25, 0,255,0,255, "23,25", "0,255,0,255"); + _assertPixel(drawCanvas, 23,25, 0,255,0,255); // Verify that clip was carried over. - _assertPixel(drawCanvas, 27,25, 0,0,0,0, "27,25", "0,0,0,0"); + _assertPixel(drawCanvas, 27,25, 0,0,0,0); }, "Test that transferToImageBitmap preserves transform"); async_test(function(t) { diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.1.html index 3f4e85d7ad1..cf358e38fc1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.1.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, Math.PI/2, -Math.PI, true); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.1.worker.js index b8dfd990a2c..5a1f54c4c2f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.1.worker.js @@ -23,7 +23,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, Math.PI/2, -Math.PI, true); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.2.html index 389db761cc7..9b3983fb370 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.2.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, -3*Math.PI/2, -Math.PI, true); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.2.worker.js index 9d84eee957d..15bf295b2d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.2.worker.js @@ -23,7 +23,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, -3*Math.PI/2, -Math.PI, true); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.3.html index e89cdc57e44..a757b31efba 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.3.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, (512+1/2)*Math.PI, (1024-1)*Math.PI, true); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.3.worker.js index 4ebd45b1c62..646349fb99f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.3.worker.js @@ -23,7 +23,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, (512+1/2)*Math.PI, (1024-1)*Math.PI, true); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.4.html index e40a05e3dc2..b8e4d54027d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.4.html @@ -27,10 +27,10 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.arc(50, 25, 60, (512+1/2)*Math.PI, (1024-1)*Math.PI, false); ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.4.worker.js index 93ad2723477..8fa2ef137d7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.4.worker.js @@ -23,10 +23,10 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.arc(50, 25, 60, (512+1/2)*Math.PI, (1024-1)*Math.PI, false); ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.5.html index 5ab209b4b9b..f13a2e41c96 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.5.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, (1024-1)*Math.PI, (512+1/2)*Math.PI, false); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.5.worker.js index 651ec5a9b78..50b23cd9ba8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.5.worker.js @@ -23,7 +23,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, (1024-1)*Math.PI, (512+1/2)*Math.PI, false); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.6.html index 3c8e2a6623e..88184b8d77d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.6.html @@ -27,10 +27,10 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.arc(50, 25, 60, (1024-1)*Math.PI, (512+1/2)*Math.PI, true); ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.6.worker.js index 27024158a8d..38bd40489ba 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.angle.6.worker.js @@ -23,10 +23,10 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.arc(50, 25, 60, (1024-1)*Math.PI, (512+1/2)*Math.PI, true); ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.default.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.default.html index 58aa1f981c8..848f20c32fa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.default.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.default.html @@ -27,7 +27,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, -Math.PI, Math.PI/2); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.default.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.default.worker.js index 8ad1a6f9026..c73829a0eee 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.default.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.default.worker.js @@ -23,7 +23,7 @@ ctx.beginPath(); ctx.moveTo(100, 0); ctx.arc(100, 0, 150, -Math.PI, Math.PI/2); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.empty.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.empty.html index 16889781cf4..9098b7fe023 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.empty.html @@ -27,7 +27,7 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(200, 25, 5, 0, 2*Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.empty.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.empty.worker.js index 916e6b889f9..82281ea4b08 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.empty.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.empty.worker.js @@ -23,7 +23,7 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(200, 25, 5, 0, 2*Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.end.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.end.html index 65fa073150a..12be27afa66 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.end.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.end.html @@ -29,7 +29,7 @@ ctx.moveTo(-100, 0); ctx.arc(-100, 0, 25, -Math.PI/2, Math.PI/2, true); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.end.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.end.worker.js index a2653efd0c8..a2519f0bad0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.end.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.end.worker.js @@ -25,7 +25,7 @@ ctx.moveTo(-100, 0); ctx.arc(-100, 0, 25, -Math.PI/2, Math.PI/2, true); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonempty.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonempty.html index b88812171d7..542940435af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonempty.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonempty.html @@ -28,7 +28,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.arc(200, 25, 5, 0, 2*Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonempty.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonempty.worker.js index 8e30f5696ca..1d7de774868 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonempty.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonempty.worker.js @@ -24,7 +24,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.arc(200, 25, 5, 0, 2*Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonfinite.html index c37dec24e75..c65af631b54 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonfinite.html @@ -69,8 +69,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonfinite.worker.js index d027f5d36bd..f83dcf1080d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.nonfinite.worker.js @@ -65,8 +65,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.1.html index 52d03ed8c90..3b0aed390f5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.1.html @@ -38,15 +38,15 @@ ctx.arc(25, -25, 24, 0, 2*Math.PI, false); ctx.moveTo(25, 125); ctx.arc(25, 125, 24, 0, 2*Math.PI, false); ctx.fill(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.1.worker.js index 04372c2d047..ec300985c8a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.1.worker.js @@ -34,15 +34,15 @@ ctx.arc(25, -25, 24, 0, 2*Math.PI, false); ctx.moveTo(25, 125); ctx.arc(25, 125, 24, 0, 2*Math.PI, false); ctx.fill(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.2.html index cd38bdfcbe0..f6822f8203f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.2.html @@ -28,15 +28,15 @@ ctx.lineWidth = 1.2; ctx.beginPath(); ctx.arc(0, 0, 0.6, 0, Math.PI/2, false); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.2.worker.js index e419c7cc22b..d946f7f0fee 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.scale.2.worker.js @@ -24,15 +24,15 @@ ctx.lineWidth = 1.2; ctx.beginPath(); ctx.arc(0, 0, 0.6, 0, Math.PI/2, false); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,25, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.1.html index c8fe46103bc..9e8803a102d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.1.html @@ -30,8 +30,8 @@ ctx.stroke(); ctx.beginPath(); ctx.arc(0, 0, 25, 0, -Math.PI/2, true); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.1.worker.js index 75e366edff4..84cb983f1aa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.1.worker.js @@ -26,8 +26,8 @@ ctx.stroke(); ctx.beginPath(); ctx.arc(0, 0, 25, 0, -Math.PI/2, true); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.2.html index c5cb5cd3001..f2118ef29b8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.2.html @@ -30,12 +30,12 @@ ctx.stroke(); ctx.beginPath(); ctx.arc(100, 0, 25, 0, -Math.PI/2, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); -_assertPixel(canvas, 97,1, 0,255,0,255, "97,1", "0,255,0,255"); -_assertPixel(canvas, 97,2, 0,255,0,255, "97,2", "0,255,0,255"); -_assertPixel(canvas, 97,3, 0,255,0,255, "97,3", "0,255,0,255"); -_assertPixel(canvas, 2,48, 0,255,0,255, "2,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,10, 0,255,0,255); +_assertPixel(canvas, 97,1, 0,255,0,255); +_assertPixel(canvas, 97,2, 0,255,0,255); +_assertPixel(canvas, 97,3, 0,255,0,255); +_assertPixel(canvas, 2,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.2.worker.js index 769d5faa913..be7f13aee7e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.2.worker.js @@ -26,12 +26,12 @@ ctx.stroke(); ctx.beginPath(); ctx.arc(100, 0, 25, 0, -Math.PI/2, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); -_assertPixel(canvas, 97,1, 0,255,0,255, "97,1", "0,255,0,255"); -_assertPixel(canvas, 97,2, 0,255,0,255, "97,2", "0,255,0,255"); -_assertPixel(canvas, 97,3, 0,255,0,255, "97,3", "0,255,0,255"); -_assertPixel(canvas, 2,48, 0,255,0,255, "2,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,10, 0,255,0,255); +_assertPixel(canvas, 97,1, 0,255,0,255); +_assertPixel(canvas, 97,2, 0,255,0,255); +_assertPixel(canvas, 97,3, 0,255,0,255); +_assertPixel(canvas, 2,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.1.html index 301cd054a5f..42242536e2b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.1.html @@ -27,12 +27,12 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(50, 50, 50, 0, Math.PI, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 20,48, 0,255,0,255, "20,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 20,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.1.worker.js index ed5a7ffa0f7..b41863bfb7b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.1.worker.js @@ -23,12 +23,12 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(50, 50, 50, 0, Math.PI, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 20,48, 0,255,0,255, "20,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 20,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.2.html index cb60d668619..1e33a024163 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.2.html @@ -27,12 +27,12 @@ ctx.strokeStyle = '#0f0'; ctx.beginPath(); ctx.arc(50, 50, 50, 0, Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 20,48, 0,255,0,255, "20,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 20,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.2.worker.js index b470bb63ce7..d5d6cb7b7e3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.2.worker.js @@ -23,12 +23,12 @@ ctx.strokeStyle = '#0f0'; ctx.beginPath(); ctx.arc(50, 50, 50, 0, Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 20,48, 0,255,0,255, "20,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 20,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.3.html index 14cd7fe6030..b90284e5798 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.3.html @@ -27,11 +27,11 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(0, 50, 50, 0, -Math.PI/2, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.3.worker.js index 1e4843e5774..5d0cf805399 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.3.worker.js @@ -23,11 +23,11 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(0, 50, 50, 0, -Math.PI/2, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.4.html index 81a533abb16..dce9547a6b4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.4.html @@ -27,11 +27,11 @@ ctx.strokeStyle = '#0f0'; ctx.beginPath(); ctx.arc(-50, 50, 100, 0, -Math.PI/2, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.4.worker.js index 0de7e2d458e..8bd028b0bd1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.4.worker.js @@ -23,11 +23,11 @@ ctx.strokeStyle = '#0f0'; ctx.beginPath(); ctx.arc(-50, 50, 100, 0, -Math.PI/2, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.5.html index b9621da7ea7..bd7e54af3b9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.5.html @@ -27,11 +27,11 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(300, 0, 100, 0, 5*Math.PI, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.5.worker.js index 212de173ebe..0584590afb3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.shape.5.worker.js @@ -23,11 +23,11 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arc(300, 0, 100, 0, 5*Math.PI, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.1.html index 01a930e8647..ddf200c88b5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.1.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, true); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.1.worker.js index 94b38b479f7..c56d25c70ba 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.1.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, true); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.2.html index 26344fe9938..0a9e0c782a6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.2.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, false); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.2.worker.js index 505250233f7..5db75de2a26 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.2.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, false); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.3.html index 1c2112eb951..df1e45480d4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.3.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, true); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.3.worker.js index 4382003e17c..0c984884c9a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.3.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, true); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.4.html index 6809cb441d8..8afa122c7c2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.4.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, false); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.4.worker.js index ecc65e4a3e8..3158528f657 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.twopie.4.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, false); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.1.html index 530a4304f59..f26162f2238 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.1.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 0, true); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.1.worker.js index 4fb264a5926..efb137a92af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.1.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 0, true); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.2.html index 60b860cef00..f2eda4b8a2d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.2.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 0, false); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.2.worker.js index f7cca0bb548..28f4f3759af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.2.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.arc(50, 25, 50, 0, 0, false); ctx.stroke(); -_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); +_assertPixel(canvas, 50,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zeroradius.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zeroradius.html index 4f7791802c4..2d56e369b89 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zeroradius.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zeroradius.html @@ -28,7 +28,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.arc(200, 25, 0, 0, Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zeroradius.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zeroradius.worker.js index cd228d4904b..c57046ab94d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zeroradius.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.zeroradius.worker.js @@ -24,7 +24,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.arc(200, 25, 0, 0, Math.PI, true); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.1.html index 233dda5d29a..58b26356991 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.1.html @@ -34,9 +34,9 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.arcTo(50, 25, 100, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.1.worker.js index 57e5766a3aa..44926712fcf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.1.worker.js @@ -30,9 +30,9 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.arcTo(50, 25, 100, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.2.html index 46a7c52b304..d85e310c852 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.2.html @@ -28,7 +28,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.arcTo(100, 25, 100, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.2.worker.js index eced5ad8ac1..c8b336a494e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.coincide.2.worker.js @@ -24,7 +24,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.arcTo(100, 25, 100, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.1.html index 471ac41b827..5531ca62ae0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.1.html @@ -33,7 +33,7 @@ ctx.beginPath(); ctx.moveTo(-100, 25); ctx.arcTo(0, 25, 100, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.1.worker.js index f765cff0a9b..3864a311db3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.1.worker.js @@ -29,7 +29,7 @@ ctx.beginPath(); ctx.moveTo(-100, 25); ctx.arcTo(0, 25, 100, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.2.html index 5a8fc62e3d4..a78d626ef0a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.2.html @@ -33,7 +33,7 @@ ctx.beginPath(); ctx.moveTo(100, 25); ctx.arcTo(200, 25, 110, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.2.worker.js index 9b081699e8a..6f4c2aa8c65 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.2.worker.js @@ -29,7 +29,7 @@ ctx.beginPath(); ctx.moveTo(100, 25); ctx.arcTo(200, 25, 110, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.3.html index b042e1136c0..f2d52e42417 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.3.html @@ -37,7 +37,7 @@ ctx.beginPath(); ctx.moveTo(-100, 25); ctx.arcTo(0, 25, -200, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.3.worker.js index d6eef69523a..2d152b0d83f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.collinear.3.worker.js @@ -33,7 +33,7 @@ ctx.beginPath(); ctx.moveTo(-100, 25); ctx.arcTo(0, 25, -200, 25, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.1.html index aee1d50b5b1..81dc7b1bd81 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.1.html @@ -27,7 +27,7 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arcTo(100, 50, 200, 50, 0.1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js index 8481a37108b..99354ac735a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js @@ -23,7 +23,7 @@ ctx.strokeStyle = '#f00'; ctx.beginPath(); ctx.arcTo(100, 50, 200, 50, 0.1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.2.html index 36b143cdb3a..43c9aec2941 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.2.html @@ -28,7 +28,7 @@ ctx.beginPath(); ctx.arcTo(0, 25, 50, 250, 0.1); // adds (x1,y1), draws nothing ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js index e27280f5b65..aad3d006c99 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js @@ -24,7 +24,7 @@ ctx.beginPath(); ctx.arcTo(0, 25, 50, 250, 0.1); // adds (x1,y1), draws nothing ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.nonfinite.html index be6fcff31b7..982ad4a9648 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.nonfinite.html @@ -67,8 +67,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.nonfinite.worker.js index 6ad8e601233..6aa674fc90d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.nonfinite.worker.js @@ -63,8 +63,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.scale.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.scale.html index 1abbf953ad4..7139455bda4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.scale.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.scale.html @@ -30,15 +30,15 @@ ctx.scale(0.1, 1); ctx.arcTo(50, 50, 50, 0, 50); ctx.lineTo(-1000, 0); ctx.fill(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.scale.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.scale.worker.js index 998265de84f..b06c8f935c5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.scale.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.scale.worker.js @@ -26,15 +26,15 @@ ctx.scale(0.1, 1); ctx.arcTo(50, 50, 50, 0, 50); ctx.lineTo(-1000, 0); ctx.fill(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve1.html index 7ba352fa597..659b02ceed4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve1.html @@ -36,20 +36,20 @@ ctx.moveTo(80, 45); ctx.arc(55, 45, 25+tol, 0, -Math.PI/2, true); ctx.arc(55, 45, 15-tol, -Math.PI/2, 0, false); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 55,19, 0,255,0,255, "55,19", "0,255,0,255"); -_assertPixel(canvas, 55,20, 0,255,0,255, "55,20", "0,255,0,255"); -_assertPixel(canvas, 55,21, 0,255,0,255, "55,21", "0,255,0,255"); -_assertPixel(canvas, 64,22, 0,255,0,255, "64,22", "0,255,0,255"); -_assertPixel(canvas, 65,21, 0,255,0,255, "65,21", "0,255,0,255"); -_assertPixel(canvas, 72,28, 0,255,0,255, "72,28", "0,255,0,255"); -_assertPixel(canvas, 73,27, 0,255,0,255, "73,27", "0,255,0,255"); -_assertPixel(canvas, 78,36, 0,255,0,255, "78,36", "0,255,0,255"); -_assertPixel(canvas, 79,35, 0,255,0,255, "79,35", "0,255,0,255"); -_assertPixel(canvas, 80,44, 0,255,0,255, "80,44", "0,255,0,255"); -_assertPixel(canvas, 80,45, 0,255,0,255, "80,45", "0,255,0,255"); -_assertPixel(canvas, 80,46, 0,255,0,255, "80,46", "0,255,0,255"); -_assertPixel(canvas, 65,45, 0,255,0,255, "65,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 55,19, 0,255,0,255); +_assertPixel(canvas, 55,20, 0,255,0,255); +_assertPixel(canvas, 55,21, 0,255,0,255); +_assertPixel(canvas, 64,22, 0,255,0,255); +_assertPixel(canvas, 65,21, 0,255,0,255); +_assertPixel(canvas, 72,28, 0,255,0,255); +_assertPixel(canvas, 73,27, 0,255,0,255); +_assertPixel(canvas, 78,36, 0,255,0,255); +_assertPixel(canvas, 79,35, 0,255,0,255); +_assertPixel(canvas, 80,44, 0,255,0,255); +_assertPixel(canvas, 80,45, 0,255,0,255); +_assertPixel(canvas, 80,46, 0,255,0,255); +_assertPixel(canvas, 65,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve1.worker.js index ff04a00e192..5223b55abb2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve1.worker.js @@ -32,20 +32,20 @@ ctx.moveTo(80, 45); ctx.arc(55, 45, 25+tol, 0, -Math.PI/2, true); ctx.arc(55, 45, 15-tol, -Math.PI/2, 0, false); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 55,19, 0,255,0,255, "55,19", "0,255,0,255"); -_assertPixel(canvas, 55,20, 0,255,0,255, "55,20", "0,255,0,255"); -_assertPixel(canvas, 55,21, 0,255,0,255, "55,21", "0,255,0,255"); -_assertPixel(canvas, 64,22, 0,255,0,255, "64,22", "0,255,0,255"); -_assertPixel(canvas, 65,21, 0,255,0,255, "65,21", "0,255,0,255"); -_assertPixel(canvas, 72,28, 0,255,0,255, "72,28", "0,255,0,255"); -_assertPixel(canvas, 73,27, 0,255,0,255, "73,27", "0,255,0,255"); -_assertPixel(canvas, 78,36, 0,255,0,255, "78,36", "0,255,0,255"); -_assertPixel(canvas, 79,35, 0,255,0,255, "79,35", "0,255,0,255"); -_assertPixel(canvas, 80,44, 0,255,0,255, "80,44", "0,255,0,255"); -_assertPixel(canvas, 80,45, 0,255,0,255, "80,45", "0,255,0,255"); -_assertPixel(canvas, 80,46, 0,255,0,255, "80,46", "0,255,0,255"); -_assertPixel(canvas, 65,45, 0,255,0,255, "65,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 55,19, 0,255,0,255); +_assertPixel(canvas, 55,20, 0,255,0,255); +_assertPixel(canvas, 55,21, 0,255,0,255); +_assertPixel(canvas, 64,22, 0,255,0,255); +_assertPixel(canvas, 65,21, 0,255,0,255); +_assertPixel(canvas, 72,28, 0,255,0,255); +_assertPixel(canvas, 73,27, 0,255,0,255); +_assertPixel(canvas, 78,36, 0,255,0,255); +_assertPixel(canvas, 79,35, 0,255,0,255); +_assertPixel(canvas, 80,44, 0,255,0,255); +_assertPixel(canvas, 80,45, 0,255,0,255); +_assertPixel(canvas, 80,46, 0,255,0,255); +_assertPixel(canvas, 65,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve2.html index 8d1f4953dd8..02ab6c1437d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve2.html @@ -36,19 +36,19 @@ ctx.beginPath(); ctx.moveTo(10, 25); ctx.arcTo(75, 25, 75, 60, 20); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 55,19, 0,255,0,255, "55,19", "0,255,0,255"); -_assertPixel(canvas, 55,20, 0,255,0,255, "55,20", "0,255,0,255"); -_assertPixel(canvas, 55,21, 0,255,0,255, "55,21", "0,255,0,255"); -_assertPixel(canvas, 64,22, 0,255,0,255, "64,22", "0,255,0,255"); -_assertPixel(canvas, 65,21, 0,255,0,255, "65,21", "0,255,0,255"); -_assertPixel(canvas, 72,28, 0,255,0,255, "72,28", "0,255,0,255"); -_assertPixel(canvas, 73,27, 0,255,0,255, "73,27", "0,255,0,255"); -_assertPixel(canvas, 78,36, 0,255,0,255, "78,36", "0,255,0,255"); -_assertPixel(canvas, 79,35, 0,255,0,255, "79,35", "0,255,0,255"); -_assertPixel(canvas, 80,44, 0,255,0,255, "80,44", "0,255,0,255"); -_assertPixel(canvas, 80,45, 0,255,0,255, "80,45", "0,255,0,255"); -_assertPixel(canvas, 80,46, 0,255,0,255, "80,46", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 55,19, 0,255,0,255); +_assertPixel(canvas, 55,20, 0,255,0,255); +_assertPixel(canvas, 55,21, 0,255,0,255); +_assertPixel(canvas, 64,22, 0,255,0,255); +_assertPixel(canvas, 65,21, 0,255,0,255); +_assertPixel(canvas, 72,28, 0,255,0,255); +_assertPixel(canvas, 73,27, 0,255,0,255); +_assertPixel(canvas, 78,36, 0,255,0,255); +_assertPixel(canvas, 79,35, 0,255,0,255); +_assertPixel(canvas, 80,44, 0,255,0,255); +_assertPixel(canvas, 80,45, 0,255,0,255); +_assertPixel(canvas, 80,46, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve2.worker.js index b83dff1d2a1..f06c2cdc33f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.curve2.worker.js @@ -32,19 +32,19 @@ ctx.beginPath(); ctx.moveTo(10, 25); ctx.arcTo(75, 25, 75, 60, 20); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 55,19, 0,255,0,255, "55,19", "0,255,0,255"); -_assertPixel(canvas, 55,20, 0,255,0,255, "55,20", "0,255,0,255"); -_assertPixel(canvas, 55,21, 0,255,0,255, "55,21", "0,255,0,255"); -_assertPixel(canvas, 64,22, 0,255,0,255, "64,22", "0,255,0,255"); -_assertPixel(canvas, 65,21, 0,255,0,255, "65,21", "0,255,0,255"); -_assertPixel(canvas, 72,28, 0,255,0,255, "72,28", "0,255,0,255"); -_assertPixel(canvas, 73,27, 0,255,0,255, "73,27", "0,255,0,255"); -_assertPixel(canvas, 78,36, 0,255,0,255, "78,36", "0,255,0,255"); -_assertPixel(canvas, 79,35, 0,255,0,255, "79,35", "0,255,0,255"); -_assertPixel(canvas, 80,44, 0,255,0,255, "80,44", "0,255,0,255"); -_assertPixel(canvas, 80,45, 0,255,0,255, "80,45", "0,255,0,255"); -_assertPixel(canvas, 80,46, 0,255,0,255, "80,46", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 55,19, 0,255,0,255); +_assertPixel(canvas, 55,20, 0,255,0,255); +_assertPixel(canvas, 55,21, 0,255,0,255); +_assertPixel(canvas, 64,22, 0,255,0,255); +_assertPixel(canvas, 65,21, 0,255,0,255); +_assertPixel(canvas, 72,28, 0,255,0,255); +_assertPixel(canvas, 73,27, 0,255,0,255); +_assertPixel(canvas, 78,36, 0,255,0,255); +_assertPixel(canvas, 79,35, 0,255,0,255); +_assertPixel(canvas, 80,44, 0,255,0,255); +_assertPixel(canvas, 80,45, 0,255,0,255); +_assertPixel(canvas, 80,46, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.end.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.end.html index 2806684328f..0871c39157f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.end.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.end.html @@ -28,11 +28,11 @@ ctx.beginPath(); ctx.moveTo(-100, -100); ctx.arcTo(-100, 25, 200, 25, 10); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.end.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.end.worker.js index 4f12e45a358..f3addb0a0c7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.end.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.end.worker.js @@ -24,11 +24,11 @@ ctx.beginPath(); ctx.moveTo(-100, -100); ctx.arcTo(-100, 25, 200, 25, 10); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.start.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.start.html index 5db369a5f14..5040462ada3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.start.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.start.html @@ -28,11 +28,11 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.arcTo(200, 25, 200, 50, 10); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.start.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.start.worker.js index d0a6e345586..36706d600e2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.start.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.shape.start.worker.js @@ -24,11 +24,11 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.arcTo(200, 25, 200, 50, 10); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.transformation.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.transformation.html index 4f470024fe9..bea6374ea4e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.transformation.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.transformation.html @@ -29,15 +29,15 @@ ctx.translate(100, 0); ctx.arcTo(50, 50, 50, 0, 50); ctx.lineTo(-100, 0); ctx.fill(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.transformation.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.transformation.worker.js index 46bb4616c8b..925140b6750 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.transformation.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.transformation.worker.js @@ -25,15 +25,15 @@ ctx.translate(100, 0); ctx.arcTo(50, 50, 50, 0, 50); ctx.lineTo(-100, 0); ctx.fill(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.1.html index e01f15b0dc5..00541a938b6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.1.html @@ -33,7 +33,7 @@ ctx.beginPath(); ctx.moveTo(0, -25); ctx.arcTo(50, -25, 50, 50, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.1.worker.js index 9768431b737..cee6d1c5baa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.1.worker.js @@ -29,7 +29,7 @@ ctx.beginPath(); ctx.moveTo(0, -25); ctx.arcTo(50, -25, 50, 50, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.2.html index 94158caa0a6..e10fe5ce95e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.2.html @@ -33,7 +33,7 @@ ctx.beginPath(); ctx.moveTo(100, 25); ctx.arcTo(200, 25, 50, 25, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.2.worker.js index 63843ec31f5..d0cc4a1484a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arcTo.zero.2.worker.js @@ -29,7 +29,7 @@ ctx.beginPath(); ctx.moveTo(100, 25); ctx.arcTo(200, 25, 50, 25, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.beginPath.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.beginPath.html index c3c826df3f8..8b9c4cdc7ac 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.beginPath.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.beginPath.html @@ -26,7 +26,7 @@ ctx.rect(0, 0, 100, 50); ctx.beginPath(); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.beginPath.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.beginPath.worker.js index e13b8bf0407..18b81afa5c4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.beginPath.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.beginPath.worker.js @@ -22,7 +22,7 @@ ctx.rect(0, 0, 100, 50); ctx.beginPath(); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.basic.html index 9b595ab65fa..69172874322 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.basic.html @@ -28,7 +28,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.bezierCurveTo(100, 25, 100, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.basic.worker.js index d22fdaa9c85..a365372c9e6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.basic.worker.js @@ -24,7 +24,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.bezierCurveTo(100, 25, 100, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html index 064d12ec9d8..67dd771fcbe 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html @@ -27,8 +27,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.bezierCurveTo(100, 50, 200, 50, 200, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 95,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js index 32927fffe3e..beb275ba378 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js @@ -23,8 +23,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.bezierCurveTo(100, 50, 200, 50, 200, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 95,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html index 55a05d34def..d4f99e1e2a4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html @@ -27,8 +27,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.bezierCurveTo(0, 25, 100, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 5,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js index a053b5d4a56..7176dba0787 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js @@ -23,8 +23,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.bezierCurveTo(0, 25, 100, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 5,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.nonfinite.html index c396f92a6b8..4c5abfbdc1e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.nonfinite.html @@ -101,8 +101,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js index fba6b76c8e7..752cb1b0ab8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js @@ -97,8 +97,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.scaled.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.scaled.html index 7bdcb0eec24..2608237a6c0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.scaled.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.scaled.html @@ -29,11 +29,11 @@ ctx.beginPath(); ctx.moveTo(-2, 3.1); ctx.bezierCurveTo(-2, -1, 2.1, -1, 2.1, 3.1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.scaled.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.scaled.worker.js index bca64bd6366..641cccf4b46 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.scaled.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.scaled.worker.js @@ -25,11 +25,11 @@ ctx.beginPath(); ctx.moveTo(-2, 3.1); ctx.bezierCurveTo(-2, -1, 2.1, -1, 2.1, 3.1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.shape.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.shape.html index a270bf7fce5..5f8f8daac2a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.shape.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.shape.html @@ -28,11 +28,11 @@ ctx.beginPath(); ctx.moveTo(-2000, 3100); ctx.bezierCurveTo(-2000, -1000, 2100, -1000, 2100, 3100); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.shape.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.shape.worker.js index 70951148b50..ee42982f2f6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.shape.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.bezierCurveTo.shape.worker.js @@ -24,11 +24,11 @@ ctx.beginPath(); ctx.moveTo(-2000, 3100); ctx.bezierCurveTo(-2000, -1000, 2100, -1000, 2100, 3100); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.1.html index dde6f8bb33a..cca53f6be6d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.1.html @@ -27,7 +27,7 @@ ctx.rect(0, 0, 100, 50); ctx.clip(); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.1.worker.js index b0f42b96d55..cf5a5d3b63f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.1.worker.js @@ -23,7 +23,7 @@ ctx.rect(0, 0, 100, 50); ctx.clip(); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.2.html index 4aa16597b87..d5ef79bf1a1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.2.html @@ -27,7 +27,7 @@ ctx.rect(-100, 0, 100, 50); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.2.worker.js index dfc5c18e8e4..bad906d4b73 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.basic.2.worker.js @@ -23,7 +23,7 @@ ctx.rect(-100, 0, 100, 50); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.empty.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.empty.html index 475c046514b..d74fff0d81f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.empty.html @@ -26,7 +26,7 @@ ctx.beginPath(); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.empty.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.empty.worker.js index fc15dbb5f79..51beb6426a5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.empty.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.empty.worker.js @@ -22,7 +22,7 @@ ctx.beginPath(); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.intersect.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.intersect.html index 18b8baa9733..3b269ce102d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.intersect.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.intersect.html @@ -30,7 +30,7 @@ ctx.rect(50, 0, 50, 50) ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.intersect.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.intersect.worker.js index 85b8e0f2ddc..791c1bb7848 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.intersect.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.intersect.worker.js @@ -26,7 +26,7 @@ ctx.rect(50, 0, 50, 50) ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.unaffected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.unaffected.html index 739f5d378c3..a0ba94fb8a4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.unaffected.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.unaffected.html @@ -31,7 +31,7 @@ ctx.lineTo(100, 0); ctx.clip(); ctx.lineTo(0, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.unaffected.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.unaffected.worker.js index 3c83b091864..e03257021c4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.unaffected.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.unaffected.worker.js @@ -27,7 +27,7 @@ ctx.lineTo(100, 0); ctx.clip(); ctx.lineTo(0, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.1.html index ef1649f44b6..9a20e493db2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.1.html @@ -35,7 +35,7 @@ ctx.lineTo(100, 0); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.1.worker.js index 8a7bdb7f111..02565fcc8b8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.1.worker.js @@ -31,7 +31,7 @@ ctx.lineTo(100, 0); ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.2.html index f5acfb24603..1f223a3b38f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.2.html @@ -38,7 +38,7 @@ ctx.lineTo(0, 0); ctx.clip(); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.2.worker.js index d97e45cd088..e7e8c5039de 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.clip.winding.2.worker.js @@ -34,7 +34,7 @@ ctx.lineTo(0, 0); ctx.clip(); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.empty.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.empty.html index c4a2262e3f2..50ea865696c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.empty.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.closePath(); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.empty.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.empty.worker.js index f5eb5038cb1..c06ce48635f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.empty.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.empty.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.closePath(); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.newline.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.newline.html index 11339fa4de9..dca2e01b7e9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.newline.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.newline.html @@ -30,7 +30,7 @@ ctx.lineTo(200, -100); ctx.lineTo(200, 25); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.newline.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.newline.worker.js index 13a9f484660..5d27821f551 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.newline.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.newline.worker.js @@ -26,7 +26,7 @@ ctx.lineTo(200, -100); ctx.lineTo(200, 25); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.nextpoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.nextpoint.html index e39f21fe6a5..4cf02d2b644 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.nextpoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.nextpoint.html @@ -29,7 +29,7 @@ ctx.lineTo(-100, -1000); ctx.closePath(); ctx.lineTo(1000, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.nextpoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.nextpoint.worker.js index 961891890e1..8a84ce7d83c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.nextpoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.closePath.nextpoint.worker.js @@ -25,7 +25,7 @@ ctx.lineTo(-100, -1000); ctx.closePath(); ctx.lineTo(1000, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.basic.html index 9d0c23538ac..72e755f7e8f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.basic.html @@ -28,7 +28,7 @@ ctx.lineTo(100, 0); ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.basic.worker.js index e7650bfda0d..2c63e1ec97f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.basic.worker.js @@ -24,7 +24,7 @@ ctx.lineTo(100, 0); ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.unaffected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.unaffected.html index fb3a715a98d..9d545125398 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.unaffected.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.unaffected.html @@ -30,8 +30,8 @@ ctx.fill(); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); -_assertPixel(canvas, 10,40, 0,255,0,255, "10,40", "0,255,0,255"); +_assertPixel(canvas, 90,10, 0,255,0,255); +_assertPixel(canvas, 10,40, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.unaffected.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.unaffected.worker.js index 3f447087ab8..6b4aa9244f3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.unaffected.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.unaffected.worker.js @@ -26,8 +26,8 @@ ctx.fill(); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); -_assertPixel(canvas, 10,40, 0,255,0,255, "10,40", "0,255,0,255"); +_assertPixel(canvas, 90,10, 0,255,0,255); +_assertPixel(canvas, 10,40, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.overlap.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.overlap.html index f933a67c26f..6eaf88edcde 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.overlap.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.overlap.html @@ -27,7 +27,7 @@ ctx.rect(0, 0, 100, 50); ctx.closePath(); ctx.rect(10, 10, 80, 30); ctx.fill(); -_assertPixelApprox(canvas, 50,25, 0,127,0,255, "50,25", "0,127,0,255", 1); +_assertPixelApprox(canvas, 50,25, 0,127,0,255, 1); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.overlap.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.overlap.worker.js index 907c9491a3d..e1d64fe40bf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.overlap.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.overlap.worker.js @@ -23,7 +23,7 @@ ctx.rect(0, 0, 100, 50); ctx.closePath(); ctx.rect(10, 10, 80, 30); ctx.fill(); -_assertPixelApprox(canvas, 50,25, 0,127,0,255, "50,25", "0,127,0,255", 1); +_assertPixelApprox(canvas, 50,25, 0,127,0,255, 1); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.add.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.add.html index 87ff1254e22..c5f64924da3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.add.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.add.html @@ -33,7 +33,7 @@ ctx.lineTo(100, 0); ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.add.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.add.worker.js index 8963be3c7fc..b40e1706239 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.add.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.add.worker.js @@ -29,7 +29,7 @@ ctx.lineTo(100, 0); ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.1.html index 31b9d4fa20a..4f553f2bc32 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.1.html @@ -33,7 +33,7 @@ ctx.lineTo(0, 50); ctx.lineTo(100, 50); ctx.lineTo(100, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.1.worker.js index 4fb6a5420e1..a8209154139 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.1.worker.js @@ -29,7 +29,7 @@ ctx.lineTo(0, 50); ctx.lineTo(100, 50); ctx.lineTo(100, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.2.html index 3f7502dc7fd..cf1fcaa2d44 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.2.html @@ -32,7 +32,7 @@ ctx.lineTo(0, 50); ctx.lineTo(100, 50); ctx.lineTo(100, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.2.worker.js index 532f89c0df7..2c83a41ae8e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.2.worker.js @@ -28,7 +28,7 @@ ctx.lineTo(0, 50); ctx.lineTo(100, 50); ctx.lineTo(100, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.3.html index 2e0e0c6f783..ffcbfe2518d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.3.html @@ -38,7 +38,7 @@ ctx.lineTo(0, 50); ctx.lineTo(100, 50); ctx.lineTo(100, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.3.worker.js index cf54bfb105c..ca5510abf21 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.fill.winding.subtract.3.worker.js @@ -34,7 +34,7 @@ ctx.lineTo(0, 50); ctx.lineTo(100, 50); ctx.lineTo(100, 0); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.initial.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.initial.html index 851deac9919..35c96cdab5d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.initial.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.initial.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.closePath(); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.initial.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.initial.worker.js index 4bdc8ebf6fb..de8597fbc3c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.initial.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.initial.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.closePath(); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.basic.html index ab309f428ab..3247ededcc8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.basic.html @@ -28,7 +28,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.basic.worker.js index f00439ef1b5..980de5c1b28 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.basic.worker.js @@ -24,7 +24,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.1.html index f6b85bccb56..5a15f9ece48 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.1.html @@ -27,7 +27,7 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.lineTo(100, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js index 908fe2d9546..024754ca0ea 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.lineTo(100, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.2.html index 8659965bef2..eaad8dabcce 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.2.html @@ -28,7 +28,7 @@ ctx.beginPath(); ctx.lineTo(0, 25); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js index 878b86d6861..2a15c9e14d4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js @@ -24,7 +24,7 @@ ctx.beginPath(); ctx.lineTo(0, 25); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nextpoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nextpoint.html index 7d42c0df8e0..fc697b9be59 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nextpoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nextpoint.html @@ -29,7 +29,7 @@ ctx.moveTo(-100, -100); ctx.lineTo(0, 25); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nextpoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nextpoint.worker.js index 258c0fefebe..de9d56be06e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nextpoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nextpoint.worker.js @@ -25,7 +25,7 @@ ctx.moveTo(-100, -100); ctx.lineTo(0, 25); ctx.lineTo(100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nonfinite.html index ff8bda77e2a..02d77163fd2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nonfinite.html @@ -33,8 +33,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nonfinite.worker.js index 5eaa4f0eed2..5161b4e4322 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.lineTo.nonfinite.worker.js @@ -29,8 +29,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.basic.html index 7e2a58355e7..8363792c706 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.basic.html @@ -29,7 +29,7 @@ ctx.lineTo(10, 50); ctx.lineTo(100, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 90,25, 0,255,0,255, "90,25", "0,255,0,255"); +_assertPixel(canvas, 90,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.basic.worker.js index 9cf101f5e03..eca39660bce 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.basic.worker.js @@ -25,7 +25,7 @@ ctx.lineTo(10, 50); ctx.lineTo(100, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 90,25, 0,255,0,255, "90,25", "0,255,0,255"); +_assertPixel(canvas, 90,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.multiple.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.multiple.html index cb2c4a408cd..928c9783d44 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.multiple.html @@ -29,7 +29,7 @@ ctx.lineTo(100, 25); ctx.strokeStyle = '#0f0'; ctx.lineWidth = 50; ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.multiple.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.multiple.worker.js index 2001b2a6c42..686f5ae84ad 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.multiple.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.multiple.worker.js @@ -25,7 +25,7 @@ ctx.lineTo(100, 25); ctx.strokeStyle = '#0f0'; ctx.lineWidth = 50; ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.newsubpath.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.newsubpath.html index c0b170a10e5..89fda23ffc9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.newsubpath.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.newsubpath.html @@ -29,7 +29,7 @@ ctx.moveTo(100, 50); ctx.moveTo(0, 50); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.newsubpath.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.newsubpath.worker.js index 721cb1a8210..d00491c42bf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.newsubpath.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.newsubpath.worker.js @@ -25,7 +25,7 @@ ctx.moveTo(100, 50); ctx.moveTo(0, 50); ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.nonfinite.html index a2dda9e5fee..1a2e6cfe839 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.nonfinite.html @@ -33,7 +33,7 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.nonfinite.worker.js index d574e2c121a..ced534fb954 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.moveTo.nonfinite.worker.js @@ -29,7 +29,7 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.basic.html index 777b24adf48..46a83e112c5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.basic.html @@ -28,7 +28,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.quadraticCurveTo(100, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.basic.worker.js index d19af374716..a1dfa045d94 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.basic.worker.js @@ -24,7 +24,7 @@ ctx.beginPath(); ctx.moveTo(0, 25); ctx.quadraticCurveTo(100, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html index 9cc6adfe9d9..37662e46185 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html @@ -27,8 +27,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.quadraticCurveTo(100, 50, 200, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 95,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js index 6b119853e78..fe20e7b890f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js @@ -23,8 +23,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.quadraticCurveTo(100, 50, 200, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 95,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html index 4ceadbd6f16..2f18424749f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html @@ -27,8 +27,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.quadraticCurveTo(0, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 5,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js index 1d316175570..f840168f986 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js @@ -23,8 +23,8 @@ ctx.lineWidth = 50; ctx.beginPath(); ctx.quadraticCurveTo(0, 25, 100, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 5,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.nonfinite.html index 4f32efb443a..1083f027e2c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.nonfinite.html @@ -49,8 +49,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js index 738b7359063..df17bd6d362 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js @@ -45,8 +45,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.scaled.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.scaled.html index 14bff6a1466..60ba483f14d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.scaled.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.scaled.html @@ -29,11 +29,11 @@ ctx.beginPath(); ctx.moveTo(-1, 1.05); ctx.quadraticCurveTo(0, -1, 1.2, 1.05); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.scaled.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.scaled.worker.js index 48fadcdfdb2..298001b212e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.scaled.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.scaled.worker.js @@ -25,11 +25,11 @@ ctx.beginPath(); ctx.moveTo(-1, 1.05); ctx.quadraticCurveTo(0, -1, 1.2, 1.05); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.shape.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.shape.html index 5090ea28975..21cb175d598 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.shape.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.shape.html @@ -28,11 +28,11 @@ ctx.beginPath(); ctx.moveTo(-1000, 1050); ctx.quadraticCurveTo(0, -1000, 1200, 1050); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.shape.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.shape.worker.js index 2c22a237272..f7aac9135af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.shape.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.quadraticCurveTo.shape.worker.js @@ -24,11 +24,11 @@ ctx.beginPath(); ctx.moveTo(-1000, 1050); ctx.quadraticCurveTo(0, -1000, 1200, 1050); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.basic.html index 16fb2998a90..5214bd8dc05 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.basic.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.rect(0, 0, 100, 50); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.basic.worker.js index e547f6d01d7..dcf3dc2a4bc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.basic.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.rect(0, 0, 100, 50); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.closed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.closed.html index 8dd8f1810fd..70db3725a11 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.closed.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.closed.html @@ -27,7 +27,7 @@ ctx.lineWidth = 200; ctx.lineJoin = 'miter'; ctx.rect(100, 50, 100, 100); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.closed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.closed.worker.js index 9c6ca9df167..6ee09ef8d43 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.closed.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.closed.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 200; ctx.lineJoin = 'miter'; ctx.rect(100, 50, 100, 100); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.1.html index b3e59bc7675..bb4bfc0c906 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.1.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.rect(200, 100, 400, 1000); ctx.lineTo(-2000, -1000); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.1.worker.js index 33f5a72255b..f576ac43664 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.1.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.rect(200, 100, 400, 1000); ctx.lineTo(-2000, -1000); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.2.html index d58763b42e2..1f945a858e9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.2.html @@ -29,10 +29,10 @@ ctx.lineJoin = 'bevel'; ctx.rect(150, 150, 2000, 2000); ctx.lineTo(160, 160); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.2.worker.js index 7bbe9fed19a..8813ed81522 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.end.2.worker.js @@ -25,10 +25,10 @@ ctx.lineJoin = 'bevel'; ctx.rect(150, 150, 2000, 2000); ctx.lineTo(160, 160); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.negative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.negative.html index c707698ccc7..8c9effe2a54 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.negative.html @@ -29,10 +29,10 @@ ctx.rect(100, 0, -50, 25); ctx.rect(0, 50, 50, -25); ctx.rect(100, 50, -50, -25); ctx.fill(); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.negative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.negative.worker.js index f844c97d194..ea01c6d3f07 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.negative.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.negative.worker.js @@ -25,10 +25,10 @@ ctx.rect(100, 0, -50, 25); ctx.rect(0, 50, 50, -25); ctx.rect(100, 50, -50, -25); ctx.fill(); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.newsubpath.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.newsubpath.html index cbd9c583033..1dcfbe94869 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.newsubpath.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.newsubpath.html @@ -29,7 +29,7 @@ ctx.moveTo(-100, 25); ctx.lineTo(-50, 25); ctx.rect(200, 25, 1, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.newsubpath.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.newsubpath.worker.js index d5ad0d1f87d..44962c5f2f4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.newsubpath.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.newsubpath.worker.js @@ -25,7 +25,7 @@ ctx.moveTo(-100, 25); ctx.lineTo(-50, 25); ctx.rect(200, 25, 1, 1); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.nonfinite.html index 68931af372a..7f92cf5e48c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.nonfinite.html @@ -49,8 +49,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.nonfinite.worker.js index 9095b9e721a..6fa1e82ae48 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.nonfinite.worker.js @@ -45,8 +45,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.selfintersect.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.selfintersect.html index 6e4fb684e3e..36c3f074194 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.selfintersect.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.selfintersect.html @@ -27,7 +27,7 @@ ctx.lineWidth = 90; ctx.beginPath(); ctx.rect(45, 20, 10, 10); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.selfintersect.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.selfintersect.worker.js index 85ec849010b..84c2687f309 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.selfintersect.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.selfintersect.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 90; ctx.beginPath(); ctx.rect(45, 20, 10, 10); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.winding.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.winding.html index 15500294d09..c4f4128188b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.winding.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.winding.html @@ -29,10 +29,10 @@ ctx.rect(100, 50, -50, -50); ctx.rect(0, 25, 100, -25); ctx.rect(100, 25, -100, 25); ctx.fill(); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.winding.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.winding.worker.js index d406db9b59d..90a3d05e8b2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.winding.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.winding.worker.js @@ -25,10 +25,10 @@ ctx.rect(100, 50, -50, -50); ctx.rect(0, 25, 100, -25); ctx.rect(100, 25, -100, 25); ctx.fill(); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.1.html index f2772ccd634..90c0bb1f68a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.1.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.rect(0, 50, 100, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.1.worker.js index 33d2be8a50a..4d080710d07 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.1.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.rect(0, 50, 100, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.2.html index 8abca945cfb..4c3ae6f6ddf 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.2.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.rect(50, -100, 0, 250); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.2.worker.js index 7c580da1f70..93d5a528759 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.2.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.rect(50, -100, 0, 250); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.3.html index c0af2d3e896..86bd7494186 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.3.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.rect(50, 25, 0, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.3.worker.js index e6b7da7e31c..6403de43c03 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.3.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.rect(50, 25, 0, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.4.html index fd40e7881bb..063ef2ba1d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.4.html @@ -27,7 +27,7 @@ ctx.lineWidth = 50; ctx.rect(100, 25, 0, 0); ctx.lineTo(0, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.4.worker.js index c8cb1e2fc87..87fd6985663 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.4.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 50; ctx.rect(100, 25, 0, 0); ctx.lineTo(0, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.5.html index d58b09dcc8d..0fa0b075504 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.5.html @@ -27,7 +27,7 @@ ctx.lineWidth = 50; ctx.moveTo(0, 0); ctx.rect(100, 25, 0, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.5.worker.js index 77bd33c163d..77851f54d3e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.5.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 50; ctx.moveTo(0, 0); ctx.rect(100, 25, 0, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.6.html index 7828d138d9a..a3cf7b60ac7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.6.html @@ -29,7 +29,7 @@ ctx.lineWidth = 200; ctx.beginPath(); ctx.rect(100, 25, 1000, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.6.worker.js index 93e41f586c5..5db284837c4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.rect.zero.6.worker.js @@ -25,7 +25,7 @@ ctx.lineWidth = 200; ctx.beginPath(); ctx.rect(100, 25, 1000, 0); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint.html index d6b2aff3ffc..479ab00cd7d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint.html @@ -27,28 +27,28 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint.worker.js index 224f4d6c630..ba4fb4e611f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint.worker.js @@ -23,28 +23,28 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompointinit.html index f13e6dd45f2..18ff259e66c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompointinit.html @@ -27,28 +27,28 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompointinit.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompointinit.worker.js index 7b3d4cb6767..589950c04e0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompointinit.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompointinit.worker.js @@ -23,28 +23,28 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double.html index 4eef53ca205..4761bb5e5e8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double.html @@ -25,10 +25,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double.worker.js index f637778d5ba..57f28c77786 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double.worker.js @@ -21,10 +21,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint.html index 722d11208c7..c96ed08f05c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint.html @@ -27,20 +27,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint.worker.js index 1324fd1a0c1..7e7a4efddc0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint.worker.js @@ -23,20 +23,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompointinit.html index 8338c9af65a..02b889c7592 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompointinit.html @@ -27,20 +27,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompointinit.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompointinit.worker.js index 4e91ac092fd..fcc3cb088ae 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompointinit.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompointinit.worker.js @@ -23,20 +23,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double.html index a864fbd18e4..2a6a030237b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double.html @@ -25,10 +25,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double.worker.js index 553c1073eef..6d4d029b1c8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double.worker.js @@ -21,10 +21,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint.html index b81559614b3..bc6e27c6830 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint.html @@ -27,20 +27,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint.worker.js index d753a2bed41..fead59e863b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint.worker.js @@ -23,20 +23,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompointinit.html index 9e2e26810e0..fcca1c739fc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompointinit.html @@ -27,20 +27,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompointinit.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompointinit.worker.js index 824d6d4a414..ab334e4ca06 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompointinit.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompointinit.worker.js @@ -23,20 +23,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double.html index 481833be2a1..2bc67375669 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double.html @@ -25,10 +25,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double.worker.js index ab65f619fa0..d355852a5ce 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double.worker.js @@ -21,10 +21,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint.html index 0f1b60fb099..f3388e6562e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint.worker.js index c16a781c07f..36c6401bf3d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompointinit.html index 08dde930cea..dd96e859ea1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompointinit.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompointinit.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompointinit.worker.js index 53c33a3313f..a497d5788ba 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompointinit.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompointinit.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double.html index cf9ee864248..4c5f57122cd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double.html @@ -25,10 +25,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20, 0, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double.worker.js index dd64668c968..171a2ae5e6f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double.worker.js @@ -21,10 +21,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20, 0, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint.html index 918133e0b23..3459ac27bb2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint.html @@ -27,20 +27,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint.worker.js index f0bd34ee6c5..9588780f978 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint.worker.js @@ -23,20 +23,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompointinit.html index 6f7ecac8dec..6476be489f7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompointinit.html @@ -27,20 +27,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompointinit.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompointinit.worker.js index dd5d17023a1..42dead8509b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompointinit.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompointinit.worker.js @@ -23,20 +23,20 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double.html index 380d31634e1..652745e0bed 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double.html @@ -25,10 +25,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 20, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double.worker.js index 1fd9fca3307..e3929fbfdbb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double.worker.js @@ -21,10 +21,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 20, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint.html index fcde6b974d6..1c295143c81 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint.worker.js index 7d7989807ed..c8e08ec297f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompointinit.html index 3d4b1b1b5aa..f8e62a5bf62 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompointinit.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompointinit.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompointinit.worker.js index c54c88a8352..0fe2b89877a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompointinit.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompointinit.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double.html index fc4e640ac6e..ff1301d9cd4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double.html @@ -25,10 +25,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 0, 20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double.worker.js index 86628624dba..2422435d526 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double.worker.js @@ -21,10 +21,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 0, 20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint.html index 3d22bb9e407..3110983f7f8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint.worker.js index 623ebe432c5..3bdb12e0298 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompointinit.html index aaffcd27bcb..976b39a1021 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompointinit.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompointinit.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompointinit.worker.js index f9fb961af04..86b43ad2a19 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompointinit.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompointinit.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-left corner -_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255"); -_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255"); -_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255"); -_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); +_assertPixel(canvas, 20,1, 255,0,0,255); +_assertPixel(canvas, 41,1, 0,255,0,255); +_assertPixel(canvas, 1,10, 255,0,0,255); +_assertPixel(canvas, 1,21, 0,255,0,255); // other corners -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double.html index 1819c739bec..c75d6420c9c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double.html @@ -25,10 +25,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20, 0, 0, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double.worker.js index 2515f70e5ab..925c93b0c90 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double.worker.js @@ -21,10 +21,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [20, 0, 0, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint.html index 1518d554a96..33d861d6dce 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint.worker.js index 556a11714c6..12d1a8c8e63 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompointinit.html index 78fe981d8bc..b088c2e717b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompointinit.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompointinit.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompointinit.worker.js index 81e115df905..49a247a2663 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompointinit.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompointinit.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // top-right corner -_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); -_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255"); -_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255"); -_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); +_assertPixel(canvas, 79,1, 255,0,0,255); +_assertPixel(canvas, 58,1, 0,255,0,255); +_assertPixel(canvas, 98,10, 255,0,0,255); +_assertPixel(canvas, 98,21, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double.html index 0a6e140f260..71395e0e9ee 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double.html @@ -25,10 +25,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 20, 0, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double.worker.js index 57914f6ce49..f868c6272ef 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double.worker.js @@ -21,10 +21,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 20, 0, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint.html index d9aceaa6f8b..4922bf37f22 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint.worker.js index 6280aa5172a..2da2f3591c6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompointinit.html index cc0ad6d48b7..3b6f2fd863f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompointinit.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompointinit.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompointinit.worker.js index 0f54b1e6860..65a3feb36f4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompointinit.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompointinit.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-right corner -_assertPixel(canvas, 79,48, 255,0,0,255, "79,48", "255,0,0,255"); -_assertPixel(canvas, 58,48, 0,255,0,255, "58,48", "0,255,0,255"); -_assertPixel(canvas, 98,39, 255,0,0,255, "98,39", "255,0,0,255"); -_assertPixel(canvas, 98,28, 0,255,0,255, "98,28", "0,255,0,255"); +_assertPixel(canvas, 79,48, 255,0,0,255); +_assertPixel(canvas, 58,48, 0,255,0,255); +_assertPixel(canvas, 98,39, 255,0,0,255); +_assertPixel(canvas, 98,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double.html index 93f41a5c44b..3dd2af98007 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double.html @@ -25,10 +25,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 0, 20, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double.worker.js index 08f2a21cee2..a327ceac157 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double.worker.js @@ -21,10 +21,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 0, 20, 0]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint.html index 110e6848b01..d61a3133cc4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint.worker.js index 0240541b81a..d8a121e6da9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompointinit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompointinit.html index a063eb19b22..94ffc00433e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompointinit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompointinit.html @@ -27,15 +27,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompointinit.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompointinit.worker.js index 94d15618239..b7babb52961 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompointinit.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompointinit.worker.js @@ -23,15 +23,15 @@ ctx.fillStyle = '#0f0'; ctx.fill(); // bottom-left corner -_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255"); -_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255"); -_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255"); -_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); +_assertPixel(canvas, 20,48, 255,0,0,255); +_assertPixel(canvas, 41,48, 0,255,0,255); +_assertPixel(canvas, 1,39, 255,0,0,255); +_assertPixel(canvas, 1,28, 0,255,0,255); // other corners -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double.html index efa52caa93b..4ab25818476 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double.html @@ -25,10 +25,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 0, 0, 20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double.worker.js index 058758d43f0..ad4cca49536 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double.worker.js @@ -21,10 +21,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [0, 0, 0, 20]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed.html index 5cac59fef58..1b4abf012c7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed.html @@ -27,7 +27,7 @@ ctx.lineWidth = 200; ctx.lineJoin = 'miter'; ctx.roundRect(100, 50, 100, 100, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed.worker.js index 5aebb5f89cc..e0f1b81aa42 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 200; ctx.lineJoin = 'miter'; ctx.roundRect(100, 50, 100, 100, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1.html index c32178529c2..5c6b3cd537d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.roundRect(200, 100, 400, 1000, [0]); ctx.lineTo(-2000, -1000); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1.worker.js index 09997975cf2..1ec22bdb6a7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.roundRect(200, 100, 400, 1000, [0]); ctx.lineTo(-2000, -1000); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2.html index 7f5927fbc25..3913f69d412 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2.html @@ -29,10 +29,10 @@ ctx.lineJoin = 'bevel'; ctx.roundRect(150, 150, 2000, 2000, [0]); ctx.lineTo(160, 160); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2.worker.js index 95d111df851..c3085d53c3b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2.worker.js @@ -25,10 +25,10 @@ ctx.lineJoin = 'bevel'; ctx.roundRect(150, 150, 2000, 2000, [0]); ctx.lineTo(160, 160); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3.html index f42768d734d..349f13485c0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3.html @@ -27,10 +27,10 @@ ctx.lineWidth = 100; ctx.roundRect(101, 51, 2000, 2000, [500, 500, 500, 500]); ctx.lineTo(-1, -1); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3.worker.js index 85d51f70160..52b9c442838 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3.worker.js @@ -23,10 +23,10 @@ ctx.lineWidth = 100; ctx.roundRect(101, 51, 2000, 2000, [500, 500, 500, 500]); ctx.lineTo(-1, -1); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4.html index 197955bab5c..3c99e3970a1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4.html @@ -27,10 +27,10 @@ ctx.lineWidth = 10; ctx.roundRect(-1, -1, 2000, 2000, [1000, 1000, 1000, 1000]); ctx.lineTo(-150, -150); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4.worker.js index 65febe5791b..1d57b8978f2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4.worker.js @@ -23,10 +23,10 @@ ctx.lineWidth = 10; ctx.roundRect(-1, -1, 2000, 2000, [1000, 1000, 1000, 1000]); ctx.lineTo(-150, -150); ctx.stroke(); -_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); -_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); -_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); -_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +_assertPixel(canvas, 1,1, 0,255,0,255); +_assertPixel(canvas, 98,1, 0,255,0,255); +_assertPixel(canvas, 1,48, 0,255,0,255); +_assertPixel(canvas, 98,48, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative.html index 644ebdfd0fd..e3696ca1a5b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative.html @@ -30,15 +30,15 @@ ctx.roundRect(0, 50, 50, -25, [10, 0, 0, 0]); ctx.roundRect(100, 50, -50, -25, [10, 0, 0, 0]); ctx.fill(); // All rects drawn -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); // Correct corners are rounded. -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative.worker.js index 1191eb4fc5c..c34c20397a8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative.worker.js @@ -26,15 +26,15 @@ ctx.roundRect(0, 50, 50, -25, [10, 0, 0, 0]); ctx.roundRect(100, 50, -50, -25, [10, 0, 0, 0]); ctx.fill(); // All rects drawn -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); // Correct corners are rounded. -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath.html index 4c1c27e1f29..6d0a8149077 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath.html @@ -29,7 +29,7 @@ ctx.moveTo(-100, 25); ctx.lineTo(-50, 25); ctx.roundRect(200, 25, 1, 1, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath.worker.js index 8274f6d6179..c6f7934bee9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath.worker.js @@ -25,7 +25,7 @@ ctx.moveTo(-100, 25); ctx.lineTo(-50, 25); ctx.roundRect(200, 25, 1, 1, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.html index a5436e50278..29773503013 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.html @@ -108,8 +108,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.worker.js index cc60f0f22a6..68d0d8a09a3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.worker.js @@ -104,8 +104,8 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 90,45, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1.html index 73614cf6cff..c1916bf78f2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1.html @@ -25,15 +25,15 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [40, 40, 40, 40]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 2,25, 0,255,0,255, "2,25", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 97,25, 0,255,0,255, "97,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); +_assertPixel(canvas, 2,25, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 97,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1.worker.js index f93f84b008f..9da41478d91 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1.worker.js @@ -21,15 +21,15 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [40, 40, 40, 40]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 2,25, 0,255,0,255, "2,25", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 97,25, 0,255,0,255, "97,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); +_assertPixel(canvas, 2,25, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 97,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2.html index 1cb5a0c7074..f2a69c4ffc7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2.html @@ -25,15 +25,15 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [1000, 1000, 1000, 1000]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 2,25, 0,255,0,255, "2,25", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 97,25, 0,255,0,255, "97,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); +_assertPixel(canvas, 2,25, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 97,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2.worker.js index 5adfb12b7ae..f0d3f57ca48 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2.worker.js @@ -21,15 +21,15 @@ ctx.fillRect(0, 0, 100, 50); ctx.roundRect(0, 0, 100, 50, [1000, 1000, 1000, 1000]); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 2,25, 0,255,0,255, "2,25", "0,255,0,255"); -_assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); -_assertPixel(canvas, 97,25, 0,255,0,255, "97,25", "0,255,0,255"); -_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255"); -_assertPixel(canvas, 98,1, 255,0,0,255, "98,1", "255,0,0,255"); -_assertPixel(canvas, 1,48, 255,0,0,255, "1,48", "255,0,0,255"); -_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255"); +_assertPixel(canvas, 2,25, 0,255,0,255); +_assertPixel(canvas, 50,1, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 50,48, 0,255,0,255); +_assertPixel(canvas, 97,25, 0,255,0,255); +_assertPixel(canvas, 1,1, 255,0,0,255); +_assertPixel(canvas, 98,1, 255,0,0,255); +_assertPixel(canvas, 1,48, 255,0,0,255); +_assertPixel(canvas, 98,48, 255,0,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect.html index b2956458d72..0ec25354903 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect.html @@ -27,7 +27,7 @@ ctx.lineWidth = 90; ctx.beginPath(); ctx.roundRect(45, 20, 10, 10, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect.worker.js index 73f3cd3821f..8b6221414ba 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 90; ctx.beginPath(); ctx.roundRect(45, 20, 10, 10, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding.html index c63a3a6af05..e7f52fbf292 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding.html @@ -29,10 +29,10 @@ ctx.roundRect(100, 50, -50, -50, [0]); ctx.roundRect(0, 25, 100, -25, [0]); ctx.roundRect(100, 25, -100, 25, [0]); ctx.fill(); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding.worker.js index 7fd2b434a7f..82e6b5c3135 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding.worker.js @@ -25,10 +25,10 @@ ctx.roundRect(100, 50, -50, -50, [0]); ctx.roundRect(0, 25, 100, -25, [0]); ctx.roundRect(100, 25, -100, 25, [0]); ctx.fill(); -_assertPixel(canvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); -_assertPixel(canvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); -_assertPixel(canvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); -_assertPixel(canvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); +_assertPixel(canvas, 25,12, 0,255,0,255); +_assertPixel(canvas, 75,12, 0,255,0,255); +_assertPixel(canvas, 25,37, 0,255,0,255); +_assertPixel(canvas, 75,37, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1.html index e3071128380..252475194ee 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.roundRect(0, 50, 100, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1.worker.js index 0663ee78441..17c9be78ec6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.roundRect(0, 50, 100, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2.html index 637c979f8c8..2463e88f1eb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.roundRect(50, -100, 0, 250, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2.worker.js index 9b049cf2e27..9ae058a8476 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.roundRect(50, -100, 0, 250, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3.html index 551c5ad45f2..39de433b081 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3.html @@ -27,7 +27,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.roundRect(50, 25, 0, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3.worker.js index e66388d9a1d..98d37e08e53 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 100; ctx.beginPath(); ctx.roundRect(50, 25, 0, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4.html index 659505f5891..3c6c734b19b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4.html @@ -27,7 +27,7 @@ ctx.lineWidth = 50; ctx.roundRect(100, 25, 0, 0, [0]); ctx.lineTo(0, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4.worker.js index 53776dbdb94..462cde2a03e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 50; ctx.roundRect(100, 25, 0, 0, [0]); ctx.lineTo(0, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5.html index 28415a36b32..de66603a66b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5.html @@ -27,7 +27,7 @@ ctx.lineWidth = 50; ctx.moveTo(0, 0); ctx.roundRect(100, 25, 0, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5.worker.js index fafa2dfb04d..0f706ce246f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5.worker.js @@ -23,7 +23,7 @@ ctx.lineWidth = 50; ctx.moveTo(0, 0); ctx.roundRect(100, 25, 0, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6.html index 36f98111374..bd7ef0fa94c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6.html @@ -29,7 +29,7 @@ ctx.lineWidth = 200; ctx.beginPath(); ctx.roundRect(100, 25, 1000, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6.worker.js index afcfe8c1928..f2115cdd461 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6.worker.js @@ -25,7 +25,7 @@ ctx.lineWidth = 200; ctx.beginPath(); ctx.roundRect(100, 25, 1000, 0, [0]); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.empty.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.empty.html index 7ac1e1ae9ca..a873b260da2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.empty.html @@ -30,7 +30,7 @@ ctx.beginPath(); ctx.moveTo(40, 25); ctx.moveTo(60, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.empty.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.empty.worker.js index f21efdc4ffa..1852c918768 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.empty.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.empty.worker.js @@ -26,7 +26,7 @@ ctx.beginPath(); ctx.moveTo(40, 25); ctx.moveTo(60, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.overlap.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.overlap.html index 35cc9090d63..252a840ed75 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.overlap.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.overlap.html @@ -29,7 +29,7 @@ ctx.lineTo(100, 20); ctx.moveTo(0, 30); ctx.lineTo(100, 30); ctx.stroke(); -_assertPixelApprox(canvas, 50,25, 0,127,0,255, "50,25", "0,127,0,255", 1); +_assertPixelApprox(canvas, 50,25, 0,127,0,255, 1); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.overlap.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.overlap.worker.js index aa7a1637319..aa7cc51d774 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.overlap.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.overlap.worker.js @@ -25,7 +25,7 @@ ctx.lineTo(100, 20); ctx.moveTo(0, 30); ctx.lineTo(100, 30); ctx.stroke(); -_assertPixelApprox(canvas, 50,25, 0,127,0,255, "50,25", "0,127,0,255", 1); +_assertPixelApprox(canvas, 50,25, 0,127,0,255, 1); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.arc.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.arc.html index 2d4fb8ed76b..67f25440dcd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.arc.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.arc.html @@ -34,7 +34,7 @@ ctx.beginPath(); ctx.moveTo(60, 25); ctx.arc(50, 25, 10, 0, 0, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.arc.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.arc.worker.js index 5d3a87f0fe8..ca5844ce2aa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.arc.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.arc.worker.js @@ -30,7 +30,7 @@ ctx.beginPath(); ctx.moveTo(60, 25); ctx.arc(50, 25, 10, 0, 0, false); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.closed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.closed.html index 8890e106c91..1012975fcf4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.closed.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.closed.html @@ -31,7 +31,7 @@ ctx.moveTo(50, 25); ctx.lineTo(50, 25); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.closed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.closed.worker.js index cffdfdd40c4..9b3426f6d0c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.closed.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.closed.worker.js @@ -27,7 +27,7 @@ ctx.moveTo(50, 25); ctx.lineTo(50, 25); ctx.closePath(); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.corner.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.corner.html index f9f4b01b8d8..553fdb61657 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.corner.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.corner.html @@ -33,7 +33,7 @@ ctx.lineTo(-100, 200); ctx.lineTo(-100, 200); ctx.lineTo(-100, 1000); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.corner.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.corner.worker.js index de307b1b4d7..c2233bbc15b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.corner.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.corner.worker.js @@ -29,7 +29,7 @@ ctx.lineTo(-100, 200); ctx.lineTo(-100, 200); ctx.lineTo(-100, 1000); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.html index 270d6c3b0ff..ae2f922a41b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.html @@ -34,7 +34,7 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.bezierCurveTo(50, 25, 50, 25, 50, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.worker.js index 386a4521c05..7dc88a72134 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.worker.js @@ -30,7 +30,7 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.bezierCurveTo(50, 25, 50, 25, 50, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.line.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.line.html index bb9e98744f9..e9163cab40d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.line.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.line.html @@ -30,7 +30,7 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.lineTo(50, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.line.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.line.worker.js index 736be715cce..160bbe7eea3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.line.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.line.worker.js @@ -26,7 +26,7 @@ ctx.beginPath(); ctx.moveTo(50, 25); ctx.lineTo(50, 25); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.rect.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.rect.html index 833c7fe6f35..72d0d6b6e98 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.rect.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.rect.html @@ -30,7 +30,7 @@ ctx.beginPath(); ctx.rect(50, 25, 0, 0); ctx.stroke(); ctx.strokeRect(50, 25, 0, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.rect.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.rect.worker.js index 7d90a826e46..c6ed67ed9e4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.rect.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.rect.worker.js @@ -26,7 +26,7 @@ ctx.beginPath(); ctx.rect(50, 25, 0, 0); ctx.stroke(); ctx.strokeRect(50, 25, 0, 0); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale1.html index c911c09f980..e13fd9fe550 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale1.html @@ -36,15 +36,15 @@ ctx.scale(50, 25); ctx.strokeStyle = '#f00'; ctx.stroke(); ctx.restore(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale1.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale1.worker.js index 507c60e2c5c..ef7b2d4d04e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale1.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale1.worker.js @@ -32,15 +32,15 @@ ctx.scale(50, 25); ctx.strokeStyle = '#f00'; ctx.stroke(); ctx.restore(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale2.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale2.html index 4c516a233ab..2b80f16898e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale2.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale2.html @@ -38,15 +38,15 @@ ctx.scale(25, 50); ctx.strokeStyle = '#f00'; ctx.stroke(); ctx.restore(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale2.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale2.worker.js index fe3138233c2..9c6d4fbf54a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale2.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.scale2.worker.js @@ -34,15 +34,15 @@ ctx.scale(25, 50); ctx.strokeStyle = '#f00'; ctx.stroke(); ctx.restore(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.skew.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.skew.html index 9988291255b..55e96e08e06 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.skew.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.skew.html @@ -51,15 +51,15 @@ ctx.scale(1, 142); ctx.strokeStyle = '#f00'; ctx.stroke(); ctx.restore(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.skew.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.skew.worker.js index 8b854ad25e5..745afe4ff53 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.skew.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.skew.worker.js @@ -47,15 +47,15 @@ ctx.scale(1, 142); ctx.strokeStyle = '#f00'; ctx.stroke(); ctx.restore(); -_assertPixel(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); -_assertPixel(canvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); -_assertPixel(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); -_assertPixel(canvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); -_assertPixel(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); -_assertPixel(canvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); -_assertPixel(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); +_assertPixel(canvas, 0,0, 0,255,0,255); +_assertPixel(canvas, 50,0, 0,255,0,255); +_assertPixel(canvas, 99,0, 0,255,0,255); +_assertPixel(canvas, 0,25, 0,255,0,255); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 99,25, 0,255,0,255); +_assertPixel(canvas, 0,49, 0,255,0,255); +_assertPixel(canvas, 50,49, 0,255,0,255); +_assertPixel(canvas, 99,49, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.unaffected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.unaffected.html index ec96d8b7057..58e7f75dc8e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.unaffected.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.unaffected.html @@ -32,7 +32,7 @@ ctx.stroke(); ctx.closePath(); ctx.strokeStyle = '#0f0'; ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.unaffected.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.unaffected.worker.js index 5534fea05cb..a47c32d0099 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.unaffected.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.unaffected.worker.js @@ -28,7 +28,7 @@ ctx.stroke(); ctx.closePath(); ctx.strokeStyle = '#0f0'; ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.union.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.union.html index cbb9925af36..c3f063fe52d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.union.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.union.html @@ -29,7 +29,7 @@ ctx.lineTo(100, 10); ctx.moveTo(100, 40); ctx.lineTo(0, 40); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.union.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.union.worker.js index f726705b2d9..282cb10bf75 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.union.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.stroke.union.worker.js @@ -25,7 +25,7 @@ ctx.lineTo(100, 10); ctx.moveTo(100, 40); ctx.lineTo(0, 40); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.basic.html index b000df7715e..18370041384 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.basic.html @@ -27,7 +27,7 @@ ctx.rect(100, 0, 100, 50); ctx.translate(0, -100); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.basic.worker.js index 76da934178c..7bc112dd1d0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.basic.worker.js @@ -23,7 +23,7 @@ ctx.rect(100, 0, 100, 50); ctx.translate(0, -100); ctx.fillStyle = '#0f0'; ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.changing.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.changing.html index ec6a682c8c7..b8a467387d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.changing.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.changing.html @@ -34,7 +34,7 @@ ctx.translate(1000, 1000); ctx.rotate(Math.PI/2); ctx.scale(0.1, 0.1); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.changing.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.changing.worker.js index 12dc1c018b8..2460d24b199 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.changing.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.changing.worker.js @@ -30,7 +30,7 @@ ctx.translate(1000, 1000); ctx.rotate(Math.PI/2); ctx.scale(0.1, 0.1); ctx.fill(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.multiple.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.multiple.html index 113dadcd4fa..fcc2942435f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.multiple.html @@ -37,7 +37,7 @@ ctx.lineTo(100, 25); ctx.stroke(); ctx.translate(0, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.multiple.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.multiple.worker.js index abebb1fd64c..a2a04ca7776 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.multiple.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.transformation.multiple.worker.js @@ -33,7 +33,7 @@ ctx.lineTo(100, 25); ctx.stroke(); ctx.translate(0, 50); ctx.stroke(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/pixel-manipulation/2d.imageData.get.clamp.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/pixel-manipulation/2d.imageData.get.clamp.html index 163fc88011f..9cbc1b48dc3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/pixel-manipulation/2d.imageData.get.clamp.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/pixel-manipulation/2d.imageData.get.clamp.html @@ -6,11 +6,11 @@

                                                                      2d.imageData.get.clamp

                                                                      -

                                                                      getImageData() clamps colours to the range [0, 255]

                                                                      +

                                                                      getImageData() clamps colors to the range [0, 255]

                                                                      2d.imageData.get.nonpremul

                                                                      -

                                                                      getImageData() returns non-premultiplied colours

                                                                      +

                                                                      getImageData() returns non-premultiplied colors

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/shadows/2d.shadow.alpha.1.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/shadows/2d.shadow.alpha.1.html index 47ab21897ec..cf887b62a28 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/shadows/2d.shadow.alpha.1.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/shadows/2d.shadow.alpha.1.html @@ -6,11 +6,11 @@

                                                                      2d.shadow.alpha.1

                                                                      -

                                                                      Shadow colour alpha components are used

                                                                      +

                                                                      Shadow color alpha components are used

                                                                      2d.shadow.alpha.2

                                                                      -

                                                                      Shadow colour alpha components are used

                                                                      +

                                                                      Shadow color alpha components are used

                                                                      + + + +

                                                                      initial.color

                                                                      +

                                                                      Initial state is transparent black

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.color.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.color.worker.js new file mode 100644 index 00000000000..2a6e6e576c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.color.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:initial.color +// Description:Initial state is transparent black +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Initial state is transparent black"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var canvas = new OffscreenCanvas(100, 50); +var ctx = canvas.getContext('2d'); + +_assertPixel(canvas, 20,20, 0,0,0,0); +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.colour.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.colour.html deleted file mode 100644 index a447262ad45..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.colour.html +++ /dev/null @@ -1,27 +0,0 @@ - - -OffscreenCanvas test: initial.colour - - - - -

                                                                      initial.colour

                                                                      -

                                                                      Initial state is transparent black

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.colour.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.colour.worker.js deleted file mode 100644 index baf812986fe..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.colour.worker.js +++ /dev/null @@ -1,23 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:initial.colour -// Description:Initial state is transparent black -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -var t = async_test("Initial state is transparent black"); -var t_pass = t.done.bind(t); -var t_fail = t.step_func(function(reason) { - throw reason; -}); -t.step(function() { - -var canvas = new OffscreenCanvas(100, 50); -var ctx = canvas.getContext('2d'); - -_assertPixel(canvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); -t.done(); - -}); -done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.html index a5c59556118..87a3e43be46 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.html @@ -26,7 +26,7 @@ ctx.clip(); canvas.width = 100; ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); +_assertPixel(canvas, 20,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.worker.js index a12a6235d73..45ee30d0809 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.worker.js @@ -22,7 +22,7 @@ ctx.clip(); canvas.width = 100; ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); +_assertPixel(canvas, 20,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.html index 2a16c908f99..632bc2fd69f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.html @@ -22,9 +22,9 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 20,20, 255,0,0,255, "20,20", "255,0,0,255"); +_assertPixel(canvas, 20,20, 255,0,0,255); canvas.width = 50; -_assertPixel(canvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); +_assertPixel(canvas, 20,20, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.worker.js index 5f98f5130ad..9d840a59632 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.worker.js @@ -18,9 +18,9 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 20,20, 255,0,0,255, "20,20", "255,0,0,255"); +_assertPixel(canvas, 20,20, 255,0,0,255); canvas.width = 50; -_assertPixel(canvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); +_assertPixel(canvas, 20,20, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.html index ff306d3831a..96819a07d3d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.html @@ -29,7 +29,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.worker.js index 064eb52b5c0..a18d11e86a0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.worker.js @@ -25,7 +25,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.html index ff39b7d163d..3c9667ca5cb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.html @@ -25,7 +25,7 @@ ctx.rect(0, 0, 100, 50); canvas.width = 100; ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); +_assertPixel(canvas, 20,20, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.worker.js index 7057d46ebbc..9f34734a58e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.worker.js @@ -21,7 +21,7 @@ ctx.rect(0, 0, 100, 50); canvas.width = 100; ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); +_assertPixel(canvas, 20,20, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.html index 9a589bbe459..3766795ba95 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.html @@ -29,7 +29,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = p; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.worker.js index ccbd3f3b9f6..1fe6c01e2d3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.worker.js @@ -25,7 +25,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = p; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.html index a2050a11a79..bfcf05013ef 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.html @@ -23,9 +23,9 @@ var ctx = canvas.getContext('2d'); canvas.width = 100; ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 20,20, 255,0,0,255, "20,20", "255,0,0,255"); +_assertPixel(canvas, 20,20, 255,0,0,255); canvas.width = 100; -_assertPixel(canvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); +_assertPixel(canvas, 20,20, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.worker.js index c67c57ae259..00db682f70a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.worker.js @@ -19,9 +19,9 @@ var ctx = canvas.getContext('2d'); canvas.width = 100; ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 20,20, 255,0,0,255, "20,20", "255,0,0,255"); +_assertPixel(canvas, 20,20, 255,0,0,255); canvas.width = 100; -_assertPixel(canvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); +_assertPixel(canvas, 20,20, 0,0,0,0); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.html index 85912f4813d..402b34f9c5c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.html @@ -25,7 +25,7 @@ ctx.scale(0.1, 0.1); canvas.width = 100; ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); +_assertPixel(canvas, 20,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.worker.js index d88e7b00007..3fb80d061ff 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.worker.js @@ -21,7 +21,7 @@ ctx.scale(0.1, 0.1); canvas.width = 100; ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); +_assertPixel(canvas, 20,20, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html index 94ec72b4a63..b1308035936 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html @@ -26,7 +26,7 @@ ctx.scale(2, 1); ctx.rotate(Math.PI / 2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -50, 50, 50); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js index d3a8f638fdc..7ac61067b4b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js @@ -22,7 +22,7 @@ ctx.scale(2, 1); ctx.rotate(Math.PI / 2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -50, 50, 50); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html index aa0493a20e3..0a98c7e65f9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(Math.PI / 2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -100, 50, 100); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js index 38195b566be..465d3b67907 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(Math.PI / 2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -100, 50, 100); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html index defe2fe8286..0f2227a4e5c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html @@ -28,7 +28,7 @@ ctx.rotate(-Infinity); ctx.rotate(NaN); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js index a8aead4a5c7..56a04d874e8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js @@ -24,7 +24,7 @@ ctx.rotate(-Infinity); ctx.rotate(NaN); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html index 48104af683e..8a78dddd7f8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js index 5a2ac2fe3a0..9780e68a02f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html index a524af75438..7711a8c1404 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html @@ -28,9 +28,9 @@ ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) // be safe enough on reasonable implementations ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,2, 0,255,0,255, "98,2", "0,255,0,255"); -_assertPixel(canvas, 98,47, 0,255,0,255, "98,47", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,2, 0,255,0,255); +_assertPixel(canvas, 98,47, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js index bc7dff2e325..db9fbd43bc1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js @@ -24,9 +24,9 @@ ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) // be safe enough on reasonable implementations ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,2, 0,255,0,255, "98,2", "0,255,0,255"); -_assertPixel(canvas, 98,47, 0,255,0,255, "98,47", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,2, 0,255,0,255); +_assertPixel(canvas, 98,47, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html index 2c5222d879c..49959dac022 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html @@ -25,9 +25,9 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(-Math.PI * (1 + 4096)); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,2, 0,255,0,255, "98,2", "0,255,0,255"); -_assertPixel(canvas, 98,47, 0,255,0,255, "98,47", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,2, 0,255,0,255); +_assertPixel(canvas, 98,47, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js index ca0e473c1f0..7f93f654582 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js @@ -21,9 +21,9 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(-Math.PI * (1 + 4096)); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); -_assertPixel(canvas, 98,2, 0,255,0,255, "98,2", "0,255,0,255"); -_assertPixel(canvas, 98,47, 0,255,0,255, "98,47", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); +_assertPixel(canvas, 98,2, 0,255,0,255); +_assertPixel(canvas, 98,47, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html index e1e000c579b..2255b9973dd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js index 2d6367647e2..10e00c4656a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.rotate(0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html index 17f8beab816..c78ac79f5ab 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.scale(2, 4); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 12.5); -_assertPixel(canvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); +_assertPixel(canvas, 90,40, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js index 282328b1e37..39b52d57b5f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.scale(2, 4); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 12.5); -_assertPixel(canvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); +_assertPixel(canvas, 90,40, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html index 07277d5e364..a67d05eb2c2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.scale(1e5, 1e5); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 1, 1); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js index 702b78d11ea..1293cce196f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.scale(1e5, 1e5); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 1, 1); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html index ab8bb21316d..717f3d305a1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html @@ -26,7 +26,7 @@ ctx.scale(Math.sqrt(2), Math.sqrt(2)); ctx.scale(Math.sqrt(2), Math.sqrt(2)); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); -_assertPixel(canvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); +_assertPixel(canvas, 90,40, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js index 641917399aa..c5a38207ea0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js @@ -22,7 +22,7 @@ ctx.scale(Math.sqrt(2), Math.sqrt(2)); ctx.scale(Math.sqrt(2), Math.sqrt(2)); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); -_assertPixel(canvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); +_assertPixel(canvas, 90,40, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html index eaa32619f32..fbcec5d763a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html @@ -32,8 +32,8 @@ ctx.scale(1, -1); ctx.fillStyle = '#0f0'; ctx.fillRect(50, -50, 50, 50); ctx.restore(); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js index 2a87b12d755..a5344a9a717 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js @@ -28,8 +28,8 @@ ctx.scale(1, -1); ctx.fillStyle = '#0f0'; ctx.fillRect(50, -50, 50, 50); ctx.restore(); -_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); -_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(canvas, 25,25, 0,255,0,255); +_assertPixel(canvas, 75,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html index 97f6c145378..ac38bc1fa46 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html @@ -32,7 +32,7 @@ ctx.scale(0.1, NaN); ctx.scale(Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js index 6ec8a8d9f72..95e9922b69b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js @@ -28,7 +28,7 @@ ctx.scale(0.1, NaN); ctx.scale(Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html index 6b78598a9c6..9eae3b1db33 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html @@ -34,7 +34,7 @@ ctx.scale(1, 0); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.restore(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js index e0399211ffe..0f8dad04422 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js @@ -30,7 +30,7 @@ ctx.scale(1, 0); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.restore(); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html index 5299bec075f..f8dfb048812 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html @@ -26,7 +26,7 @@ ctx.setTransform(1/2,0, 0,1/2, 0,0); ctx.setTransform(2,0, 0,2, 0,0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); -_assertPixel(canvas, 75,35, 0,255,0,255, "75,35", "0,255,0,255"); +_assertPixel(canvas, 75,35, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js index 0a1f034b302..9d01c1302ec 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js @@ -22,7 +22,7 @@ ctx.setTransform(1/2,0, 0,1/2, 0,0); ctx.setTransform(2,0, 0,2, 0,0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); -_assertPixel(canvas, 75,35, 0,255,0,255, "75,35", "0,255,0,255"); +_assertPixel(canvas, 75,35, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html index 91fd054d684..fbed341a04a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html @@ -100,7 +100,7 @@ ctx.setTransform(0, 0, 0, Infinity, 0, Infinity); ctx.setTransform(0, 0, 0, 0, Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js index 0a0f3977853..be7e055a853 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js @@ -96,7 +96,7 @@ ctx.setTransform(0, 0, 0, Infinity, 0, Infinity); ctx.setTransform(0, 0, 0, 0, Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html index 505fde266da..40fa8015d4c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html @@ -40,14 +40,14 @@ ctx.moveTo(pts[0][0], pts[0][1]); for (var i = 0; i < pts.length; ++i) ctx.lineTo(pts[i][0], pts[i][1]); ctx.fill(); -_assertPixel(canvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255"); -_assertPixel(canvas, 79,11, 0,255,0,255, "79,11", "0,255,0,255"); -_assertPixel(canvas, 21,39, 0,255,0,255, "21,39", "0,255,0,255"); -_assertPixel(canvas, 79,39, 0,255,0,255, "79,39", "0,255,0,255"); -_assertPixel(canvas, 39,19, 0,255,0,255, "39,19", "0,255,0,255"); -_assertPixel(canvas, 61,19, 0,255,0,255, "61,19", "0,255,0,255"); -_assertPixel(canvas, 39,31, 0,255,0,255, "39,31", "0,255,0,255"); -_assertPixel(canvas, 61,31, 0,255,0,255, "61,31", "0,255,0,255"); +_assertPixel(canvas, 21,11, 0,255,0,255); +_assertPixel(canvas, 79,11, 0,255,0,255); +_assertPixel(canvas, 21,39, 0,255,0,255); +_assertPixel(canvas, 79,39, 0,255,0,255); +_assertPixel(canvas, 39,19, 0,255,0,255); +_assertPixel(canvas, 61,19, 0,255,0,255); +_assertPixel(canvas, 39,31, 0,255,0,255); +_assertPixel(canvas, 61,31, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js index 2293a6a8bb7..6490f9b7094 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js @@ -36,14 +36,14 @@ ctx.moveTo(pts[0][0], pts[0][1]); for (var i = 0; i < pts.length; ++i) ctx.lineTo(pts[i][0], pts[i][1]); ctx.fill(); -_assertPixel(canvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255"); -_assertPixel(canvas, 79,11, 0,255,0,255, "79,11", "0,255,0,255"); -_assertPixel(canvas, 21,39, 0,255,0,255, "21,39", "0,255,0,255"); -_assertPixel(canvas, 79,39, 0,255,0,255, "79,39", "0,255,0,255"); -_assertPixel(canvas, 39,19, 0,255,0,255, "39,19", "0,255,0,255"); -_assertPixel(canvas, 61,19, 0,255,0,255, "61,19", "0,255,0,255"); -_assertPixel(canvas, 39,31, 0,255,0,255, "39,31", "0,255,0,255"); -_assertPixel(canvas, 61,31, 0,255,0,255, "61,31", "0,255,0,255"); +_assertPixel(canvas, 21,11, 0,255,0,255); +_assertPixel(canvas, 79,11, 0,255,0,255); +_assertPixel(canvas, 21,39, 0,255,0,255); +_assertPixel(canvas, 79,39, 0,255,0,255); +_assertPixel(canvas, 39,19, 0,255,0,255); +_assertPixel(canvas, 61,19, 0,255,0,255); +_assertPixel(canvas, 39,31, 0,255,0,255); +_assertPixel(canvas, 61,31, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html index 22d061a3ee5..92753bc9e3e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.transform(1,0, 0,1, 0,0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js index d9d0c0e1b06..99ac58d49d3 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.transform(1,0, 0,1, 0,0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html index 6600f4ef547..f69fa4330af 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html @@ -26,7 +26,7 @@ ctx.transform(1,2, 3,4, 5,6); ctx.transform(-2,1, 3/2,-1/2, 1,-2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js index 5d335135dbc..1a0e702a05b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js @@ -22,7 +22,7 @@ ctx.transform(1,2, 3,4, 5,6); ctx.transform(-2,1, 3/2,-1/2, 1,-2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html index 970a0ad1737..6e679341d5d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html @@ -100,7 +100,7 @@ ctx.transform(0, 0, 0, Infinity, 0, Infinity); ctx.transform(0, 0, 0, 0, Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js index 631d98ee7ef..d596fc9744b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js @@ -96,7 +96,7 @@ ctx.transform(0, 0, 0, Infinity, 0, Infinity); ctx.transform(0, 0, 0, 0, Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html index cc0812958c7..78e1252c67c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html @@ -40,14 +40,14 @@ ctx.moveTo(pts[0][0], pts[0][1]); for (var i = 0; i < pts.length; ++i) ctx.lineTo(pts[i][0], pts[i][1]); ctx.fill(); -_assertPixel(canvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255"); -_assertPixel(canvas, 79,11, 0,255,0,255, "79,11", "0,255,0,255"); -_assertPixel(canvas, 21,39, 0,255,0,255, "21,39", "0,255,0,255"); -_assertPixel(canvas, 79,39, 0,255,0,255, "79,39", "0,255,0,255"); -_assertPixel(canvas, 39,19, 0,255,0,255, "39,19", "0,255,0,255"); -_assertPixel(canvas, 61,19, 0,255,0,255, "61,19", "0,255,0,255"); -_assertPixel(canvas, 39,31, 0,255,0,255, "39,31", "0,255,0,255"); -_assertPixel(canvas, 61,31, 0,255,0,255, "61,31", "0,255,0,255"); +_assertPixel(canvas, 21,11, 0,255,0,255); +_assertPixel(canvas, 79,11, 0,255,0,255); +_assertPixel(canvas, 21,39, 0,255,0,255); +_assertPixel(canvas, 79,39, 0,255,0,255); +_assertPixel(canvas, 39,19, 0,255,0,255); +_assertPixel(canvas, 61,19, 0,255,0,255); +_assertPixel(canvas, 39,31, 0,255,0,255); +_assertPixel(canvas, 61,31, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js index cf1481d98bb..46416bb9570 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js @@ -36,14 +36,14 @@ ctx.moveTo(pts[0][0], pts[0][1]); for (var i = 0; i < pts.length; ++i) ctx.lineTo(pts[i][0], pts[i][1]); ctx.fill(); -_assertPixel(canvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255"); -_assertPixel(canvas, 79,11, 0,255,0,255, "79,11", "0,255,0,255"); -_assertPixel(canvas, 21,39, 0,255,0,255, "21,39", "0,255,0,255"); -_assertPixel(canvas, 79,39, 0,255,0,255, "79,39", "0,255,0,255"); -_assertPixel(canvas, 39,19, 0,255,0,255, "39,19", "0,255,0,255"); -_assertPixel(canvas, 61,19, 0,255,0,255, "61,19", "0,255,0,255"); -_assertPixel(canvas, 39,31, 0,255,0,255, "39,31", "0,255,0,255"); -_assertPixel(canvas, 61,31, 0,255,0,255, "61,31", "0,255,0,255"); +_assertPixel(canvas, 21,11, 0,255,0,255); +_assertPixel(canvas, 79,11, 0,255,0,255); +_assertPixel(canvas, 21,39, 0,255,0,255); +_assertPixel(canvas, 79,39, 0,255,0,255); +_assertPixel(canvas, 39,19, 0,255,0,255); +_assertPixel(canvas, 61,19, 0,255,0,255); +_assertPixel(canvas, 39,31, 0,255,0,255); +_assertPixel(canvas, 61,31, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html index 9c595708512..8144ab0cc1b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html @@ -25,7 +25,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.translate(100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); +_assertPixel(canvas, 90,40, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js index 55926e46194..695aff37da5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js @@ -21,7 +21,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.translate(100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); -_assertPixel(canvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); +_assertPixel(canvas, 90,40, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html index 1f06fcce354..4127a7a157e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html @@ -32,7 +32,7 @@ ctx.translate(0.1, NaN); ctx.translate(Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js index bd8722c6ad6..84b52a203b6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js @@ -28,7 +28,7 @@ ctx.translate(0.1, NaN); ctx.translate(Infinity, Infinity); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/resources/canvas-tests.js b/tests/wpt/web-platform-tests/html/canvas/resources/canvas-tests.js index 0ca84440368..c6e28732838 100644 --- a/tests/wpt/web-platform-tests/html/canvas/resources/canvas-tests.js +++ b/tests/wpt/web-platform-tests/html/canvas/resources/canvas-tests.js @@ -32,7 +32,7 @@ function _getPixel(canvas, x,y) return [ imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3] ]; } -function _assertPixel(canvas, x,y, r,g,b,a, pos, colour) +function _assertPixel(canvas, x, y, r, g, b, a) { var c = _getPixel(canvas, x,y); assert_equals(c[0], r, 'Red channel of the pixel at (' + x + ', ' + y + ')'); @@ -41,7 +41,7 @@ function _assertPixel(canvas, x,y, r,g,b,a, pos, colour) assert_equals(c[3], a, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); } -function _assertPixelApprox(canvas, x,y, r,g,b,a, pos, colour, tolerance) +function _assertPixelApprox(canvas, x, y, r, g, b, a, tolerance) { var c = _getPixel(canvas, x,y); assert_approx_equals(c[0], r, tolerance, 'Red channel of the pixel at (' + x + ', ' + y + ')'); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py index 732f32f337e..1206aa91bfb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py +++ b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py @@ -15,8 +15,6 @@ # * Modify the tests*.yaml files. # 'name' is an arbitrary hierarchical name to help categorise tests. # 'desc' is a rough description of what behaviour the test aims to test. -# 'testing' is a list of references to spec.yaml, to show which spec sentences -# this test case is primarily testing. # 'code' is JavaScript code to execute, with some special commands starting with '@' # 'expected' is what the final canvas output should be: a string 'green' or 'clear' # (100x50 images in both cases), or a string 'size 100 50' (or any other size) @@ -53,9 +51,6 @@ except ImportError: def genTestUtils(TESTOUTPUTDIR, IMAGEOUTPUTDIR, TEMPLATEFILE, NAME2DIRFILE, ISOFFSCREENCANVAS): MISCOUTPUTDIR = './output' - SPECOUTPUTDIR = '../' - - SPECOUTPUTPATH = './' # relative to TESTOUTPUTDIR def simpleEscapeJS(str): return str.replace('\\', '\\\\').replace('"', '\\"') @@ -123,14 +118,6 @@ def genTestUtils(TESTOUTPUTDIR, IMAGEOUTPUTDIR, TEMPLATEFILE, NAME2DIRFILE, ISOF templates = yaml.safe_load(open(TEMPLATEFILE, "r").read()) name_mapping = yaml.safe_load(open(NAME2DIRFILE, "r").read()) - SPECFILE = 'spec.yaml' - spec_assertions = [] - for s in yaml.safe_load(open(SPECFILE, "r").read())['assertions']: - if 'meta' in s: - eval(compile(s['meta'], '', 'exec'), {}, {'assertions':spec_assertions}) - else: - spec_assertions.append(s) - tests = [] test_yaml_directory = "yaml/element" if ISOFFSCREENCANVAS: @@ -150,10 +137,6 @@ def genTestUtils(TESTOUTPUTDIR, IMAGEOUTPUTDIR, TEMPLATEFILE, NAME2DIRFILE, ISOF category_contents_direct = {} category_contents_all = {} - spec_ids = {} - for t in spec_assertions: spec_ids[t['id']] = True - spec_refs = {} - def backref_html(name): backrefs = [] c = '' @@ -200,15 +183,15 @@ def genTestUtils(TESTOUTPUTDIR, IMAGEOUTPUTDIR, TEMPLATEFILE, NAME2DIRFILE, ISOF code = re.sub(r'@nonfinite ([^(]+)\(([^)]+)\)(.*)', lambda m: expand_nonfinite(m.group(1), m.group(2), m.group(3)), code) # must come before '@assert throws' code = re.sub(r'@assert pixel (\d+,\d+) == (\d+,\d+,\d+,\d+);', - r'_assertPixel(canvas, \1, \2, "\1", "\2");', + r'_assertPixel(canvas, \1, \2);', code) code = re.sub(r'@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+);', - r'_assertPixelApprox(canvas, \1, \2, "\1", "\2", 2);', + r'_assertPixelApprox(canvas, \1, \2, 2);', code) code = re.sub(r'@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+) \+/- (\d+);', - r'_assertPixelApprox(canvas, \1, \2, "\1", "\2", \3);', + r'_assertPixelApprox(canvas, \1, \2, \3);', code) code = re.sub(r'@assert throws (\S+_ERR) (.*);', @@ -275,14 +258,6 @@ def genTestUtils(TESTOUTPUTDIR, IMAGEOUTPUTDIR, TEMPLATEFILE, NAME2DIRFILE, ISOF category_contents_all.setdefault(cat_total, []).append(name) category_contents_direct.setdefault(cat_total, []).append(name) - for ref in test.get('testing', []): - if ref not in spec_ids: - print("Test %s uses nonexistent spec point %s" % (name, ref)) - spec_refs.setdefault(ref, []).append(name) - - if not test.get('testing', []): - print("Test %s doesn't refer to any spec points" % name) - if test.get('expected', '') == 'green' and re.search(r'@assert pixel .* 0,0,0,0;', test['code']): print("Probable incorrect pixel test in %s" % name) @@ -322,8 +297,6 @@ def genTestUtils(TESTOUTPUTDIR, IMAGEOUTPUTDIR, TEMPLATEFILE, NAME2DIRFILE, ISOF name_wrapped = name.replace('.', '.​') - refs = ''.join('
                                                                    • %s\n' % (SPECOUTPUTPATH, n,n) for n in test.get('testing', [])) - notes = '

                                                                      %s' % test['notes'] if 'notes' in test else '' timeout = '\n' % test['timeout'] if 'timeout' in test else '' @@ -382,7 +355,7 @@ def genTestUtils(TESTOUTPUTDIR, IMAGEOUTPUTDIR, TEMPLATEFILE, NAME2DIRFILE, ISOF 'name_wrapped':name_wrapped, 'backrefs':backref_html(name), 'mapped_name':mapped_name, 'desc':desc, 'escaped_desc':escaped_desc, - 'prev':prev, 'next':next, 'refs':refs, 'notes':notes, 'images':images, + 'prev':prev, 'next':next, 'notes':notes, 'images':images, 'fonts':fonts, 'fonthack':fonthack, 'timeout': timeout, 'canvas':canvas, 'expected':expectation_html, 'code':code, 'scripts':scripts + extra_script, diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py index 747798e4abb..c6fba8453d0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py +++ b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py @@ -15,8 +15,6 @@ # * Modify the tests*.yaml files. # 'name' is an arbitrary hierarchical name to help categorise tests. # 'desc' is a rough description of what behaviour the test aims to test. -# 'testing' is a list of references to spec.yaml, to show which spec sentences -# this test case is primarily testing. # 'code' is JavaScript code to execute, with some special commands starting with '@' # 'expected' is what the final canvas output should be: a string 'green' or 'clear' # (100x50 images in both cases), or a string 'size 100 50' (or any other size) @@ -56,8 +54,6 @@ def genTestUtils_union(TEMPLATEFILE, NAME2DIRFILE): OFFSCREENCANVASOUTPUTDIR = '../offscreen' OFFSCREENCANVASIMAGEOUTPUTDIR = '../offscreen' MISCOUTPUTDIR = './output' - SPECOUTPUTDIR = '../' - SPECOUTPUTPATH = './' # relative to CANVASOUTPUTDIR def simpleEscapeJS(str): return str.replace('\\', '\\\\').replace('"', '\\"') @@ -125,14 +121,6 @@ def genTestUtils_union(TEMPLATEFILE, NAME2DIRFILE): templates = yaml.safe_load(open(TEMPLATEFILE, "r").read()) name_mapping = yaml.safe_load(open(NAME2DIRFILE, "r").read()) - SPECFILE = 'spec.yaml' - spec_assertions = [] - for s in yaml.safe_load(open(SPECFILE, "r").read())['assertions']: - if 'meta' in s: - eval(compile(s['meta'], '', 'exec'), {}, {'assertions':spec_assertions}) - else: - spec_assertions.append(s) - tests = [] test_yaml_directory = "yaml-new" TESTSFILES = [ @@ -150,10 +138,6 @@ def genTestUtils_union(TEMPLATEFILE, NAME2DIRFILE): category_contents_direct = {} category_contents_all = {} - spec_ids = {} - for t in spec_assertions: spec_ids[t['id']] = True - spec_refs = {} - def backref_html(name): backrefs = [] c = '' @@ -190,15 +174,15 @@ def genTestUtils_union(TEMPLATEFILE, NAME2DIRFILE): code = re.sub(r'@nonfinite ([^(]+)\(([^)]+)\)(.*)', lambda m: expand_nonfinite(m.group(1), m.group(2), m.group(3)), code) # must come before '@assert throws' code = re.sub(r'@assert pixel (\d+,\d+) == (\d+,\d+,\d+,\d+);', - r'_assertPixel(canvas, \1, \2, "\1", "\2");', + r'_assertPixel(canvas, \1, \2);', code) code = re.sub(r'@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+);', - r'_assertPixelApprox(canvas, \1, \2, "\1", "\2", 2);', + r'_assertPixelApprox(canvas, \1, \2, 2);', code) code = re.sub(r'@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+) \+/- (\d+);', - r'_assertPixelApprox(canvas, \1, \2, "\1", "\2", \3);', + r'_assertPixelApprox(canvas, \1, \2, \3);', code) code = re.sub(r'@assert throws (\S+_ERR) (.*);', @@ -272,14 +256,6 @@ def genTestUtils_union(TEMPLATEFILE, NAME2DIRFILE): category_contents_all.setdefault(cat_total, []).append(name) category_contents_direct.setdefault(cat_total, []).append(name) - for ref in test.get('testing', []): - if ref not in spec_ids: - print("Test %s uses nonexistent spec point %s" % (name, ref)) - spec_refs.setdefault(ref, []).append(name) - - if not test.get('testing', []): - print("Test %s doesn't refer to any spec points" % name) - if test.get('expected', '') == 'green' and re.search(r'@assert pixel .* 0,0,0,0;', test['code']): print("Probable incorrect pixel test in %s" % name) @@ -323,8 +299,6 @@ def genTestUtils_union(TEMPLATEFILE, NAME2DIRFILE): name_wrapped = name.replace('.', '.​') - refs = ''.join('

                                                                    • %s\n' % (SPECOUTPUTPATH, n,n) for n in test.get('testing', [])) - notes = '

                                                                      %s' % test['notes'] if 'notes' in test else '' timeout = '\n' % test['timeout'] if 'timeout' in test else '' @@ -383,7 +357,7 @@ def genTestUtils_union(TEMPLATEFILE, NAME2DIRFILE): 'name_wrapped':name_wrapped, 'backrefs':backref_html(name), 'mapped_name':mapped_name, 'desc':desc, 'escaped_desc':escaped_desc, - 'prev':prev, 'next':next, 'refs':refs, 'notes':notes, 'images':images, + 'prev':prev, 'next':next, 'notes':notes, 'images':images, 'fonts':fonts, 'fonthack':fonthack, 'timeout': timeout, 'canvas':canvas, 'expected':expectation_html, 'code':code_canvas, 'scripts':scripts + extra_script, @@ -396,13 +370,18 @@ def genTestUtils_union(TEMPLATEFILE, NAME2DIRFILE): f = codecs.open('%s/%s%s.html' % (CANVASOUTPUTDIR, mapped_name, name_variant), 'w', 'utf-8') f.write(templates['w3ccanvas'] % template_params) if OffscreenCanvas_test: - f = codecs.open('%s/%s%s.html' % (OFFSCREENCANVASOUTPUTDIR, mapped_name, name_variant), 'w', 'utf-8') - f.write(templates['w3coffscreencanvas'] % template_params) - - # Create test case for offscreencanvas worker. - timeout = '// META: timeout=%s\n' % test['timeout'] if 'timeout' in test else '' - template_params['timeout'] = timeout - f = codecs.open('%s/%s%s.worker.js' % (OFFSCREENCANVASOUTPUTDIR, mapped_name, name_variant), 'w', 'utf-8') - f.write(templates['w3cworker'] % template_params) - + f_html = codecs.open('%s/%s%s.html' % (OFFSCREENCANVASOUTPUTDIR, mapped_name, name_variant), 'w', 'utf-8') + f_worker = codecs.open('%s/%s%s.worker.js' % (OFFSCREENCANVASOUTPUTDIR, mapped_name, name_variant), 'w', 'utf-8') + if ("then(t_pass, t_fail);" in code_canvas): + temp_offscreen = templates['w3coffscreencanvas'].replace("t.done();\n", "") + temp_worker = templates['w3cworker'].replace("t.done();\n", "") + f_html.write(temp_offscreen % template_params) + timeout = '// META: timeout=%s\n' % test['timeout'] if 'timeout' in test else '' + template_params['timeout'] = timeout + f_worker.write(temp_worker % template_params) + else: + f_html.write(templates['w3coffscreencanvas'] % template_params) + timeout = '// META: timeout=%s\n' % test['timeout'] if 'timeout' in test else '' + template_params['timeout'] = timeout + f_worker.write(templates['w3cworker'] % template_params) print() diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/spec.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/spec.yaml deleted file mode 100644 index d8397ee94b1..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/tools/spec.yaml +++ /dev/null @@ -1,718 +0,0 @@ -# Extracts from https://html.spec.whatwg.org/ -# -# Parts of this specification are © Copyright 2004-2014 Apple Inc., Mozilla Foundation, and Opera Software ASA. -# You are granted a license to use, reproduce and create derivative works of this document. - -assertions: - - id: canvas.type - text: "interface HTMLCanvasElement : HTMLElement {" - - id: size.width - text: "interface HTMLCanvasElement<...>attribute unsigned long width;" - - id: size.height - text: "interface HTMLCanvasElement<...>attribute unsigned long height;" - - id: canvas.getContext - text: "interface HTMLCanvasElement<...>object\\? getContext(in DOMString contextId, in any... args);" - - id: fallback - text: "The contents of the canvas element, if any, are the element's fallback content." - - id: size.nonnegativeinteger - text: "The rules for parsing non-negative integers *must* be used to obtain their numeric values." - - id: size.missing - text: "If an attribute is missing, <...> then the default value *must* be used instead." - - id: size.error - text: "if parsing its value returns an error, then the default value *must* be used instead." - - id: size.default - text: "The width attribute defaults to 300, and the height attribute defaults to 150." - - id: size.css - text: "the element can be sized arbitrarily by a style sheet. During rendering, the image is scaled to fit this layout size." - - id: initial.reset - text: "When the canvas element is created, and subsequently whenever the width and height attributes are set (whether to a new value or to the previous value), the bitmap and any associated contexts *must* be cleared back to their initial state <...>." - - id: initial.colour - text: "When the canvas is initialized, its bitmap *must* be cleared to transparent black." - - id: size.reflect - text: "The width and height IDL attributes *must* reflect the respective content attributes of the same name," - - - id: context.unrecognised - text: "If contextId is not the name of a context supported by the user agent, return null and abort these steps." - - id: context.unique - text: "If the getContext() method has already been invoked on this element for the same contextId, return the same object as was returned that time, and abort these steps." - - id: context.2d - text: "When the getContext() method of a canvas element is to return a new object for the contextId 2d, the user agent *must* return a new CanvasRenderingContext2D object." - - id: context.2d.extraargs - text: "If options is not an object, then set options to null." - - - id: toDataURL.noarguments - text: "When a user agent is to create a serialization of the image as a file, <...> if there are no arguments, in the PNG format." - - id: toDataURL.zerosize - text: "If the canvas has no pixels (i.e. either its horizontal dimension or its vertical dimension is zero) then return the string \"data:,\" and abort these steps." - - id: toDataURL.witharguments - text: "If arguments is not empty, the first value must be interpreted as a MIME type giving the format to use." - - id: toDataURL.noalpha - text: "For image types that do not support an alpha channel, the serialized image *must* be the canvas image composited onto a solid black background using the source-over operator." - - id: toDataURL.png - text: "User agents *must* support PNG (\"image/png\")." - - id: toDataURL.unrecognised - text: "If the user agent does not support the requested type, it *must* create the file using the PNG format." - - id: toDataURL.lowercase - text: "User agents *must* convert the provided type to ASCII lowercase before establishing if they support that type." - - id: toDataURL.jpeg - text: "image/jpeg" - - id: toDataURL.jpeg.quality - text: "The second argument, if it is a number in the range 0.0 to 1.0 inclusive, *must* be treated as the desired quality level." - - id: toDataURL.jpeg.nan - text: "If it is not a number <...>, the user agent *must* use its default value, as if the argument had been omitted." - - id: toDataURL.jpeg.range - text: "If it is <...> outside that range, the user agent *must* use its default value, as if the argument had been omitted." - - id: toDataURL.arguments - text: "Other arguments *must* be ignored and must not cause the user agent to raise an exception." - - - id: 2d.coordinatespace - text: "flat Cartesian surface whose origin (0,0) is at the top left corner, with the coordinate space having x values increasing when going right, and y values increasing when going down." - - id: context.2d.type - text: "interface CanvasRenderingContext2D {" - - id: 2d.canvasGradient.type - text: "interface CanvasGradient {" - - id: 2d.imageData.type - text: "interface ImageData {" - - id: 2d.canvas.attribute - text: "readonly attribute HTMLCanvasElement canvas;" - - id: 2d.canvas - text: "The canvas attribute *must* return the canvas element that the context paints on." - - id: 2d.nonfinite - text: "Except where otherwise specified, for the 2D context interface, any method call with a numeric argument whose value is infinite or a NaN value *must* be ignored." - - - id: 2d.currentColor.onset - text: "Whenever the CSS value currentColor is used as a color in this API, the \"computed value of the 'color' property\" for the purposes of determining the computed value of the currentColor keyword is the computed value of the 'color' property on the element in question at the time that the color is specified" - - id: 2d.currentColor.outofdoc - text: "If the computed value of the 'color' property is undefined for a particular case (e.g. because the element is not in a Document), then the \"computed value of the 'color' property\" for the purposes of determining the computed value of the currentColor keyword is fully opaque black." - - id: 2d.currentColor.gradient - text: "In the case of addColorStop() on CanvasGradient, the \"computed value of the 'color' property\" for the purposes of determining the computed value of the currentColor keyword is always fully opaque black (there is no associated element)." - - - id: 2d.state.transformation - text: "The current transformation matrix." - - id: 2d.state.clip - text: "The current clipping region." - - meta: | - for s in [ - 'strokeStyle', 'fillStyle', 'globalAlpha', - 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit', - 'shadowOffsetX', 'shadowOffsetY', 'shadowBlur', 'shadowColor', - 'globalCompositeOperation', - 'font', 'textAlign', 'textBaseline' - ]: - assertions.append( { - 'id': '2d.state.%s' % s, - 'text': 'The current values of the following attributes:<...>%s' % s - } ) - - id: 2d.state.path - text: "The current path <...> are not part of the drawing state." - - id: 2d.state.bitmap - text: "The <...> current bitmap are not part of the drawing state." - - - id: 2d.state.save - text: "The save() method *must* push a copy of the current drawing state onto the drawing state stack." - - id: 2d.state.restore - text: "The restore() method *must* pop the top entry in the drawing state stack, and reset the drawing state it describes." - - id: 2d.state.restore.underflow - text: "If there is no saved state, the method *must* do nothing." - - - id: 2d.transformation.initial - text: "When the context is created, the transformation matrix *must* initially be the identity transform." - - id: 2d.transformation.order - text: "The transformations *must* be performed in reverse order." - - id: 2d.transformation.scale - text: "The scale(x, y) method *must* add the scaling transformation described by the arguments to the transformation matrix." - - id: 2d.transformation.scale.multiple - text: "The factors are multiples." - - id: 2d.transformation.rotate - text: "The rotate(angle) method *must* add the rotation transformation described by the argument to the transformation matrix." - - id: 2d.transformation.rotate.direction - text: "The angle argument represents a clockwise rotation angle" - - id: 2d.transformation.rotate.radians - text: "The angle argument <...> expressed in radians." - - id: 2d.transformation.translate - text: "The translate(x, y) method *must* add the translation transformation described by the arguments to the transformation matrix." - - id: 2d.transformation.transform - text: "The transform(a, b, c, d, e, f) method *must* replace the current transformation matrix with the result of multiplying the current transformation matrix with the matrix described by:" - - id: 2d.transformation.transform.multiply - text: "The transform(a, b, c, d, e, f) method *must* replace the current transformation matrix with the result of multiplying the current transformation matrix with the matrix described by:" - - id: 2d.transformation.setTransform - text: "The setTransform(a, b, c, d, e, f) method *must* <...> invoke the transform(a, b, c, d, e, f) method with the same arguments" - - id: 2d.transformation.setTransform.identity - text: "The setTransform(a, b, c, d, e, f) method *must* reset the current transform to the identity matrix, " - - - - id: 2d.composite.operation - text: "All drawing operations are affected by the global compositing attributes, globalAlpha and globalCompositeOperation." - - - id: 2d.composite.globalAlpha.shape - text: "The globalAlpha attribute gives an alpha value that is applied to shapes and images before they are composited onto the canvas." - - id: 2d.composite.globalAlpha.image - text: "The globalAlpha attribute gives an alpha value that is applied to shapes and images before they are composited onto the canvas." - - id: 2d.composite.globalAlpha.range - text: "The value must be in the range from 0.0 (fully transparent) to 1.0 (no additional transparency). If an attempt is made to set the attribute to a value outside this range, including Infinity and Not-a-Number (NaN) values, the attribute *must* retain its previous value." - - id: 2d.composite.globalAlpha.default - text: "When the context is created, the globalAlpha attribute *must* initially have the value 1.0." - - - id: 2d.composite.operation.shape - text: "The globalCompositeOperation attribute sets how shapes and images are drawn onto the existing bitmap," - - id: 2d.composite.operation.image - text: "The globalCompositeOperation attribute sets how shapes and images are drawn onto the existing bitmap," - - - id: 2d.composite.source-atop - text: "source-atop" - - id: 2d.composite.source-in - text: "source-in" - - id: 2d.composite.source-out - text: "source-out" - - id: 2d.composite.source-over - text: "source-over (default)" - - id: 2d.composite.destination-atop - text: "destination-atop" - - id: 2d.composite.destination-in - text: "destination-in" - - id: 2d.composite.destination-out - text: "destination-out" - - id: 2d.composite.destination-over - text: "destination-over" - - id: 2d.composite.lighter - text: "lighter" - - id: 2d.composite.copy - text: "copy" - - id: 2d.composite.xor - text: "xor" - - id: 2d.composite.clear - text: "clear" - - - id: 2d.composite.operation.casesensitive - text: "These values are all case-sensitive <...> they *must* be used exactly as shown." - - id: 2d.composite.operation.exact - text: "User agents *must* not recognize values that are not a case-sensitive match for one of the values given above." - - id: 2d.composite.operation.porterduff - text: "The operators in the above list *must* be treated as described by the Porter-Duff operator given at the start of their description (e.g. A over B)." - - id: 2d.composite.operation.unrecognised - text: "On setting, if the user agent does not recognize the specified value, it *must* be ignored, leaving the value of globalCompositeOperation unaffected." - - id: 2d.composite.operation.default - text: "When the context is created, the globalCompositeOperation attribute *must* initially have the value source-over." - - - - id: 2d.colours.parse - text: "On setting, strings *must* be parsed as CSS values and the color assigned," - - id: 2d.gradient.assign - text: "On setting, <...> CanvasGradient and CanvasPattern objects *must* be assigned themselves." - - id: 2d.pattern.assign - text: "On setting, <...> CanvasGradient and CanvasPattern objects *must* be assigned themselves." - - id: 2d.colours.invalidstring - text: "If the value is a string but cannot be parsed as a CSS value, <...> then it *must* be ignored, and the attribute must retain its previous value." - - id: 2d.colours.invalidtype - text: "If the value is <...> neither a string, a CanvasGradient, nor a CanvasPattern, then it *must* be ignored, and the attribute must retain its previous value." - - id: 2d.colours.getcolour - text: "On getting, if the value is a color, then the serialization of the color *must* be returned." - - id: 2d.gradient.object - text: "if it is not a color but a CanvasGradient or CanvasPattern, then the respective object *must* be returned." - - id: 2d.pattern.object - text: "if it is not a color but a CanvasGradient or CanvasPattern, then the respective object *must* be returned." - - id: 2d.serializecolour.solid - text: "if it has alpha equal to 1.0, then the string is a lowercase six-digit hex value" - - id: 2d.serializecolour.transparent - text: "Otherwise, the color value has alpha less than 1.0, and the string is the color value in the CSS rgba() functional-notation format:" - - id: 2d.colours.default - text: "When the context is created, the strokeStyle and fillStyle attributes *must* initially have the string value #000000." - - - id: 2d.gradient.interpolate.linear - text: "Between each such stop, the colors and the alpha component *must* be linearly interpolated over the RGBA space without premultiplying the alpha value to find the color to use at that offset." - - id: 2d.gradient.interpolate.alpha - text: "Between each such stop, the colors and the alpha component *must* be linearly interpolated over the RGBA space without premultiplying the alpha value to find the color to use at that offset." - - id: 2d.gradient.outside.first - text: "Before the first stop, the color *must* be the color of the first stop." - - id: 2d.gradient.outside.last - text: "After the last stop, the color *must* be the color of the last stop." - - id: 2d.gradient.empty - text: "When there are no stops, the gradient is transparent black." - - - - id: 2d.gradient.invalidoffset - text: "If the offset is less than 0, greater than 1, infinite, or NaN, then an INDEX_SIZE_ERR exception *must* be raised." - - id: 2d.gradient.invalidcolour - text: "If the color cannot be parsed as a CSS value, then a SYNTAX_ERR exception *must* be raised." - - id: 2d.gradient.update - text: "Otherwise, the gradient *must* have a new stop placed, at offset offset relative to the whole gradient, and with the color obtained by parsing color as a CSS value." - - id: 2d.gradient.interpolate.overlap - text: "If multiple stops are added at the same offset on a gradient, they *must* be placed in the order added, with the first one closest to the start of the gradient, <...>." - - - id: 2d.gradient.linear.nonfinite - text: "If any of the arguments to createLinearGradient() are infinite or NaN, the method *must* raise a NOT_SUPPORTED_ERR exception." - - id: 2d.gradient.linear.return - text: "Otherwise, the method *must* return a linear CanvasGradient initialized with the specified line." - - id: 2d.gradient.linear.rendering - text: "Linear gradients *must* be rendered such that all points on a line perpendicular to the line that crosses the start and end points have the color at the point where those two lines cross (with the colors coming from the interpolation and extrapolation described above)." - - id: 2d.gradient.linear.transform - text: "The points in the linear gradient *must* be transformed as described by the current transformation matrix when rendering." - - id: 2d.gradient.linear.zerosize - text: "If x0 = x1 and y0 = y1, then the linear gradient *must* paint nothing." - - - id: 2d.gradient.radial.nonfinite - text: "If any of the arguments are infinite or NaN, a NOT_SUPPORTED_ERR exception *must* be raised." - - id: 2d.gradient.radial.negative - text: "If either of r0 or r1 are negative, an INDEX_SIZE_ERR exception *must* be raised." - - id: 2d.gradient.radial.return - text: "Otherwise, the method *must* return a radial CanvasGradient initialized with the two specified circles." - - id: 2d.gradient.radial.rendering - text: "Radial gradients *must* be rendered by following these steps:" - - id: 2d.gradient.radial.equal - text: "If x0 = x1 and y0 = y1 and r0 = r1, then the radial gradient *must* paint nothing." - - id: 2d.gradient.extent - text: "Gradients *must* be painted only where the relevant stroking or filling effects requires that they be drawn." - - id: 2d.gradient.radial.transform - text: "The points in the radial gradient *must* be transformed as described by the current transformation matrix when rendering." - - - - id: 2d.pattern.modify - text: "Modifying this image after calling the createPattern() method *must* not affect the pattern." - - id: 2d.pattern.transform - text: "The setTransform(transform) method, when invoked, must run these steps:" - - id: 2d.pattern.missing - text: "If the empty string is specified, repeat *must* be assumed." - - id: 2d.pattern.unrecognised - text: "If an unrecognized value is given, then the user agent *must* raise a SYNTAX_ERR exception." - - id: 2d.pattern.exact - text: "User agents *must* recognize the four values described above exactly (e.g. they must not do case folding)." - - id: 2d.pattern.return - text: "the method *must* return a CanvasPattern object suitably initialized." - - id: 2d.pattern.IDL - text: "CanvasPattern createPattern(in HTMLImageElement image, in DOMString repetition);<...>CanvasPattern createPattern(in HTMLCanvasElement image, in DOMString repetition);<...>CanvasPattern createPattern(in HTMLVideoElement image, in DOMString repetition);" - - id: 2d.pattern.incomplete.image - text: "If the image argument is an HTMLImageElement object that is not fully decodable<...> then the implementation *must* return null." - - id: 2d.pattern.incomplete.video - text: "If the image argument is <...> an HTMLVideoElement object whose readyState attribute is either HAVE_NOTHING or HAVE_METADATA, then the implementation *must* return null." - - id: 2d.pattern.zerocanvas - text: "If the image argument is an HTMLCanvasElement object with either a horizontal dimension or a vertical dimension equal to zero, then the implementation *must* raise an INVALID_STATE_ERR exception." - - id: 2d.pattern.painting - text: "Patterns *must* be painted so that the top left of the first image is anchored at the origin of the coordinate space, and images are then repeated horizontally to the left and right (if the repeat-x string was specified) or vertically up and down (if the repeat-y string was specified) or in all four directions all over the canvas (if the repeat string was specified)." - - id: 2d.pattern.unscaled - text: "The images are not scaled by this process; one CSS pixel of the image *must* be painted on one coordinate space unit." - - id: 2d.pattern.extent - text: "patterns *must* actually be painted only where the stroking or filling effect requires that they be drawn, and are affected by the current transformation matrix." - - id: 2d.pattern.animated.image - text: "When the createPattern() method is passed an animated image as its image argument, the user agent must use the poster frame of the animation, or, if there is no poster frame, the first frame of the animation." - - id: 2d.pattern.animated.video - text: "When the image argument is an HTMLVideoElement, then the frame at the current playback position *must* be used as the source image," - - id: 2d.pattern.video.size - text: "When the image argument is an HTMLVideoElement, <...> the source image's dimensions *must* be the intrinsic width and intrinsic height of the media resource (i.e. after any aspect-ratio correction has been applied)." - - - - id: 2d.lineWidth - text: "The lineWidth attribute gives the width of lines, in coordinate space units." - - id: 2d.lineWidth.get - text: "The lineWidth attribute <...>. On getting, it *must* return the current value." - - id: 2d.lineWidth.invalid - text: "The lineWidth attribute <...>. On setting, zero, negative, infinite, and NaN values *must* be ignored, leaving the value unchanged;" - - id: 2d.lineWidth.set - text: "The lineWidth attribute <...>. On setting, <...> other values *must* change the current value to the new value." - - id: 2d.lineWidth.default - text: "the lineWidth attribute *must* initially have the value 1.0." - - id: 2d.lineCap.end - text: "The lineCap attribute defines the type of endings that UAs will place on the end of lines." - - id: 2d.lineCap.butt - text: "The butt value means that the end of each line has a flat edge perpendicular to the direction of the line (and that no additional line cap is added)." - - id: 2d.lineCap.round - text: "The round value means that a semi-circle with the diameter equal to the width of the line *must* then be added on to the end of the line." - - id: 2d.lineCap.square - text: "The square value means that a rectangle with the length of the line width and the width of half the line width, placed flat against the edge perpendicular to the direction of the line, *must* be added at the end of each line." - - id: 2d.lineCap.get - text: "On getting, it *must* return the current value." - - id: 2d.lineCap.set - text: "On setting, if the new value is one of the literal strings butt, round, and square, then the current value *must* be changed to the new value;" - - id: 2d.lineCap.invalid - text: "On setting, if the new value is one of the literal strings butt, round, and square, then <...>; other values *must* ignored, leaving the value unchanged." - - id: 2d.lineCap.default - text: "When the context is created, the lineCap attribute *must* initially have the value butt." - - id: 2d.lineJoin.get - text: "On getting, it *must* return the current value." - - id: 2d.lineJoin.set - text: "On setting, if the new value is one of the literal strings bevel, round, and miter, then the current value *must* be changed to the new value;" - - id: 2d.lineJoin.invalid - text: "On setting, if the new value is one of the literal strings bevel, round, and miter, then <...>; other values *must* be ignored, leaving the value unchanged." - - id: 2d.lineJoin.default - text: "When the context is created, the lineJoin attribute *must* initially have the value miter." - - id: 2d.lineJoin.joins - text: "A join exists at any point in a subpath shared by two consecutive lines." - - id: 2d.lineJoin.joinclosed - text: "When a subpath is closed, then a join also exists at its first point (equivalent to its last point) connecting the first and last lines in the subpath." - - id: 2d.lineJoin.common - text: "A filled triangle connecting these two opposite corners with a straight line, with the third point of the triangle being the join point, *must* be rendered at all joins." - - id: 2d.lineJoin.round - text: "The round value means that a filled arc connecting the two aforementioned corners of the join, abutting (and not overlapping) the aforementioned triangle, with the diameter equal to the line width and the origin at the point of the join, *must* be rendered at joins." - - id: 2d.lineJoin.bevel - text: "The bevel value means that this is all that is rendered at joins." - - id: 2d.lineJoin.miter - text: "The miter value means that a second filled triangle *must* (if it can given the miter length) be rendered at the join, with one line being the line between the two aforementioned corners, abutting the first triangle, and the other two being continuations of the outside edges of the two joining lines, as long as required to intersect without going over the miter length." - - id: 2d.lineJoin.miterLimit - text: "If the miter length would cause the miter limit ratio to be exceeded, this second triangle *must* not be rendered." - - id: 2d.miterLimit.get - text: "The miter limit <...>. On getting, it *must* return the current value." - - id: 2d.miterLimit.invalid - text: "The miter limit <...>. On setting, zero, negative, infinite, and NaN values *must* be ignored, leaving the value unchanged;" - - id: 2d.miterLimit.set - text: "The miter limit <...>. On setting, <...>; other values *must* change the current value to the new value." - - id: 2d.miterLimit.default - text: "When the context is created, the miterLimit attribute *must* initially have the value 10.0." - - - - id: 2d.shadow.color.initial - text: "When the context is created, the shadowColor attribute initially *must* be fully-transparent black." - - id: 2d.shadow.color.get - text: "On getting, the serialization of the color *must* be returned." - - id: 2d.shadow.color.set - text: "On setting, the new value *must* be parsed as a CSS value and the color assigned." - - id: 2d.shadow.color.invalid - text: "If the value cannot be parsed as a CSS value then it *must* be ignored, and the attribute must retain its previous value." - - id: 2d.shadow.offset.initial - text: "When the context is created, the shadow offset attributes *must* initially have the value 0." - - id: 2d.shadow.offset.get - text: "On getting, they *must* return their current value." - - id: 2d.shadow.offset.set - text: "On setting, the attribute being set *must* be set to the new value," - - id: 2d.shadow.offset.invalid - text: "On setting, <...> if the value is infinite or NaN, in which case the new value *must* be ignored." - - id: 2d.shadow.blur.initial - text: "When the context is created, the shadowBlur attribute *must* initially have the value 0." - - id: 2d.shadow.blur.get - text: "On getting, the attribute *must* return its current value." - - id: 2d.shadow.blur.set - text: "On setting the attribute *must* be set to the new value," - - id: 2d.shadow.blur.invalid - text: "On setting <...> if the value is negative, infinite or NaN, in which case the new value *must* be ignored." - - id: 2d.shadow.enable - text: "Shadows are only drawn if the opacity component of the alpha component of the color of shadowColor is non-zero and either the shadowBlur is non-zero, or the shadowOffsetX is non-zero, or the shadowOffsetY is non-zero." - - id: 2d.shadow.render - text: "When shadows are drawn, they *must* be rendered as follows:" - - - id: 2d.rect.transform - text: "The current transformation matrix *must* be applied to the following four coordinates," - - id: 2d.rect.closed - text: "the following four coordinates, which form the path that *must* then be closed to get the specified rectangle:" - - id: 2d.clearRect - text: "The clearRect(x, y, w, h) method *must* clear the pixels in the specified rectangle that also intersect the current clipping region to a fully transparent black, erasing any previous image." - - id: 2d.fillRect - text: "The fillRect(x, y, w, h) method *must* paint the specified rectangular area using the fillStyle." - - id: 2d.strokeRect - text: "The strokeRect(x, y, w, h) method *must* stroke the specified rectangle's path using the strokeStyle, lineWidth, lineJoin, and (if appropriate) miterLimit attributes." - - - - id: 2d.path.initial - text: "Initially, the context's path *must* have zero subpaths." - - id: 2d.path.transformation - text: "The points and lines added to the path by these methods *must* be transformed according to the current transformation matrix as they are added." - - id: 2d.path.beginPath - text: "The beginPath() method *must* empty the list of subpaths so that the context once again has zero subpaths." - - id: 2d.path.moveTo - text: "The moveTo(x, y) method *must* create a new subpath with the specified point as its first (and only) point." - - id: 2d.path.ensure - text: "When the user agent is to ensure there is a subpath for a coordinate (x, y), the user agent must check to see if the context has any subpaths, and if it does not, then the user agent *must* create a new subpath with the point (x, y) as its first (and only) point, as if the moveTo() method had been called." - - id: 2d.path.closePath.empty - text: "The closePath() method *must* do nothing if the context has no subpaths." - - id: 2d.path.closePath.nonempty - text: "The closePath() method <...> *must* mark the last subpath as closed, create a new subpath whose first point is the same as the previous subpath's first point, and finally add this new subpath to the path." - - id: 2d.path.lineTo.empty - text: "The lineTo(x, y) method *must* ensure there is a subpath for (x, y) if the context has no subpaths." - - id: 2d.path.lineTo.nonempty - text: "The lineTo(x, y) method <...> *must* connect the last point in the subpath to the given point (x, y) using a straight line, and must then add the given point (x, y) to the subpath." - - id: 2d.path.quadratic.empty - text: "The quadraticCurveTo(cpx, cpy, x, y) method *must* ensure there is a subpath for (cpx, cpy)," - - id: 2d.path.quadratic.nonempty - text: "The quadraticCurveTo(cpx, cpy, x, y) method <...> *must* connect the last point in the subpath to the given point (x, y) using a quadratic B<...>zier curve with control point (cpx, cpy), and must then add the given point (x, y) to the subpath." - - id: 2d.path.bezier.empty - text: "The bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) method *must* ensure there is a subpath for (cp1x, cp1y)," - - id: 2d.path.bezier.nonempty - text: "The bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) method <...> *must* connect the last point in the subpath to the given point (x, y) using a cubic B<...>zier curve with control points (cp1x, cp1y) and (cp2x, cp2y). Then, it must add the point (x, y) to the subpath." - - id: 2d.path.arcTo.empty - text: "The arcTo(x1, y1, x2, y2, radius) method *must* first ensure there is a subpath for (x1, y1)." - - id: 2d.path.arcTo.negative - text: "Negative values for radius *must* cause the implementation to raise an INDEX_SIZE_ERR exception." - - id: 2d.path.arcTo.coincide.01 - text: "If the point (x0, y0) is equal to the point (x1, y1), or if the point (x1, y1) is equal to the point (x2, y2), or if the radius radius is zero, then the method *must* add the point (x1, y1) to the subpath, and connect that point to the previous point (x0, y0) by a straight line." - - id: 2d.path.arcTo.coincide.12 - text: "If the point (x0, y0) is equal to the point (x1, y1), or if the point (x1, y1) is equal to the point (x2, y2), or if the radius radius is zero, then the method *must* add the point (x1, y1) to the subpath, and connect that point to the previous point (x0, y0) by a straight line." - - id: 2d.path.arcTo.zeroradius - text: "If the point (x0, y0) is equal to the point (x1, y1), or if the point (x1, y1) is equal to the point (x2, y2), or if the radius radius is zero, then the method *must* add the point (x1, y1) to the subpath, and connect that point to the previous point (x0, y0) by a straight line." - - id: 2d.path.arcTo.collinear - text: "if the points (x0, y0), (x1, y1), and (x2, y2) all lie on a single straight line, then the method *must* add the point (x1, y1) to the subpath, and connect that point to the previous point (x0, y0) by a straight line." - - id: 2d.path.arcTo.shape - text: "The method *must* connect the point (x0, y0) to the start tangent point by a straight line, adding the start tangent point to the subpath, and then must connect the start tangent point to the end tangent point by The Arc, adding the end tangent point to the subpath." - - - id: 2d.path.arc.nonempty - text: "If the context has any subpaths, then the method *must* add a straight line from the last point in the subpath to the start point of the arc." - - id: 2d.path.arc.draw - text: "it *must* draw the arc between the start point of the arc and the end point of the arc, and add the start and end points of the arc to the subpath." - - id: 2d.path.arc.zero - text: "If the two points are the same, or if the radius is zero, then the arc is defined as being of zero length in both directions." - - id: 2d.path.arc.negative - text: "Negative values for radius *must* cause the implementation to raise an INDEX_SIZE_ERR exception." - - - id: 2d.path.rect.subpath - text: "The rect(x, y, w, h) method *must* create a new subpath containing just the four points (x, y), (x+w, y), (x+w, y+h), (x, y+h), with those four points connected by straight lines" - - id: 2d.path.rect.closed - text: "The rect(x, y, w, h) method <...> *must* then mark the subpath as closed." - - id: 2d.path.rect.newsubpath - text: "The rect(x, y, w, h) method <...> *must* then create a new subpath with the point (x, y) as the only point in the subpath." - - - id: 2d.path.roundrect.radii - text: "The elements of the radii argument to roundRect must map to the right corners." - - id: 2d.path.roundrect.subpath - text: "The roundRect(x, y, w, h, radii) method *must* create a new subpath containing just the rounded rectangle" - - id: 2d.path.roundrect.newsubpath - text: "The roundRect(x, y, w, h, radii) method <...> *must* then create a new subpath with the point (x, y) as the only point in the subpath." - - - id: 2d.path.fill.basic - text: "The fill() method *must* fill all the subpaths of the current path, using fillStyle, and using the non-zero winding number rule." - - id: 2d.path.fill.closed - text: "Open subpaths *must* be implicitly closed when being filled (without affecting the actual subpaths)." - - id: 2d.path.stroke.basic - text: "The stroke() method *must* calculate the strokes of all the subpaths of the current path, using the lineWidth, lineCap, lineJoin, and (if appropriate) miterLimit attributes, and then fill the combined stroke area using the strokeStyle attribute." - - id: 2d.path.unaffected - text: "Paths, when filled or stroked, *must* be painted without affecting the current path" - - id: 2d.path.subjected - text: "Paths, when filled or stroked, <...> *must* be subject to shadow effects, global alpha, the clipping region, and global composition operators." - - - id: 2d.path.stroke.prune - text: "Zero-length line segments *must* be pruned before stroking a path." - - id: 2d.path.stroke.empty - text: "Empty subpaths *must* be ignored." - - - id: 2d.path.clip.basic - text: "The clip() method *must* create a new clipping region by calculating the intersection of the current clipping region and the area described by the current path, using the non-zero winding number rule." - - id: 2d.path.clip.closed - text: "Open subpaths *must* be implicitly closed when computing the clipping region, without affecting the actual subpaths." - - id: 2d.path.clip.initial - text: "When the context is initialized, the clipping region *must* be set to the rectangle with the top left corner at (0,0) and the width and height of the coordinate space." - - id: 2d.path.isPointInPath - text: "The isPointInPath(x, y) method *must* return true if the point given by the x and y coordinates passed to the method, when treated as coordinates in the canvas coordinate space unaffected by the current transformation, is inside the current path as determined by the non-zero winding number rule; and must return false otherwise." - - id: 2d.path.isPointInPath.edge - text: "The isPointInPath(x, y) method *must* return true if <...>. Points on the path itself are considered to be inside the path." - - id: 2d.path.isPointInPath.nonfinite - text: "If either of the arguments is infinite or NaN, then the method *must* return false." - - # TODO: Focus management - - - id: 2d.text.font.parse - text: "The font IDL attribute, on setting, *must* be parsed the same way as the 'font' property of CSS (but without supporting property-independent style sheet syntax like 'inherit')," - - id: 2d.text.font.lineheight - text: "The font IDL attribute, on setting, *must* be parsed <...> with the 'line-height' component forced to 'normal'," - - id: 2d.text.font.fontsize - text: "The font IDL attribute, on setting, *must* be parsed <...> with the 'font-size' component converted to CSS pixels," - - id: 2d.text.font.systemfonts - text: "The font IDL attribute, on setting, *must* be parsed <...> with system fonts being computed to explicit values." - - id: 2d.text.font.invalid - text: "If the new value is syntactically incorrect (including using property-independent style sheet syntax like 'inherit' or 'initial'), then it *must* be ignored, without assigning a new font value." - - - id: 2d.text.font.fontface - text: "Font names must be interpreted in the context of the canvas element's stylesheets; any fonts embedded using @font-face *must* therefore be available once they are loaded." - - id: 2d.text.font.notfullyloaded - text: "If a font is referenced before it is fully loaded, then it *must* be treated as if it was an unknown font, falling back to another as described by the relevant CSS specifications." - - id: 2d.text.font.get - text: "On getting, the font attribute *must* return the serialized form of the current font of the context (with no 'line-height' component)." - - id: 2d.text.font.default - text: "When the context is created, the font of the context *must* be set to 10px sans-serif." - - id: 2d.text.font.size - text: "When the 'font-size' component is set to lengths using percentages, 'em' or 'ex' units, or the 'larger' or 'smaller' keywords, these *must* be interpreted relative to the computed value of the 'font-size' property of the corresponding canvas element at the time that the attribute is set." - - id: 2d.text.font.weight - text: "When the 'font-weight' component is set to the relative values 'bolder' and 'lighter', these *must* be interpreted relative to the computed value of the 'font-weight' property of the corresponding canvas element at the time that the attribute is set." - - id: 2d.text.font.undefined - text: "If the computed values are undefined for a particular case (e.g. because the canvas element is not in a Document), then the relative keywords *must* be interpreted relative to the normal-weight 10px sans-serif default." - - id: 2d.text.align.get - text: "The textAlign IDL attribute, on getting, *must* return the current value." - - id: 2d.text.align.set - text: "On setting, if the value is one of start, end, left, right, or center, then the value *must* be changed to the new value." - - id: 2d.text.align.invalid - text: "The textAlign IDL attribute, <...> Otherwise, the new value *must* be ignored." - - id: 2d.text.align.default - text: "When the context is created, the textAlign attribute *must* initially have the value start." - - id: 2d.text.baseline.get - text: "The textBaseline IDL attribute, on getting, *must* return the current value." - - id: 2d.text.baseline.set - text: "On setting, if the value is one of top, hanging, middle, alphabetic, ideographic, or bottom, then the value *must* be changed to the new value." - - id: 2d.text.baseline.invalid - text: "The textBaseline IDL attribute, <...> Otherwise, the new value *must* be ignored." - - id: 2d.text.baseline.default - text: "When the context is created, the textBaseline attribute *must* initially have the value alphabetic." - - - id: 2d.text.draw - text: "The fillText() and strokeText() methods <...> when the methods are called, the user agent *must* run the following steps:" - - id: 2d.text.draw.spaces - text: "Replace all the space characters in text with U+0020 SPACE characters." - - id: 2d.text.draw.direction - text: "the 'direction' property of the inline box set to the directionality of the canvas element," - - id: 2d.text.draw.maxwidth - text: "If the maxWidth argument was specified and the hypothetical width of the inline box in the hypothetical line box is greater than maxWidth CSS pixels, then change font to have a more condensed font (if one is available or if a reasonably readable one can be synthesized by applying a horizontal scale factor to the font) or a smaller font, and return to the previous step." - - id: 2d.text.align.left - text: "Let the anchor point's horizontal position be the left edge of the inline box." - - id: 2d.text.align.right - text: "Let the anchor point's horizontal position be the right edge of the inline box." - - id: 2d.text.align.center - text: "Let the anchor point's horizontal position be half way between the left and right edges of the inline box." - - - id: 2d.text.baseline.top - text: "Let the anchor point's vertical position be the top of the em box of the first available font of the inline box." - - id: 2d.text.baseline.hanging - text: "Let the anchor point's vertical position be the hanging baseline of the first available font of the inline box." - - id: 2d.text.baseline.middle - text: "Let the anchor point's vertical position be half way between the bottom and the top of the em box of the first available font of the inline box." - - id: 2d.text.baseline.alphabetic - text: "Let the anchor point's vertical position be the alphabetic baseline of the first available font of the inline box." - - id: 2d.text.baseline.ideographic - text: "Let the anchor point's vertical position be the ideographic baseline of the first available font of the inline box." - - id: 2d.text.baseline.bottom - text: "Let the anchor point's vertical position be the bottom of the em box of the first available font of the inline box." - - - id: 2d.text.draw.fill - text: "For fillText() fillStyle must be applied to the glyphs and strokeStyle *must* be ignored." - - id: 2d.text.draw.stroke - text: "For strokeText() the reverse holds and strokeStyle must be applied to the glyph outlines and fillStyle *must* be ignored." - - id: 2d.text.measure.spaces - text: "When the method is invoked, the user agent *must* replace all the space characters in text with U+0020 SPACE characters," - - id: 2d.text.measure - text: "When the method is invoked, the user agent <...> *must* form a hypothetical infinitely wide CSS line box containing a single inline box containing the text text, with all the properties at their initial values except the 'white-space' property of the inline element set to 'pre' and the 'font' property of the inline element set to the current font of the context as given by the font attribute, and must then return a new TextMetrics object with its width attribute set to the width of that inline box, in CSS pixels." - - - id: 2d.drawImage.defaultdest - text: "If not specified, the dw and dh arguments *must* default to the values of sw and sh, interpreted such that one CSS pixel in the image is treated as one unit in the canvas coordinate space." - - id: 2d.drawImage.defaultsource - text: "If the sx, sy, sw, and sh arguments are omitted, they *must* default to 0, 0, the image's intrinsic width in image pixels, and the image's intrinsic height in image pixels, respectively." - - id: 2d.drawImage.IDL - text: "void drawImage(in HTMLVideoElement image, in double sx, in double sy, in double sw, in double sh, in double dx, in double dy, in double dw, in double dh);" - - id: 2d.drawImage.incomplete.image - text: "If the image argument is an HTMLImageElement object that is not fully decodable<...> then the implementation *must* return without drawing anything." - - id: 2d.drawImage.incomplete.video - text: "If the image argument is <...> an HTMLVideoElement object whose readyState attribute is either HAVE_NOTHING or HAVE_METADATA, then the implementation *must* return without drawing anything." - - id: 2d.drawImage.zerocanvas - text: "If the image argument is an HTMLCanvasElement or an OffscreenCanvas object with either a horizontal dimension or a vertical dimension equal to zero, then the implementation *must* throw an INVALID_STATE_ERR exception." - - id: 2d.drawImage.zerosource - text: "If one of the sw or sh arguments is zero, the implementation *must* return without drawing anything." - - id: 2d.drawImage.paint - text: "When drawImage() is invoked, the region of the image specified by the source rectangle *must* be painted on the region of the canvas specified by the destination rectangle, after applying the current transformation matrix to the points of the destination rectangle." - - id: 2d.drawImage.original - text: "The original image data of the source image *must* be used, not the image as it is rendered (e.g. width and height attributes on the source element have no effect)." - - id: 2d.drawImage.direction - text: "The image data *must* be processed in the original direction, even if the dimensions given are negative." - - id: 2d.drawImage.self - text: "When a canvas is drawn onto itself, the drawing model requires the source to be copied before the image is drawn back onto the canvas, so it is possible to copy parts of a canvas onto overlapping parts of itself." - - id: 2d.drawImage.animated.image - text: "When the drawImage() method is passed an animated image as its image argument, the user agent *must* use the poster frame of the animation, or, if there is no poster frame, the first frame of the animation." - - id: 2d.drawImage.animated.video - text: "When the image argument is an HTMLVideoElement, then the frame at the current playback position *must* be used as the source image," - - id: 2d.drawImage.video.size - text: "When the image argument is an HTMLVideoElement, <...> the source image's dimensions *must* be the intrinsic width and intrinsic height of the media resource (i.e. after any aspect-ratio correction has been applied)." - - id: 2d.drawImage.unaffect - text: "Images are painted without affecting the current path" - - id: 2d.drawImage.subject - text: "Images are painted without affecting the current path, and are subject to shadow effects, global alpha, the clipping region, and global composition operators." - - - - id: 2d.imageData.create2.object - text: "When the method is invoked with two arguments sw and sh, it *must* return an ImageData object" - - id: 2d.imageData.create2.size - text: "When the method is invoked with two arguments sw and sh, it *must* return an ImageData object representing a rectangle with a width in CSS pixels equal to the absolute magnitude of sw and a height in CSS pixels equal to the absolute magnitude of sh." - - id: 2d.imageData.create1.object - text: "When invoked with a single imagedata argument, it *must* return an ImageData object" - - id: 2d.imageData.create1.size - text: "When invoked with a single imagedata argument, it *must* return an ImageData object representing a rectangle with the same dimensions as the ImageData object passed as the argument." - - id: 2d.imageData.create.initial - text: "The ImageData object returned must be filled with transparent black." - - - id: 2d.imageData.get.object - text: "The getImageData(sx, sy, sw, sh) method *must* return an ImageData object" - - id: 2d.imageData.get.basic - text: "The getImageData(sx, sy, sw, sh) method *must* return an ImageData object representing the underlying pixel data for the area of the canvas denoted by the rectangle whose corners are the four points (sx, sy), (sx+sw, sy), (sx+sw, sy+sh), (sx, sy+sh), in canvas coordinate space units." - - id: 2d.imageData.get.outside - text: "Pixels outside the canvas *must* be returned as transparent black." - - id: 2d.imageData.get.premul - text: "Pixels *must* be returned as non-premultiplied alpha values." - - - id: 2d.imageData.getcreate.nonfinite - text: "If any of the arguments to createImageData() or getImageData() are infinite or NaN, the method *must* instead raise a NOT_SUPPORTED_ERR exception." - - id: 2d.imageData.create.null - text: "ImageData createImageData(in ImageData imagedata);" - - id: 2d.imageData.getcreate.zero - text: "If either the sw or sh arguments are zero, the method *must* instead raise an INDEX_SIZE_ERR exception." - - - id: 2d.imageData.initial - text: "ImageData objects *must* be initialized so that their width attribute is set to w, the number of physical device pixels per row in the image data, their height attribute is set to h, the number of rows in the image data, and their data attribute is initialized to a CanvasPixelArray object holding the image data." - - id: 2d.imageData.one - text: "At least one pixel's worth of image data *must* be returned." - - id: 2d.pixelarray.order - text: "The data *must* be represented in left-to-right order, row by row top to bottom, starting with the top left, with each pixel's red, green, blue, and alpha components being given in that order for each pixel." - - id: 2d.pixelarray.range - text: "Each component of each device pixel represented in this array *must* be in the range 0..255, representing the 8 bit value for that component." - - id: 2d.pixelarray.indexes - text: "The components *must* be assigned consecutive indices starting with 0 for the top left pixel's red component." - - id: 2d.pixelarray.length - text: "The length attribute of a CanvasPixelArray object *must* return this number." - - id: 2d.pixelarray.retrieve - text: "To determine the value of an indexed property index, the user agent *must* return the value of the indexth component in the array." - - id: 2d.pixelarray.modify - text: "To set the value of an existing indexed property index to value value, the value of the indexth component in the array *must* be set to value." - - - id: 2d.imageData.put.nonfinite - text: "If any of the arguments to the method are infinite or NaN, the method *must* raise a NOT_SUPPORTED_ERR exception." - - id: 2d.imageData.put.wrongtype - text: "void putImageData(in ImageData imagedata, in double dx, in double dy);<...>void putImageData(in ImageData imagedata, in double dx, in double dy, in double dirtyX, in double dirtyY, in double dirtyWidth, in double dirtyHeight);" - - id: 2d.imageData.put.3arg - text: "When the last four arguments are omitted, they *must* be assumed to have the values 0, 0, the width member of the imagedata structure, and the height member of the imagedata structure, respectively." - - id: 2d.imageData.put.normal - text: "When invoked with arguments that do not, per the last few paragraphs, cause an exception to be raised, the putImageData() method *must* act as follows:" - - - id: 2d.imageData.unchanged - text: "the following *must* result in no visible changes to the rendering:" - - id: 2d.imageData.createround - text: "...*must* return ImageData objects with the same dimensions, for any value of w and h." - - id: 2d.imageData.unaffected - text: "The current path, transformation matrix, shadow attributes, global alpha, the clipping region, and global composition operator *must* not affect the getImageData() and putImageData() methods." - - - id: 2d.drawingmodel - text: "When a shape or image is painted, user agents *must* follow these steps, in the order given (or act as if they do):" - - - id: 2d.colorspace.correction - text: "The canvas APIs *must* perform color correction at only two points: when rendering images with their own gamma correction and color space information onto the canvas, to convert the image to the color space used by the canvas (e.g. using the 2D Context's drawImage() method with an HTMLImageElement object)," - - id: 2d.colorspace.toDataURL.info - text: "The toDataURL() method *must* not include color space information in the resource returned." - - id: 2d.colorspace.toDataURL.equal - text: "Where the output format allows it, the color of pixels in resources created by toDataURL() *must* match those returned by the getImageData() method." - - id: 2d.colorspace.match - text: "In user agents that support CSS, the color space used by a canvas element *must* match the color space used for processing any colors for that element in CSS." - - id: 2d.colorspace.img.equal - text: "The gamma correction and color space information of images *must* be handled in such a way that an image rendered directly using an img element would use the same colors as one painted on a canvas element that is then itself rendered." - - id: 2d.colorspace.img.noinfo - text: "Furthermore, the rendering of images that have no color correction information (such as those returned by the toDataURL() method) *must* be rendered with no color correction." - - - id: 2d.scrollPathIntoView.basic - text: "The scrollPathIntoView() method, when invoked, *must* run these steps:" - - - id: security.start - text: "All canvas elements *must* start with their origin-clean set to true." - - id: security.drawImage.image - keyword: must - text: "The element's 2D context's drawImage() method is called with an HTMLImageElement or an HTMLVideoElement whose origin is not the same as that of the Document object that owns the canvas element." - - id: security.drawImage.canvas - keyword: must - text: "The element's 2D context's drawImage() method is called with an HTMLCanvasElement whose origin-clean flag is false." - - id: security.fillStyle.image - keyword: must - text: "The element's 2D context's fillStyle attribute is set to a CanvasPattern object that was created from an HTMLImageElement or an HTMLVideoElement whose origin was not the same as that of the Document object that owns the canvas element when the pattern was created." - - id: security.fillStyle.video - keyword: must - text: "The element's 2D context's fillStyle attribute is set to a CanvasPattern object that was created from an HTMLImageElement or an HTMLVideoElement whose origin was not the same as that of the Document object that owns the canvas element when the pattern was created." - - id: security.fillStyle.canvas - keyword: must - text: "The element's 2D context's fillStyle attribute is set to a CanvasPattern object that was created from an HTMLCanvasElement whose origin-clean flag was false when the pattern was created." - - id: security.strokeStyle.image - keyword: must - text: "The element's 2D context's strokeStyle attribute is set to a CanvasPattern object that was created from an HTMLImageElement or an HTMLVideoElement whose origin was not the same as that of the Document object that owns the canvas element when the pattern was created." - - id: security.strokeStyle.video - keyword: must - text: "The element's 2D context's strokeStyle attribute is set to a CanvasPattern object that was created from an HTMLImageElement or an HTMLVideoElement whose origin was not the same as that of the Document object that owns the canvas element when the pattern was created." - - id: security.strokeStyle.canvas - keyword: must - text: "The element's 2D context's strokeStyle attribute is set to a CanvasPattern object that was created from an HTMLCanvasElement whose origin-clean flag was false when the pattern was created." - - id: security.toDataURL - text: "Whenever the toDataURL() method of a canvas element whose origin-clean flag is set to false is called, the method *must* raise a SECURITY_ERR exception." - - id: security.getImageData - text: "Whenever the getImageData() method of the 2D context of a canvas element whose origin-clean flag is set to false is called with otherwise correct arguments, the method *must* raise a SECURITY_ERR exception." diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/color_space.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/color_space.yaml index 7b4af0d4d2f..ba5d93e0b02 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/color_space.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/color_space.yaml @@ -1,6 +1,4 @@ - name: 2d.color.space.p3.to.p3 - testing: - - 2d.color.space.p3.to.p3 desc: test getImageData with display-p3 and uint8 from display p3 uint8 canvas attributes: | {colorSpace: "display-p3"} @@ -20,8 +18,6 @@ assert_approx_equals(pixel[3], pixel_expected[3], 2); - name: 2d.color.space.p3.to.srgb - testing: - - 2d.color.space.p3.to.srgb desc: test getImageData with srsb and uint8 from display p3 uint8 canvas attributes: | {colorSpace: "display-p3"} @@ -40,8 +36,6 @@ assert_approx_equals(pixel[3], pixel_expected[3], 2); - name: 2d.color.space.p3.toBlob.p3.canvas - testing: - - 2d.color.space.p3.and.uint8 desc: test if toblob returns p3 data from p3 color space canvas attributes: | {colorSpace: "display-p3"} @@ -75,8 +69,6 @@ }, 'image/png', 1); - name: 2d.color.space.p3.toDataURL.p3.canvas - testing: - - 2d.color.space.p3.and.uint8 desc: test if toDataURL returns p3 data from canvas with p3 color space attributes: | {colorSpace: "display-p3"} @@ -106,8 +98,6 @@ image.src = canvas.toDataURL(); - name: 2d.color.space.p3.toDataURL.jpeg.p3.canvas - testing: - - 2d.color.space.p3.and.uint8 desc: test if toDataURL('image/jpeg') returns p3 data from canvas with p3 color space attributes: | {colorSpace: "display-p3"} @@ -137,8 +127,6 @@ image.src = canvas.toDataURL("image/jpeg"); - name: 2d.color.space.p3.toBlob.with.putImageData - testing: - - 2d.color.space.p3.and.uint8 desc: Use putImageData to put some p3 data in canvas and test if toBlob returns the same data attributes: | {colorSpace: "display-p3"} @@ -178,8 +166,6 @@ }, 'image/png', 1); - name: 2d.color.space.p3.toDataURL.with.putImageData - testing: - - 2d.color.space.p3.and.uint8 desc: Use putImageData to put some p3 data in canvas and test if toDataURL returns the same data attributes: | {colorSpace: "display-p3"} @@ -216,8 +202,6 @@ image.src = canvas.toDataURL(); - name: 2d.color.space.p3.fillText - testing: - - 2d.color.space.p3.and.uint8 desc: Test if fillText can be used with a solid display-p3 color attributes: | {colorSpace: "display-p3"} @@ -258,8 +242,6 @@ }); - name: 2d.color.space.p3.strokeText - testing: - - 2d.color.space.p3.and.uint8 desc: Test if strokeText can be used with a solid display-p3 color attributes: | {colorSpace: "display-p3"} @@ -302,8 +284,6 @@ }); - name: 2d.color.space.p3.fillText.shadow - testing: - - 2d.color.space.p3.and.uint8 desc: Test if fillText can be used with a display-p3 shadow color attributes: | {colorSpace: "display-p3"} diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/compositing.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/compositing.yaml index f70a3a9bf4f..c0b7b83e001 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/compositing.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/compositing.yaml @@ -1,6 +1,4 @@ - name: 2d.composite.globalAlpha.range - testing: - - 2d.composite.globalAlpha.range code: | ctx.globalAlpha = 0.5; var a = ctx.globalAlpha; // might not be exactly 0.5, if it is rounded/quantised, so remember for future comparisons @@ -14,8 +12,6 @@ @assert ctx.globalAlpha === 1; - name: 2d.composite.globalAlpha.invalid - testing: - - 2d.composite.globalAlpha.range code: | ctx.globalAlpha = 0.5; var a = ctx.globalAlpha; // might not be exactly 0.5, if it is rounded/quantised, so remember for future comparisons @@ -27,14 +23,10 @@ @assert ctx.globalAlpha === a; - name: 2d.composite.globalAlpha.default - testing: - - 2d.composite.globalAlpha.default code: | @assert ctx.globalAlpha === 1.0; - name: 2d.composite.globalAlpha.fill - testing: - - 2d.composite.globalAlpha.shape code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -45,8 +37,6 @@ expected: green - name: 2d.composite.globalAlpha.image - testing: - - 2d.composite.globalAlpha.image images: - red.png canvasType: @@ -60,8 +50,6 @@ expected: green - name: 2d.composite.globalAlpha.canvas - testing: - - 2d.composite.globalAlpha.image canvasType: ['HTMLCanvas'] code: | var canvas2 = document.createElement('canvas'); @@ -79,8 +67,6 @@ expected: green - name: 2d.composite.globalAlpha.imagepattern - testing: - - 2d.composite.globalAlpha.image images: - red.png canvasType: ['HTMLCanvas'] @@ -94,8 +80,6 @@ expected: green - name: 2d.composite.globalAlpha.canvaspattern - testing: - - 2d.composite.globalAlpha.image canvasType: ['HTMLCanvas'] code: | var canvas2 = document.createElement('canvas'); @@ -114,8 +98,6 @@ expected: green - name: 2d.composite.globalAlpha.canvascopy - testing: - - 2d.composite.globalAlpha.image canvasType: ['HTMLCanvas'] code: | var canvas2 = document.createElement('canvas'); @@ -136,8 +118,6 @@ - name: 2d.composite.operation.get - testing: - - 2d.composite.operation code: | var modes = ['source-atop', 'source-in', 'source-out', 'source-over', 'destination-atop', 'destination-in', 'destination-out', 'destination-over', @@ -149,71 +129,53 @@ } - name: 2d.composite.operation.unrecognised - testing: - - 2d.composite.operation.unrecognised code: | ctx.globalCompositeOperation = 'xor'; ctx.globalCompositeOperation = 'nonexistent'; @assert ctx.globalCompositeOperation === 'xor'; - name: 2d.composite.operation.darker - testing: - - 2d.composite.operation.unrecognised code: | ctx.globalCompositeOperation = 'xor'; ctx.globalCompositeOperation = 'darker'; @assert ctx.globalCompositeOperation === 'xor'; - name: 2d.composite.operation.over - testing: - - 2d.composite.operation.unrecognised code: | ctx.globalCompositeOperation = 'xor'; ctx.globalCompositeOperation = 'over'; @assert ctx.globalCompositeOperation === 'xor'; - name: 2d.composite.operation.clear - testing: - - 2d.composite.operation.unrecognised code: | ctx.globalCompositeOperation = 'xor'; ctx.globalCompositeOperation = 'clear'; @assert ctx.globalCompositeOperation === 'clear'; - name: 2d.composite.operation.highlight - testing: - - 2d.composite.operation.unrecognised code: | ctx.globalCompositeOperation = 'xor'; ctx.globalCompositeOperation = 'highlight'; @assert ctx.globalCompositeOperation === 'xor'; - name: 2d.composite.operation.nullsuffix - testing: - - 2d.composite.operation.exact code: | ctx.globalCompositeOperation = 'xor'; ctx.globalCompositeOperation = 'source-over\0'; @assert ctx.globalCompositeOperation === 'xor'; - name: 2d.composite.operation.casesensitive - testing: - - 2d.composite.operation.casesensitive code: | ctx.globalCompositeOperation = 'xor'; ctx.globalCompositeOperation = 'Source-over'; @assert ctx.globalCompositeOperation === 'xor'; - name: 2d.composite.operation.default - testing: - - 2d.composite.operation.default code: | @assert ctx.globalCompositeOperation === 'source-over'; - name: 2d.composite.globalAlpha.image - testing: - - 2d.composite.globalAlpha.image canvasType: ['OffscreenCanvas'] code: | ctx.fillStyle = '#0f0'; @@ -236,8 +198,6 @@ }).then(t_pass, t_fail); - name: 2d.composite.globalAlpha.canvas - testing: - - 2d.composite.globalAlpha.image canvasType: ['OffscreenCanvas'] code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @@ -251,8 +211,6 @@ @assert pixel 50,25 ==~ 2,253,0,255; - name: 2d.composite.globalAlpha.imagepattern - testing: - - 2d.composite.globalAlpha.image canvasType: ['OffscreenCanvas'] code: | ctx.fillStyle = '#0f0'; @@ -276,8 +234,6 @@ }).then(t_pass, t_fail); - name: 2d.composite.globalAlpha.canvaspattern - testing: - - 2d.composite.globalAlpha.image canvasType: ['OffscreenCanvas'] code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @@ -292,8 +248,6 @@ @assert pixel 50,25 ==~ 2,253,0,255; - name: 2d.composite.globalAlpha.canvascopy - testing: - - 2d.composite.globalAlpha.image canvasType: ['OffscreenCanvas'] code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @@ -305,4 +259,4 @@ ctx.globalCompositeOperation = 'copy' ctx.globalAlpha = 0.51; ctx.drawImage(offscreenCanvas2, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,130; \ No newline at end of file + @assert pixel 50,25 ==~ 0,255,0,130; diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/conformance_requirements.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/conformance_requirements.yaml index 89091d6e7c7..3483d115f46 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/conformance_requirements.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/conformance_requirements.yaml @@ -1,8 +1,6 @@ - name: 2d.conformance.requirements.delete desc: window.CanvasRenderingContext2D is Configurable notes: &bindings Defined in "Web IDL" (draft) - testing: - - context.2d.type canvasType: ['HTMLCanvas'] code: | @assert window.CanvasRenderingContext2D !== undefined; diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/drawing-images-to-the-canvas.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/drawing-images-to-the-canvas.yaml new file mode 100644 index 00000000000..83de88113f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/drawing-images-to-the-canvas.yaml @@ -0,0 +1,1333 @@ +- name: 2d.drawImage.3arg + canvasType: ['HTMLCanvas'] + images: + - red.png + - green.png + code: | + ctx.drawImage(document.getElementById('green.png'), 0, 0); + ctx.drawImage(document.getElementById('red.png'), -100, 0); + ctx.drawImage(document.getElementById('red.png'), 100, 0); + ctx.drawImage(document.getElementById('red.png'), 0, -50); + ctx.drawImage(document.getElementById('red.png'), 0, 50); + + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.5arg + canvasType: ['HTMLCanvas'] + images: + - red.png + - green.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('green.png'), 50, 0, 50, 50); + ctx.drawImage(document.getElementById('red.png'), 0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.9arg.basic + canvasType: ['HTMLCanvas'] + images: + - green.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('green.png'), 0, 0, 100, 50, 0, 0, 100, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.9arg.sourcepos + canvasType: ['HTMLCanvas'] + images: + - rgrg-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('rgrg-256x256.png'), 140, 20, 100, 50, 0, 0, 100, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.9arg.sourcesize + canvasType: ['HTMLCanvas'] + images: + - rgrg-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('rgrg-256x256.png'), 0, 0, 256, 256, 0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 51, 26); + ctx.fillRect(49, 24, 51, 26); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + @assert pixel 20,20 ==~ 0,255,0,255; + @assert pixel 80,20 ==~ 0,255,0,255; + @assert pixel 20,30 ==~ 0,255,0,255; + @assert pixel 80,30 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.9arg.destpos + canvasType: ['HTMLCanvas'] + images: + - red.png + - green.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('green.png'), 0, 0, 100, 50, 0, 0, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, -100, 0, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 100, 0, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, -50, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, 50, 100, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.9arg.destsize + canvasType: ['HTMLCanvas'] + images: + - red.png + - green.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('green.png'), 1, 1, 1, 1, 0, 0, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, -50, 0, 50, 50); + ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 100, 0, 50, 50); + ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, -25, 100, 25); + ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, 50, 100, 25); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.canvas + canvasType: ['HTMLCanvas'] + code: | + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50); + + ctx.fillStyle = '#f00'; + ctx.drawImage(canvas2, 0, 0); + + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + + ctx.drawImage(document.createElement('canvas'), 0, 0); + + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.self.1 + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); + ctx.drawImage(canvas, 50, 0); + + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.self.2 + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 1, 100, 49); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 1); + ctx.drawImage(canvas, 0, 1); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 2); + + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.null + code: | + @assert throws TypeError ctx.drawImage(null, 0, 0); + +- name: 2d.drawImage.wrongtype + desc: Incorrect image types in drawImage do not match any defined overloads, so + WebIDL throws a TypeError + code: | + @assert throws TypeError ctx.drawImage(undefined, 0, 0); + @assert throws TypeError ctx.drawImage(0, 0, 0); + @assert throws TypeError ctx.drawImage("", 0, 0); + +- name: 2d.drawImage.wrongtype.paragraph + desc: Incorrect image types in drawImage do not match any defined overloads, so + WebIDL throws a TypeError + notes: &bindings Defined in "Web IDL" (draft) + canvasType: ['HTMLCanvas'] + code: | + @assert throws TypeError ctx.drawImage(document.createElement('p'), 0, 0); + +- name: 2d.drawImage.floatsource + canvasType: ['HTMLCanvas'] + images: + - green.png + code: | + ctx.drawImage(document.getElementById('green.png'), 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.zerosource + desc: drawImage with zero-sized source rectangle draws nothing without exception + canvasType: ['HTMLCanvas'] + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 1, 0, 0, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 10, 10, 1, 0, 0, 0, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 0, 0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.zerosource.image + desc: drawImage with zero-sized source rectangle from image draws nothing without exception + canvasType: ['HTMLCanvas'] + images: + - red-zerowidth.svg + - red-zeroheight.svg + - red-zerosize.svg + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('red-zerowidth.svg'), 0, 0, 100, 50); + ctx.drawImage(document.getElementById('red-zeroheight.svg'), 0, 0, 100, 50); + ctx.drawImage(document.getElementById('red-zerosize.svg'), 0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + expected: green + +- name: 2d.drawImage.negativesource + desc: Negative source width/height represents the correct rectangle + canvasType: ['HTMLCanvas'] + mozilla: {throws: !!null ''} + images: + - ggrr-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 78, -100, 50, 0, 0, 50, 50); + ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 128, -100, -50, 50, 0, 50, 50); + @assert pixel 1,1 ==~ 0,255,0,255; + @assert pixel 1,48 ==~ 0,255,0,255; + @assert pixel 98,1 ==~ 0,255,0,255; + @assert pixel 98,48 ==~ 0,255,0,255; + @assert pixel 48,1 ==~ 0,255,0,255; + @assert pixel 48,48 ==~ 0,255,0,255; + @assert pixel 51,1 ==~ 0,255,0,255; + @assert pixel 51,48 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.negativedest + desc: Negative destination width/height represents the correct rectangle + canvasType: ['HTMLCanvas'] + mozilla: {throws: !!null ''} + images: + - ggrr-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 78, 50, 50, 0, 50, 50, -50); + ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 128, 50, -50, 100, 50, -50, -50); + @assert pixel 1,1 ==~ 0,255,0,255; + @assert pixel 1,48 ==~ 0,255,0,255; + @assert pixel 98,1 ==~ 0,255,0,255; + @assert pixel 98,48 ==~ 0,255,0,255; + @assert pixel 48,1 ==~ 0,255,0,255; + @assert pixel 48,48 ==~ 0,255,0,255; + @assert pixel 51,1 ==~ 0,255,0,255; + @assert pixel 51,48 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.negativedir + desc: Negative dimensions do not affect the direction of the image + canvasType: ['HTMLCanvas'] + mozilla: {throws: !!null ''} + images: + - ggrr-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('ggrr-256x256.png'), 0, 178, 50, -100, 0, 0, 50, 100); + ctx.drawImage(document.getElementById('ggrr-256x256.png'), 0, 78, 50, 100, 50, 100, 50, -100); + @assert pixel 1,1 ==~ 0,255,0,255; + @assert pixel 1,48 ==~ 0,255,0,255; + @assert pixel 98,1 ==~ 0,255,0,255; + @assert pixel 98,48 ==~ 0,255,0,255; + @assert pixel 48,1 ==~ 0,255,0,255; + @assert pixel 48,48 ==~ 0,255,0,255; + @assert pixel 51,1 ==~ 0,255,0,255; + @assert pixel 51,48 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.outsidesource + DISABLED: fix this to match the current spec (transparent black outside source) + canvasType: ['HTMLCanvas'] + mozilla: {throws: !!null ''} + images: + - green.png + - red.png + code: | + ctx.drawImage(document.getElementById('green.png'), 10.5, 10.5, 89.5, 39.5, 0, 0, 100, 50); + ctx.drawImage(document.getElementById('green.png'), 5.5, 5.5, -5.5, -5.5, 0, 0, 100, 50); + ctx.drawImage(document.getElementById('green.png'), 100, 50, -5, -5, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), -0.001, 0, 100, 50, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 0, -0.001, 100, 50, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 0, 0, 100.001, 50, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50.001, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 50, 0, 50.001, 50, 0, 0, 100, 50); @moz-todo + @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 0, 0, -5, 5, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 0, 0, 5, -5, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 110, 60, -20, -20, 0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo + expected: green + +- name: 2d.drawImage.incomplete.nosrc + canvasType: ['HTMLCanvas'] + mozilla: {throws: !!null ''} + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var img = new Image(); + ctx.drawImage(img, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.incomplete.immediate + canvasType: ['HTMLCanvas'] + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var img = new Image(); + img.src = '../images/red.png'; + // This triggers the "update the image data" algorithm. + // The image will not go to the "completely available" state + // until a fetch task in the networking task source is processed, + // so the image must not be fully decodable yet: + ctx.drawImage(img, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo + expected: green + +- name: 2d.drawImage.incomplete.reload + canvasType: ['HTMLCanvas'] + images: + - yellow.png + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('yellow.png'); + img.src = '../images/red.png'; + // This triggers the "update the image data" algorithm, + // and resets the image to the "unavailable" state. + // The image will not go to the "completely available" state + // until a fetch task in the networking task source is processed, + // so the image must not be fully decodable yet: + ctx.drawImage(img, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo + expected: green + +- name: 2d.drawImage.incomplete.emptysrc + canvasType: ['HTMLCanvas'] + images: + - red.png + mozilla: {throws: !!null ''} + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('red.png'); + img.src = ""; + ctx.drawImage(img, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.incomplete.removedsrc + canvasType: ['HTMLCanvas'] + images: + - red.png + mozilla: {throws: !!null ''} + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('red.png'); + img.removeAttribute('src'); + ctx.drawImage(img, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.broken + canvasType: ['HTMLCanvas'] + images: + - broken.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('broken.png'); + @assert throws INVALID_STATE_ERR ctx.drawImage(img, 0, 0); + expected: green + +- name: 2d.drawImage.nonexistent + canvasType: ['HTMLCanvas'] + images: + - not-found-at-all.png + code: | + var img = document.getElementById('not-found-at-all.png'); + @assert throws INVALID_STATE_ERR ctx.drawImage(img, 0, 0); + +- name: 2d.drawImage.zerocanvas + desc: drawImage with zero-sized canvas as the source shoud throw exception + code: | + var canvas2 = document.createElement('canvas'); + canvas2.width = 0; + canvas2.height = 50; + @assert throws INVALID_STATE_ERR ctx.drawImage(canvas2, 0, 0); + + canvas2.width = 50; + canvas2.height = 0; + @assert throws INVALID_STATE_ERR ctx.drawImage(canvas2, 0, 0); + + canvas2.width = 0; + canvas2.height = 0; + @assert throws INVALID_STATE_ERR ctx.drawImage(canvas2, 0, 0); + +- name: 2d.drawImage.svg + desc: drawImage() of an SVG image + canvasType: ['HTMLCanvas'] + images: + - green.svg + code: | + ctx.drawImage(document.getElementById('green.svg'), 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.animated.gif + desc: drawImage() of an animated GIF draws the first frame + canvasType: ['HTMLCanvas'] + images: + - anim-gr.gif + code: | + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.drawImage(document.getElementById('anim-gr.gif'), 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }), 500); + expected: green + +- name: 2d.drawImage.animated.apng + desc: drawImage() of an APNG with no poster frame draws the first frame + canvasType: ['HTMLCanvas'] + images: + - anim-gr.png + code: | + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.drawImage(document.getElementById('anim-gr.png'), 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }), 500); + expected: green + +- name: 2d.drawImage.animated.poster + desc: drawImage() of an APNG draws the poster frame + canvasType: ['HTMLCanvas'] + images: + - anim-poster-gr.png + code: | + ctx.drawImage(document.getElementById('anim-poster-gr.png'), 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo + expected: green + +- name: 2d.drawImage.path + canvasType: ['HTMLCanvas'] + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.rect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 0, 0); + ctx.fill(); + @assert pixel 50,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.transform + canvasType: ['HTMLCanvas'] + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 0); + ctx.drawImage(document.getElementById('red.png'), 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + expected: green + +# TODO: drawImage shadows + +- name: 2d.drawImage.alpha + canvasType: ['HTMLCanvas'] + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalAlpha = 0; + ctx.drawImage(document.getElementById('red.png'), 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.clip + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(-10, -10, 1, 1); + ctx.clip(); + ctx.drawImage(document.getElementById('red.png'), 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.composite + canvasType: ['HTMLCanvas'] + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'destination-over'; + ctx.drawImage(document.getElementById('red.png'), 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.nowrap + desc: Stretched images do not get pixels wrapping around the edges + canvasType: ['HTMLCanvas'] + images: + - redtransparent.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(document.getElementById('redtransparent.png'), -1950, 0, 2000, 50); + @assert pixel 45,25 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 55,25 ==~ 0,255,0,255; + expected: green + +- name: 2d.drawImage.nonfinite + desc: drawImage() with Infinity/NaN is ignored + canvasType: ['HTMLCanvas'] + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var red = document.getElementById('red.png'); + @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); + @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + @assert pixel 50,25 == 0,255,0,255; + expected: green + +- name: 2d.drawImage.3arg + canvasType: ['OffscreenCanvas'] + timeout: long + images: + - red.png + - green.png + code: | + var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + Promise.all([promise1, promise2]).then(function(response1, response2) { + var promise3 = createImageBitmap(response1); + var promise4 = createImageBitmap(response2); + Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) { + ctx.drawImage(bitmap2, 0, 0); + ctx.drawImage(bitmap1, -100, 0); + ctx.drawImage(bitmap1, 100, 0); + ctx.drawImage(bitmap1, 0, -50); + ctx.drawImage(bitmap1, 0, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.5arg + images: + - red.png + - green.png + canvasType: ['OffscreenCanvas'] + timeout: long + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + Promise.all([promise1, promise2]).then(function(response1, response2) { + var promise3 = createImageBitmap(response1); + var promise4 = createImageBitmap(response2); + Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) { + ctx.drawImage(bitmap2, 50, 0, 50, 50); + ctx.drawImage(bitmap1, 0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.9arg.basic + canvasType: ['OffscreenCanvas'] + images: + - green.png + timeout: long + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.9arg.sourcepos + canvasType: ['OffscreenCanvas'] + images: + - rgrg-256x256.png + timeout: long + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rgrg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 140, 20, 100, 50, 0, 0, 100, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.9arg.sourcesize + canvasType: ['OffscreenCanvas'] + images: + - rgrg-256x256.png + timeout: long + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rgrg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 0, 0, 256, 256, 0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 51, 26); + ctx.fillRect(49, 24, 51, 26); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + @assert pixel 20,20 ==~ 0,255,0,255; + @assert pixel 80,20 ==~ 0,255,0,255; + @assert pixel 20,30 ==~ 0,255,0,255; + @assert pixel 80,30 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.9arg.destpos + canvasType: ['OffscreenCanvas'] + images: + - red.png + - green.png + timeout: long + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + Promise.all([promise1, promise2]).then(function(response1, response2) { + var promise3 = createImageBitmap(response1); + var promise4 = createImageBitmap(response2); + Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) { + ctx.drawImage(bitmap2, 0, 0, 100, 50, 0, 0, 100, 50); + ctx.drawImage(bitmap1, 0, 0, 100, 50, -100, 0, 100, 50); + ctx.drawImage(bitmap1, 0, 0, 100, 50, 100, 0, 100, 50); + ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, -50, 100, 50); + ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, 50, 100, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.9arg.destsize + canvasType: ['OffscreenCanvas'] + images: + - red.png + - green.png + timeout: long + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + Promise.all([promise1, promise2]).then(function(response1, response2) { + var promise3 = createImageBitmap(response1); + var promise4 = createImageBitmap(response2); + Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) { + ctx.drawImage(bitmap2, 1, 1, 1, 1, 0, 0, 100, 50); + ctx.drawImage(bitmap1, 0, 0, 100, 50, -50, 0, 50, 50); + ctx.drawImage(bitmap1, 0, 0, 100, 50, 100, 0, 50, 50); + ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, -25, 100, 25); + ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, 50, 100, 25); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.canvas + canvasType: ['OffscreenCanvas'] + timeout: long + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.drawImage(offscreenCanvas2, 0, 0); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + +- name: 2d.drawImage.zerocanvas + canvasType: ['OffscreenCanvas'] + timeout: long + code: | + var offscreenCanvas2 = new OffscreenCanvas(0, 10); + @assert throws INVALID_STATE_ERR ctx.drawImage(offscreenCanvas2, 0, 0); + + offscreenCanvas2.width = 10; + offscreenCanvas2.height = 0; + @assert throws INVALID_STATE_ERR ctx.drawImage(offscreenCanvas2, 0, 0); + + offscreenCanvas2.width = 0; + offscreenCanvas2.height = 0; + @assert throws INVALID_STATE_ERR ctx.drawImage(offscreenCanvas2, 0, 0); + +- name: 2d.drawImage.floatsource + canvasType: ['OffscreenCanvas'] + timeout: long + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.zerosource + desc: drawImage with zero-sized source rectangle draws nothing without exception + canvasType: ['OffscreenCanvas'] + timeout: long + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50); + ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50); + ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.zerosource.image + desc: drawImage with zero-sized source rectangle from image draws nothing without exception + canvasType: ['OffscreenCanvas'] + images: + - red-zerowidth.svg + - red-zeroheight.svg + - red-zerosize.svg + timeout: long + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red-zerowidth.svg'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.negativesource + desc: Negative source width/height represents the correct rectangle + canvasType: ['OffscreenCanvas'] + mozilla: {throws: !!null ''} + images: + - ggrr-256x256.png + timeout: long + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/ggrr-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 100, 78, -100, 50, 0, 0, 50, 50); + ctx.drawImage(bitmap, 100, 128, -100, -50, 50, 0, 50, 50); + @assert pixel 1,1 ==~ 0,255,0,255; + @assert pixel 1,48 ==~ 0,255,0,255; + @assert pixel 98,1 ==~ 0,255,0,255; + @assert pixel 98,48 ==~ 0,255,0,255; + @assert pixel 48,1 ==~ 0,255,0,255; + @assert pixel 48,48 ==~ 0,255,0,255; + @assert pixel 51,1 ==~ 0,255,0,255; + @assert pixel 51,48 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.negativedest + desc: Negative destination width/height represents the correct rectangle + canvasType: ['OffscreenCanvas'] + mozilla: {throws: !!null ''} + timeout: long + images: + - ggrr-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/ggrr-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 100, 78, 50, 50, 0, 50, 50, -50); + ctx.drawImage(bitmap, 100, 128, 50, -50, 100, 50, -50, -50); + @assert pixel 1,1 ==~ 0,255,0,255; + @assert pixel 1,48 ==~ 0,255,0,255; + @assert pixel 98,1 ==~ 0,255,0,255; + @assert pixel 98,48 ==~ 0,255,0,255; + @assert pixel 48,1 ==~ 0,255,0,255; + @assert pixel 48,48 ==~ 0,255,0,255; + @assert pixel 51,1 ==~ 0,255,0,255; + @assert pixel 51,48 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.negativedir + desc: Negative dimensions do not affect the direction of the image + canvasType: ['OffscreenCanvas'] + mozilla: {throws: !!null ''} + timeout: long + images: + - ggrr-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/ggrr-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 0, 178, 50, -100, 0, 0, 50, 100); + ctx.drawImage(bitmap, 0, 78, 50, 100, 50, 100, 50, -100); + @assert pixel 1,1 ==~ 0,255,0,255; + @assert pixel 1,48 ==~ 0,255,0,255; + @assert pixel 98,1 ==~ 0,255,0,255; + @assert pixel 98,48 ==~ 0,255,0,255; + @assert pixel 48,1 ==~ 0,255,0,255; + @assert pixel 48,48 ==~ 0,255,0,255; + @assert pixel 51,1 ==~ 0,255,0,255; + @assert pixel 51,48 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.outsidesource + DISABLED: fix this to match the current spec (transparent black outside source) + canvasType: ['OffscreenCanvas'] + code: | + var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + Promise.all([promise1, promise2]).then(function(response1, response2) { + var promise3 = createImageBitmap(response1); + var promise4 = createImageBitmap(response2); + Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) { + ctx.drawImage(bitmap2, 10.5, 10.5, 89.5, 39.5, 0, 0, 100, 50); + ctx.drawImage(bitmap2, 5.5, 5.5, -5.5, -5.5, 0, 0, 100, 50); + ctx.drawImage(bitmap2, 100, 50, -5, -5, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, -0.001, 0, 100, 50, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, -0.001, 100, 50, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, 100.001, 50, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, 100, 50.001, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 50, 0, 50.001, 50, 0, 0, 100, 50); @moz-todo + @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, -5, 5, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, 5, -5, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 110, 60, -20, -20, 0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.broken + canvasType: ['OffscreenCanvas'] + timeout: long + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/broken.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.svg + desc: drawImage() of an SVG image + canvasType: ['OffscreenCanvas'] + timeout: long + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.svg'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.animated.poster + desc: drawImage() of an APNG draws the poster frame + canvasType: ['OffscreenCanvas'] + images: + - anim-poster-gr.png + timeout: long + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/anim-poster-gr.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.path + canvasType: ['OffscreenCanvas'] + timeout: long + code: | + ctx.fillStyle = '#0f0'; + ctx.rect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + ctx.fill(); + @assert pixel 50,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.transform + canvasType: ['OffscreenCanvas'] + images: + - red.png + timeout: long + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 0); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.alpha + canvasType: ['OffscreenCanvas'] + images: + - red.png + timeout: long + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalAlpha = 0; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.clip + canvasType: ['OffscreenCanvas'] + images: + - red.png + timeout: long + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(-10, -10, 1, 1); + ctx.clip(); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.composite + canvasType: ['OffscreenCanvas'] + images: + - red.png + timeout: long + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'destination-over'; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.nowrap + desc: Stretched images do not get pixels wrapping around the edges + canvasType: ['OffscreenCanvas'] + images: + - redtransparent.png + timeout: long + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + ctx.drawImage(bitmap, -1950, 0, 2000, 50); + @assert pixel 45,25 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 55,25 ==~ 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + +- name: 2d.drawImage.nonfinite + desc: drawImage() with Infinity/NaN is ignored + canvasType: ['OffscreenCanvas'] + images: + - red.png + timeout: long + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + createImageBitmap(response).then(bitmap => { + @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); + @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + @assert pixel 50,25 == 0,255,0,255; + }, t_fail); + }).then(t_pass, t_fail); + diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/drawing-rectangles-to-the-canvas.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/drawing-rectangles-to-the-canvas.yaml index 129fe95530a..408e932abe8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/drawing-rectangles-to-the-canvas.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/drawing-rectangles-to-the-canvas.yaml @@ -1,7 +1,5 @@ - name: 2d.clearRect.basic desc: clearRect clears to transparent black - testing: - - 2d.clearRect code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -11,8 +9,6 @@ - name: 2d.clearRect.path desc: clearRect does not affect the current path - testing: - - 2d.clearRect code: | ctx.fillStyle = '#0f0'; ctx.beginPath(); @@ -24,8 +20,6 @@ - name: 2d.clearRect.zero desc: clearRect of zero pixels has no effect - testing: - - 2d.clearRect code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -37,8 +31,6 @@ - name: 2d.clearRect.negative desc: clearRect of negative sizes works - testing: - - 2d.clearRect code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -54,8 +46,6 @@ - name: 2d.clearRect.transform desc: clearRect is affected by transforms - testing: - - 2d.clearRect code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -67,8 +57,6 @@ - name: 2d.clearRect.globalalpha desc: clearRect is not affected by globalAlpha - testing: - - 2d.clearRect code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -79,8 +67,6 @@ - name: 2d.clearRect.globalcomposite desc: clearRect is not affected by globalCompositeOperation - testing: - - 2d.clearRect code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -91,8 +77,6 @@ - name: 2d.clearRect.clip desc: clearRect is affected by clipping regions - testing: - - 2d.clearRect code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -107,8 +91,6 @@ - name: 2d.clearRect.shadow desc: clearRect does not draw shadows - testing: - - 2d.clearRect code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -122,8 +104,6 @@ - name: 2d.clearRect.nonfinite desc: clearRect() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -134,8 +114,6 @@ - name: 2d.fillRect.basic desc: fillRect works - testing: - - 2d.fillRect code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -144,8 +122,6 @@ - name: 2d.fillRect.path desc: fillRect does not affect the current path - testing: - - 2d.fillRect code: | ctx.beginPath(); ctx.rect(0, 0, 100, 50); @@ -158,8 +134,6 @@ - name: 2d.fillRect.zero desc: fillRect of zero pixels has no effect - testing: - - 2d.fillRect code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -172,8 +146,6 @@ - name: 2d.fillRect.negative desc: fillRect of negative sizes works - testing: - - 2d.fillRect code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -190,8 +162,6 @@ - name: 2d.fillRect.transform desc: fillRect is affected by transforms - testing: - - 2d.fillRect code: | ctx.scale(10, 10); ctx.translate(0, 5); @@ -204,8 +174,6 @@ - name: 2d.fillRect.clip desc: fillRect is affected by clipping regions - testing: - - 2d.fillRect code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -221,8 +189,6 @@ - name: 2d.fillRect.shadow desc: fillRect draws shadows - testing: - - 2d.fillRect code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -236,8 +202,6 @@ - name: 2d.fillRect.nonfinite desc: fillRect() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -249,8 +213,6 @@ - name: 2d.strokeRect.basic desc: strokeRect works - testing: - - 2d.strokeRect code: | ctx.strokeStyle = '#0f0'; ctx.lineWidth = 50; @@ -260,8 +222,6 @@ - name: 2d.strokeRect.path desc: strokeRect does not affect the current path - testing: - - 2d.strokeRect code: | ctx.beginPath(); ctx.rect(0, 0, 100, 50); @@ -275,8 +235,6 @@ - name: 2d.strokeRect.zero.1 desc: strokeRect of 0x0 pixels draws nothing - testing: - - 2d.strokeRect code: | ctx.strokeStyle = '#f00'; ctx.lineWidth = 250; @@ -286,8 +244,6 @@ - name: 2d.strokeRect.zero.2 desc: strokeRect of 0x0 pixels draws nothing, including caps and joins - testing: - - 2d.strokeRect code: | ctx.strokeStyle = '#f00'; ctx.lineWidth = 250; @@ -299,8 +255,6 @@ - name: 2d.strokeRect.zero.3 desc: strokeRect of Nx0 pixels draws a straight line - testing: - - 2d.strokeRect code: | ctx.strokeStyle = '#0f0'; ctx.lineWidth = 50; @@ -310,8 +264,6 @@ - name: 2d.strokeRect.zero.4 desc: strokeRect of Nx0 pixels draws a closed line with no caps - testing: - - 2d.strokeRect code: | ctx.strokeStyle = '#f00'; ctx.lineWidth = 250; @@ -322,8 +274,6 @@ - name: 2d.strokeRect.zero.5 desc: strokeRect of Nx0 pixels draws a closed line with joins - testing: - - 2d.strokeRect code: | ctx.strokeStyle = '#0f0'; ctx.lineWidth = 250; @@ -334,8 +284,6 @@ - name: 2d.strokeRect.negative desc: strokeRect of negative sizes works - testing: - - 2d.strokeRect code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -353,8 +301,6 @@ - name: 2d.strokeRect.transform desc: fillRect is affected by transforms - testing: - - 2d.strokeRect code: | ctx.scale(10, 10); ctx.translate(0, 5); @@ -366,8 +312,6 @@ - name: 2d.strokeRect.globalalpha desc: strokeRect is affected by globalAlpha - testing: - - 2d.strokeRect code: | ctx.globalAlpha = 0; ctx.strokeStyle = '#f00'; @@ -378,8 +322,6 @@ - name: 2d.strokeRect.globalcomposite desc: strokeRect is not affected by globalCompositeOperation - testing: - - 2d.strokeRect code: | ctx.globalCompositeOperation = 'source-in'; ctx.strokeStyle = '#f00'; @@ -390,8 +332,6 @@ - name: 2d.strokeRect.clip desc: strokeRect is affected by clipping regions - testing: - - 2d.strokeRect code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -408,8 +348,6 @@ - name: 2d.strokeRect.shadow desc: strokeRect draws shadows - testing: - - 2d.strokeRect code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -426,8 +364,6 @@ - name: 2d.strokeRect.nonfinite desc: strokeRect() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -439,8 +375,6 @@ - name: 2d.fillStyle.colorObject desc: ctx.fillStyle works with color objects - testing: - - 2d.fillRect canvasType: ['HTMLCanvas'] code: | @@ -466,8 +400,6 @@ - name: 2d.fillStyle.colorObject.transparency desc: ctx.fillStyle with color objects has transparency - testing: - - 2d.fillRect canvasType: ['HTMLCanvas'] code: | @@ -490,8 +422,6 @@ - name: 2d.strokeStyle.colorObject desc: ctx.strokeStyle works with color objects - testing: - - 2d.strokeRect canvasType: ['HTMLCanvas'] code: | @@ -518,8 +448,6 @@ - name: 2d.strokeStyle.colorObject.transparency desc: ctx.strokeStyle with color objects has transparency - testing: - - 2d.strokeRect canvasType: ['HTMLCanvas'] code: | @@ -539,5 +467,3 @@ ctx.strokeRect(25, 24, 50, 2); @assert pixel 50,25 == 0,255,0,255; expected: green - - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/filters.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/filters.yaml new file mode 100644 index 00000000000..cc5dfe7fefb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/filters.yaml @@ -0,0 +1,450 @@ +- name: 2d.filter.value + desc: test if ctx.filter works correctly + code: | + @assert ctx.filter == 'none'; + ctx.filter = 'blur(5px)'; + @assert ctx.filter == 'blur(5px)'; + ctx.save(); + ctx.filter = 'none'; + @assert ctx.filter == 'none'; + ctx.restore(); + @assert ctx.filter == 'blur(5px)'; + + ctx.filter = 'blur(10)'; + @assert ctx.filter == 'blur(5px)'; + ctx.filter = 'blur 10px'; + @assert ctx.filter == 'blur(5px)'; + + ctx.filter = 'inherit'; + @assert ctx.filter == 'blur(5px)'; + ctx.filter = 'initial'; + @assert ctx.filter == 'blur(5px)'; + ctx.filter = 'unset'; + @assert ctx.filter == 'blur(5px)'; + + ctx.filter = ''; + @assert ctx.filter == 'blur(5px)'; + ctx.filter = null; + @assert ctx.filter == 'blur(5px)'; + ctx.filter = undefined; + @assert ctx.filter == 'blur(5px)'; + + ctx.filter = 'blur( 5px)'; + assert_equals(ctx.filter, 'blur( 5px)'); + +- name: 2d.filter.canvasFilterObject.tentative + desc: Test CanvasFilter() object + canvasType: + ['HTMLCanvas'] + code: | + @assert ctx.filter == 'none'; + ctx.filter = 'blur(5px)'; + @assert ctx.filter == 'blur(5px)'; + ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); + @assert ctx.filter.toString() == '[object CanvasFilter]'; + ctx.filter = new CanvasFilter([ + {filter: "gaussianBlur", stdDeviation: 5}, + {filter: "gaussianBlur", stdDeviation: 10} + ]); + @assert ctx.filter.toString() == '[object CanvasFilter]'; + var canvas2 = document.createElement('canvas'); + var ctx2 = canvas2.getContext('2d'); + ctx2.filter = ctx.filter; + @assert ctx.filter.toString() == '[object CanvasFilter]'; + ctx.filter = 'blur(5px)'; + @assert ctx.filter == 'blur(5px)'; + ctx.filter = 'none'; + @assert ctx.filter == 'none'; + ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); + ctx.filter = "this string is not a filter and should do nothing"; + @assert ctx.filter.toString() == '[object CanvasFilter]'; + +- name: 2d.filter.canvasFilterObject.tentative + desc: Test CanvasFilter() object + canvasType: ['OffscreenCanvas'] + code: | + @assert ctx.filter == 'none'; + ctx.filter = 'blur(5px)'; + @assert ctx.filter == 'blur(5px)'; + ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); + @assert ctx.filter.toString() == '[object CanvasFilter]'; + ctx.filter = new CanvasFilter([ + {filter: "gaussianBlur", stdDeviation: 5}, + {filter: "gaussianBlur", stdDeviation: 10} + ]); + @assert ctx.filter.toString() == '[object CanvasFilter]'; + var canvas2 = new OffscreenCanvas(100, 50); + var ctx2 = canvas2.getContext('2d'); + ctx2.filter = ctx.filter; + @assert ctx.filter.toString() == '[object CanvasFilter]'; + ctx.filter = 'blur(5px)'; + @assert ctx.filter == 'blur(5px)'; + ctx.filter = 'none'; + @assert ctx.filter == 'none'; + ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); + ctx.filter = "this string is not a filter and should do nothing"; + @assert ctx.filter.toString() == '[object CanvasFilter]'; + +- name: 2d.filter.canvasFilterObject.blur.exceptions.tentative + desc: Test exceptions on CanvasFilter() blur.object + code: | + @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur"}); + @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: undefined}); + @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: "foo"}); + @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: [1,2]}); + @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: NaN}); + @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: {}}); + +- name: 2d.filter.canvasFilterObject.colorMatrix.tentative + desc: Test the functionality of ColorMatrix filters in CanvasFilter objects + code: | + @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: undefined}); + @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: "foo"}); + @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: null}); + @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3]}); + @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, "a"]}); + @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); + ctx.fillStyle = "#f00"; + ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 0}); + ctx.fillRect(0, 0, 100, 50); + @assert pixel 10,10 ==~ 255,0,0,255; + ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 90}); + ctx.fillRect(0, 0, 100, 50); + @assert pixel 10,10 ==~ 0,91,0,255; + ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 180}); + ctx.fillRect(0, 0, 100, 50); + @assert pixel 10,10 ==~ 0,109,109,255; + ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 270}); + ctx.fillRect(0, 0, 100, 50); + @assert pixel 10,10 ==~ 109,18,255,255; + ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "saturate", values: 0.5}); + ctx.fillRect(0, 0, 100, 50); + @assert pixel 10,10 ==~ 155,27,27,255; + ctx.clearRect(0, 0, 100, 50); + ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "luminanceToAlpha"}); + ctx.fillRect(0, 0, 100, 50); + @assert pixel 10,10 ==~ 0,0,0,54; + ctx.filter = new CanvasFilter({filter: "colorMatrix", values: [ + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0 + ]}); + ctx.fillRect(0, 0, 50, 25); + ctx.fillStyle = "#0f0"; + ctx.fillRect(50, 0, 50, 25); + ctx.fillStyle = "#00f"; + ctx.fillRect(0, 25, 50, 25); + ctx.fillStyle = "#fff"; + ctx.fillRect(50, 25, 50, 25); + @assert pixel 10,10 ==~ 0,255,0,255; + @assert pixel 60,10 ==~ 0,255,0,255; + @assert pixel 10,30 ==~ 0,255,0,255; + @assert pixel 60,30 ==~ 0,255,0,255; + +- name: 2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative + desc: Test exceptions on CanvasFilter() convolveMatrix + code: | + @assert throws TypeError new CanvasFilter({filter: "convolveMatrix"}); + @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", divisor: 2}); + @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: null}); + @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: 1}); + @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0]]}); + @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, "a"], [0]]}); + @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); + @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); + @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); + // This should not throw an error + ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]}); + +- name: 2d.filter.canvasFilterObject.componentTransfer.linear.tentative + desc: Test pixels on CanvasFilter() componentTransfer with linear type + code: | + // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement + function getColor(inputColor, slopes, intercepts) { + return [ + Math.max(0, Math.min(1, inputColor[0]/255 * slopes[0] + intercepts[0])) * 255, + Math.max(0, Math.min(1, inputColor[1]/255 * slopes[1] + intercepts[1])) * 255, + Math.max(0, Math.min(1, inputColor[2]/255 * slopes[2] + intercepts[2])) * 255, + ]; + } + + const slopes = [0.5, 1.2, -0.2]; + const intercepts = [0.25, 0, 0.5]; + ctx.filter = new CanvasFilter({filter: "componentTransfer", + funcR: {type: "linear", slope: slopes[0], intercept: intercepts[0]}, + funcG: {type: "linear", slope: slopes[1], intercept: intercepts[1]}, + funcB: {type: "linear", slope: slopes[2], intercept: intercepts[2]}, + }); + + const inputColors = [ + [255, 255, 255], + [0, 0, 0], + [127, 0, 34], + [252, 186, 3], + [50, 68, 87], + ]; + + for (const color of inputColors) { + let outputColor = getColor(color, slopes, intercepts); + ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; + ctx.fillRect(0, 0, 10, 10); + _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, 2); + } + +- name: 2d.filter.canvasFilterObject.componentTransfer.identity.tentative + desc: Test pixels on CanvasFilter() componentTransfer with identity type + code: | + ctx.filter = new CanvasFilter({filter: "componentTransfer", + funcR: {type: "identity"}, + funcG: {type: "identity"}, + funcB: {type: "identity"}, + }); + + const inputColors = [ + [255, 255, 255], + [0, 0, 0], + [127, 0, 34], + [252, 186, 3], + [50, 68, 87], + ]; + + for (const color of inputColors) { + ctx.fillStyle = `rgba(${color[0]}, ${color[1]}, ${color[2]}, 1)`, + ctx.fillRect(0, 0, 10, 10); + _assertPixel(canvas, 5, 5, color[0],color[1],color[2],255); + } + +- name: 2d.filter.canvasFilterObject.componentTransfer.gamma.tentative + desc: Test pixels on CanvasFilter() componentTransfer with gamma type + code: | + // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement + function getColor(inputColor, amplitude, exponent, offset) { + return [ + Math.max(0, Math.min(1, Math.pow(inputColor[0]/255, exponent[0]) * amplitude[0] + offset[0])) * 255, + Math.max(0, Math.min(1, Math.pow(inputColor[1]/255, exponent[1]) * amplitude[1] + offset[1])) * 255, + Math.max(0, Math.min(1, Math.pow(inputColor[2]/255, exponent[2]) * amplitude[2] + offset[2])) * 255, + ]; + } + + const amplitudes = [2, 1.1, 0.5]; + const exponents = [5, 3, 1]; + const offsets = [0.25, 0, 0.5]; + ctx.filter = new CanvasFilter({filter: "componentTransfer", + funcR: {type: "gamma", amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, + funcG: {type: "gamma", amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, + funcB: {type: "gamma", amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, + }); + + const inputColors = [ + [255, 255, 255], + [0, 0, 0], + [127, 0, 34], + [252, 186, 3], + [50, 68, 87], + ]; + + for (const color of inputColors) { + let outputColor = getColor(color, amplitudes, exponents, offsets); + ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; + ctx.fillRect(0, 0, 10, 10); + _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, 2); + } + +- name: 2d.filter.canvasFilterObject.componentTransfer.table.tentative + desc: Test pixels on CanvasFilter() componentTransfer with table type + code: | + // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement + function getTransformedValue(C, V) { + // Get the right interval + const n = V.length - 1; + const k = C == 1 ? n - 1 : Math.floor(C * n); + return V[k] + (C - k/n) * n * (V[k + 1] - V[k]); + } + + function getColor(inputColor, tableValues) { + const result = [0, 0, 0]; + for (const i in inputColor) { + const C = inputColor[i]/255; + const Cprime = getTransformedValue(C, tableValues[i]); + result[i] = Math.max(0, Math.min(1, Cprime)) * 255; + } + return result; + } + + tableValuesR = [0, 0, 1, 1]; + tableValuesG = [2, 0, 0.5, 3]; + tableValuesB = [1, -1, 5, 0]; + ctx.filter = new CanvasFilter({filter: "componentTransfer", + funcR: {type: "table", tableValues: tableValuesR}, + funcG: {type: "table", tableValues: tableValuesG}, + funcB: {type: "table", tableValues: tableValuesB}, + }); + + const inputColors = [ + [255, 255, 255], + [0, 0, 0], + [127, 0, 34], + [252, 186, 3], + [50, 68, 87], + ]; + + for (const color of inputColors) { + let outputColor = getColor(color, [tableValuesR, tableValuesG, tableValuesB]); + ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; + ctx.fillRect(0, 0, 10, 10); + _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, 2); + } + +- name: 2d.filter.canvasFilterObject.componentTransfer.discrete.tentative + desc: Test pixels on CanvasFilter() componentTransfer with discrete type + code: | + // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement + function getTransformedValue(C, V) { + // Get the right interval + const n = V.length; + const k = C == 1 ? n - 1 : Math.floor(C * n); + return V[k]; + } + + function getColor(inputColor, tableValues) { + const result = [0, 0, 0]; + for (const i in inputColor) { + const C = inputColor[i]/255; + const Cprime = getTransformedValue(C, tableValues[i]); + result[i] = Math.max(0, Math.min(1, Cprime)) * 255; + } + return result; + } + + tableValuesR = [0, 0, 1, 1]; + tableValuesG = [2, 0, 0.5, 3]; + tableValuesB = [1, -1, 5, 0]; + ctx.filter = new CanvasFilter({filter: "componentTransfer", + funcR: {type: "discrete", tableValues: tableValuesR}, + funcG: {type: "discrete", tableValues: tableValuesG}, + funcB: {type: "discrete", tableValues: tableValuesB}, + }); + + const inputColors = [ + [255, 255, 255], + [0, 0, 0], + [127, 0, 34], + [252, 186, 3], + [50, 68, 87], + ]; + + for (const color of inputColors) { + let outputColor = getColor(color, [tableValuesR, tableValuesG, tableValuesB]); + ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; + ctx.fillRect(0, 0, 10, 10); + _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, 2); + } + +- name: 2d.filter.canvasFilterObject.turbulence.inputTypes.tentative + desc: Test exceptions on CanvasFilter() turbulence object + code: | + const errorTestCases = [ + {baseFrequency: {}}, + {baseFrequency: -1}, + {baseFrequency: [0, -1]}, + {baseFrequency: NaN}, + {baseFrequency: Infinity}, + {baseFrequency: undefined}, + {baseFrequency: -Infinity}, + {baseFrequency: "test"}, + + {numOctaves: {}}, + {numOctaves: -1}, + {numOctaves: NaN}, + {numOctaves: Infinity}, + {numOctaves: undefined}, + {numOctaves: -Infinity}, + {numOctaves: [1, 1]}, + {numOctaves: "test"}, + + {seed: {}}, + {seed: NaN}, + {seed: Infinity}, + {seed: undefined}, + {seed: -Infinity}, + {seed: [1, 1]}, + {seed: "test"}, + + {stitchTiles: {}}, + {stitchTiles: NaN}, + {stitchTiles: Infinity}, + {stitchTiles: undefined}, + {stitchTiles: -Infinity}, + {stitchTiles: [1, 1]}, + {stitchTiles: "test"}, + {stitchTiles: null}, + {stitchTiles: []}, + {stitchTiles: [10]}, + {stitchTiles: 30}, + {stitchTiles: false}, + {stitchTiles: true}, + {stitchTiles: "10"}, + {stitchTiles: -1}, + + {type: {}}, + {type: NaN}, + {type: Infinity}, + {type: undefined}, + {type: -Infinity}, + {type: [1, 1]}, + {type: "test"}, + {type: null}, + {type: []}, + {type: [10]}, + {type: 30}, + {type: false}, + {type: true}, + {type: "10"}, + {type: -1}, + ] + + // null and [] = 0 when parsed as number + const workingTestCases = [ + {baseFrequency: null}, + {baseFrequency: []}, + {baseFrequency: [10]}, + {baseFrequency: [10, 3]}, + {baseFrequency: 30}, + {baseFrequency: false}, + {baseFrequency: true}, + {baseFrequency: "10"}, + + {numOctaves: null}, + {numOctaves: []}, + {numOctaves: [10]}, + {numOctaves: 30}, + {numOctaves: false}, + {numOctaves: true}, + {numOctaves: "10"}, + + {seed: null}, + {seed: []}, + {seed: [10]}, + {seed: 30}, + {seed: false}, + {seed: true}, + {seed: "10"}, + {seed: -1}, + + {stitchTiles: "stitch"}, + {stitchTiles: "noStitch"}, + + {type: "fractalNoise"}, + {type: "turbulence"}, + ] + + for (testCase of errorTestCases) { + const filterOptions = {...{filter: "turbulence"}, ...testCase}; + @assert throws TypeError CanvasFilter(filterOptions); + } + + for (testCase of workingTestCases) { + const filterOptions = {...{filter: "turbulence"}, ...testCase}; + @assert new CanvasFilter(filterOptions) != null; + } diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/reset.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/reset.yaml similarity index 92% rename from tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/reset.yaml rename to tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/reset.yaml index bd9479c8cf1..4107166248a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/reset.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/reset.yaml @@ -1,5 +1,7 @@ - name: 2d.reset.basic desc: reset clears to transparent black + canvasType: + ['HTMLCanvas'] code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/scroll.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/scroll.yaml similarity index 93% rename from tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/scroll.yaml rename to tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/scroll.yaml index 4c1ec563de7..dd088aa396f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/scroll.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/scroll.yaml @@ -1,7 +1,7 @@ - name: 2d.scrollPathIntoView.basic desc: scrollPathIntoView() works - testing: - - 2d.scrollPathIntoView.basic + canvasType: + ['HTMLCanvas'] code: | var div = document.createElement('div'); div.style.cssText = 'width: 200vw; height: 200vh'; @@ -18,8 +18,8 @@ - name: 2d.scrollPathIntoView.verticalLR desc: scrollPathIntoView() works in vertical-lr writing mode - testing: - - 2d.scrollPathIntoView.basic + canvasType: + ['HTMLCanvas'] code: | document.documentElement.style.cssText = 'writing-mode: vertical-lr'; var div = document.createElement('div'); @@ -37,8 +37,8 @@ - name: 2d.scrollPathIntoView.verticalRL desc: scrollPathIntoView() works in vertical-rl writing mode - testing: - - 2d.scrollPathIntoView.basic + canvasType: + ['HTMLCanvas'] code: | document.documentElement.style.cssText = 'writing-mode: vertical-rl'; var div = document.createElement('div'); @@ -58,8 +58,8 @@ - name: 2d.scrollPathIntoView.path desc: scrollPathIntoView() with path argument works - testing: - - 2d.scrollPathIntoView.basic + canvasType: + ['HTMLCanvas'] code: | var div = document.createElement('div'); div.style.cssText = 'width: 200vw; height: 200vh'; diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/video.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/video.yaml similarity index 89% rename from tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/video.yaml rename to tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/video.yaml index c419107e58b..f9b48fb8daa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/video.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/video.yaml @@ -1,7 +1,7 @@ - name: 2d.video.invalid desc: Verify test doesn't crash with invalid video. - testing: - - 2d.video.invalid + canvasType: + ['HTMLCanvas'] code: | var v = document.createElement('video'); v.play(); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-images-to-the-canvas.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-images-to-the-canvas.yaml deleted file mode 100644 index 133807fb285..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-images-to-the-canvas.yaml +++ /dev/null @@ -1,617 +0,0 @@ -- name: 2d.drawImage.3arg - testing: - - 2d.drawImage.defaultsource - - 2d.drawImage.defaultdest - images: - - red.png - - green.png - code: | - ctx.drawImage(document.getElementById('green.png'), 0, 0); - ctx.drawImage(document.getElementById('red.png'), -100, 0); - ctx.drawImage(document.getElementById('red.png'), 100, 0); - ctx.drawImage(document.getElementById('red.png'), 0, -50); - ctx.drawImage(document.getElementById('red.png'), 0, 50); - - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.5arg - testing: - - 2d.drawImage.defaultsource - images: - - red.png - - green.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('green.png'), 50, 0, 50, 50); - ctx.drawImage(document.getElementById('red.png'), 0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50); - - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.9arg.basic - testing: - - 2d.drawImage.paint - images: - - green.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('green.png'), 0, 0, 100, 50, 0, 0, 100, 50); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.9arg.sourcepos - testing: - - 2d.drawImage.paint - images: - - rgrg-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('rgrg-256x256.png'), 140, 20, 100, 50, 0, 0, 100, 50); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.9arg.sourcesize - testing: - - 2d.drawImage.paint - images: - - rgrg-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('rgrg-256x256.png'), 0, 0, 256, 256, 0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 51, 26); - ctx.fillRect(49, 24, 51, 26); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - @assert pixel 20,20 ==~ 0,255,0,255; - @assert pixel 80,20 ==~ 0,255,0,255; - @assert pixel 20,30 ==~ 0,255,0,255; - @assert pixel 80,30 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.9arg.destpos - testing: - - 2d.drawImage.paint - images: - - red.png - - green.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('green.png'), 0, 0, 100, 50, 0, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, -100, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 100, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, -50, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, 50, 100, 50); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.9arg.destsize - testing: - - 2d.drawImage.paint - images: - - red.png - - green.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('green.png'), 1, 1, 1, 1, 0, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, -50, 0, 50, 50); - ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 100, 0, 50, 50); - ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, -25, 100, 25); - ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50, 0, 50, 100, 25); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.canvas - testing: - - 2d.drawImage.paint - code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#0f0'; - ctx2.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#f00'; - ctx.drawImage(canvas2, 0, 0); - - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - - ctx.drawImage(document.createElement('canvas'), 0, 0); - - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.self.1 - testing: - - 2d.drawImage.self - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50); - ctx.drawImage(canvas, 50, 0); - - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.self.2 - testing: - - 2d.drawImage.self - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 1, 100, 49); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 1); - ctx.drawImage(canvas, 0, 1); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 2); - - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.null - testing: - - 2d.drawImage.IDL - code: | - @assert throws TypeError ctx.drawImage(null, 0, 0); - -- name: 2d.drawImage.wrongtype - desc: Incorrect image types in drawImage do not match any defined overloads, so - WebIDL throws a TypeError - notes: &bindings Defined in "Web IDL" (draft) - testing: - - 2d.drawImage.IDL - code: | - @assert throws TypeError ctx.drawImage(undefined, 0, 0); - @assert throws TypeError ctx.drawImage(0, 0, 0); - @assert throws TypeError ctx.drawImage("", 0, 0); - @assert throws TypeError ctx.drawImage(document.createElement('p'), 0, 0); - -- name: 2d.drawImage.floatsource - testing: - - 2d.drawImage.paint - images: - - green.png - code: | - ctx.drawImage(document.getElementById('green.png'), 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.zerosource - desc: drawImage with zero-sized source rectangle draws nothing without exception - testing: - - 2d.drawImage.zerosource - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 1, 0, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 10, 10, 1, 0, 0, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 0, 0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.zerosource.image - desc: drawImage with zero-sized source rectangle from image draws nothing without exception - testing: - - 2d.drawImage.zerosource - images: - - red-zerowidth.svg - - red-zeroheight.svg - - red-zerosize.svg - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('red-zerowidth.svg'), 0, 0, 100, 50); - ctx.drawImage(document.getElementById('red-zeroheight.svg'), 0, 0, 100, 50); - ctx.drawImage(document.getElementById('red-zerosize.svg'), 0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - expected: green - -- name: 2d.drawImage.negativesource - desc: Negative source width/height represents the correct rectangle - testing: - - 2d.drawImage.direction - mozilla: {throws: !!null ''} - images: - - ggrr-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 78, -100, 50, 0, 0, 50, 50); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 128, -100, -50, 50, 0, 50, 50); - @assert pixel 1,1 ==~ 0,255,0,255; - @assert pixel 1,48 ==~ 0,255,0,255; - @assert pixel 98,1 ==~ 0,255,0,255; - @assert pixel 98,48 ==~ 0,255,0,255; - @assert pixel 48,1 ==~ 0,255,0,255; - @assert pixel 48,48 ==~ 0,255,0,255; - @assert pixel 51,1 ==~ 0,255,0,255; - @assert pixel 51,48 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.negativedest - desc: Negative destination width/height represents the correct rectangle - testing: - - 2d.drawImage.direction - mozilla: {throws: !!null ''} - images: - - ggrr-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 78, 50, 50, 0, 50, 50, -50); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 128, 50, -50, 100, 50, -50, -50); - @assert pixel 1,1 ==~ 0,255,0,255; - @assert pixel 1,48 ==~ 0,255,0,255; - @assert pixel 98,1 ==~ 0,255,0,255; - @assert pixel 98,48 ==~ 0,255,0,255; - @assert pixel 48,1 ==~ 0,255,0,255; - @assert pixel 48,48 ==~ 0,255,0,255; - @assert pixel 51,1 ==~ 0,255,0,255; - @assert pixel 51,48 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.negativedir - desc: Negative dimensions do not affect the direction of the image - testing: - - 2d.drawImage.direction - mozilla: {throws: !!null ''} - images: - - ggrr-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 0, 178, 50, -100, 0, 0, 50, 100); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 0, 78, 50, 100, 50, 100, 50, -100); - @assert pixel 1,1 ==~ 0,255,0,255; - @assert pixel 1,48 ==~ 0,255,0,255; - @assert pixel 98,1 ==~ 0,255,0,255; - @assert pixel 98,48 ==~ 0,255,0,255; - @assert pixel 48,1 ==~ 0,255,0,255; - @assert pixel 48,48 ==~ 0,255,0,255; - @assert pixel 51,1 ==~ 0,255,0,255; - @assert pixel 51,48 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.outsidesource - DISABLED: fix this to match the current spec (transparent black outside source) - testing: - - 2d.drawImage.outsidesource - mozilla: {throws: !!null ''} - images: - - green.png - - red.png - code: | - ctx.drawImage(document.getElementById('green.png'), 10.5, 10.5, 89.5, 39.5, 0, 0, 100, 50); - ctx.drawImage(document.getElementById('green.png'), 5.5, 5.5, -5.5, -5.5, 0, 0, 100, 50); - ctx.drawImage(document.getElementById('green.png'), 100, 50, -5, -5, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), -0.001, 0, 100, 50, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 0, -0.001, 100, 50, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 0, 0, 100.001, 50, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 0, 0, 100, 50.001, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 50, 0, 50.001, 50, 0, 0, 100, 50); @moz-todo - @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 0, 0, -5, 5, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 0, 0, 5, -5, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 110, 60, -20, -20, 0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - expected: green - -- name: 2d.drawImage.incomplete.nosrc - testing: - - 2d.drawImage.incomplete.image - mozilla: {throws: !!null ''} - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var img = new Image(); - ctx.drawImage(img, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.incomplete.immediate - testing: - - 2d.drawImage.incomplete.image - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var img = new Image(); - img.src = '../images/red.png'; - // This triggers the "update the image data" algorithm. - // The image will not go to the "completely available" state - // until a fetch task in the networking task source is processed, - // so the image must not be fully decodable yet: - ctx.drawImage(img, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - expected: green - -- name: 2d.drawImage.incomplete.reload - testing: - - 2d.drawImage.incomplete.image - images: - - yellow.png - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('yellow.png'); - img.src = '../images/red.png'; - // This triggers the "update the image data" algorithm, - // and resets the image to the "unavailable" state. - // The image will not go to the "completely available" state - // until a fetch task in the networking task source is processed, - // so the image must not be fully decodable yet: - ctx.drawImage(img, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - expected: green - -- name: 2d.drawImage.incomplete.emptysrc - testing: - - 2d.drawImage.incomplete.image - images: - - red.png - mozilla: {throws: !!null ''} - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('red.png'); - img.src = ""; - ctx.drawImage(img, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.incomplete.removedsrc - testing: - - 2d.drawImage.incomplete.image - images: - - red.png - mozilla: {throws: !!null ''} - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('red.png'); - img.removeAttribute('src'); - ctx.drawImage(img, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.broken - testing: - - 2d.drawImage.incomplete.image - images: - - broken.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('broken.png'); - ctx.drawImage(img, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - expected: green - -- name: 2d.drawImage.nonexistent - testing: - - 2d.drawImage.incomplete.image - images: - - not-found-at-all.png - code: | - var img = document.getElementById('not-found-at-all.png'); - @assert throws INVALID_STATE_ERR ctx.drawImage(img, 0, 0); - -- name: 2d.drawImage.zerocanvas - desc: drawImage with zero-sized canvas as the source shoud throw exception - testing: - - 2d.drawImage.zerocanvas - code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 0; - canvas2.height = 50; - @assert throws INVALID_STATE_ERR ctx.drawImage(canvas2, 0, 0); - - canvas2.width = 50; - canvas2.height = 0; - @assert throws INVALID_STATE_ERR ctx.drawImage(canvas2, 0, 0); - - canvas2.width = 0; - canvas2.height = 0; - @assert throws INVALID_STATE_ERR ctx.drawImage(canvas2, 0, 0); - -- name: 2d.drawImage.svg - desc: drawImage() of an SVG image - testing: - - 2d.drawImage.svg - images: - - green.svg - code: | - ctx.drawImage(document.getElementById('green.svg'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.animated.gif - desc: drawImage() of an animated GIF draws the first frame - testing: - - 2d.drawImage.animated.image - images: - - anim-gr.gif - code: | - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.drawImage(document.getElementById('anim-gr.gif'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - }), 500); - expected: green - -- name: 2d.drawImage.animated.apng - desc: drawImage() of an APNG with no poster frame draws the first frame - testing: - - 2d.drawImage.animated.image - images: - - anim-gr.png - code: | - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.drawImage(document.getElementById('anim-gr.png'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - }), 500); - expected: green - -- name: 2d.drawImage.animated.poster - desc: drawImage() of an APNG draws the poster frame - testing: - - 2d.drawImage.animated.image - images: - - anim-poster-gr.png - code: | - ctx.drawImage(document.getElementById('anim-poster-gr.png'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - expected: green - -- name: 2d.drawImage.path - testing: - - 2d.drawImage.unaffect - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.rect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 0, 0); - ctx.fill(); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.transform - testing: - - 2d.drawImage.subject - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 0); - ctx.drawImage(document.getElementById('red.png'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -# TODO: drawImage shadows - -- name: 2d.drawImage.alpha - testing: - - 2d.drawImage.subject - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalAlpha = 0; - ctx.drawImage(document.getElementById('red.png'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.clip - testing: - - 2d.drawImage.subject - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.rect(-10, -10, 1, 1); - ctx.clip(); - ctx.drawImage(document.getElementById('red.png'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.composite - testing: - - 2d.drawImage.subject - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = 'destination-over'; - ctx.drawImage(document.getElementById('red.png'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.nowrap - desc: Stretched images do not get pixels wrapping around the edges - images: - - redtransparent.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('redtransparent.png'), -1950, 0, 2000, 50); - @assert pixel 45,25 ==~ 0,255,0,255; - @assert pixel 50,25 ==~ 0,255,0,255; - @assert pixel 55,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.nonfinite - desc: drawImage() with Infinity/NaN is ignored - testing: - - 2d.nonfinite - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var red = document.getElementById('red.png'); - @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); - @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); - @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); - @assert pixel 50,25 == 0,255,0,255; - expected: green - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml index 686bd0763f2..880e3fb1a1f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml @@ -1,9 +1,6 @@ - name: 2d.text.draw.fill.basic desc: fillText draws filled text manual: - testing: - - 2d.text.draw - - 2d.text.draw.fill code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -25,8 +22,6 @@ - name: 2d.text.draw.fill.unaffected desc: fillText does not start a new path or subpath - testing: - - 2d.text.draw.fill code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -49,8 +44,6 @@ - name: 2d.text.draw.fill.rtl desc: fillText respects Right-To-Left Override characters manual: - testing: - - 2d.text.draw code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -62,8 +55,6 @@ - name: 2d.text.draw.fill.maxWidth.large desc: fillText handles maxWidth correctly manual: - testing: - - 2d.text.draw.maxwidth code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -73,8 +64,6 @@ expected: *passfill - name: 2d.text.draw.fill.maxWidth.small desc: fillText handles maxWidth correctly - testing: - - 2d.text.draw.maxwidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -86,8 +75,6 @@ - name: 2d.text.draw.fill.maxWidth.zero desc: fillText handles maxWidth correctly - testing: - - 2d.text.draw.maxwidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -99,8 +86,6 @@ - name: 2d.text.draw.fill.maxWidth.negative desc: fillText handles maxWidth correctly - testing: - - 2d.text.draw.maxwidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -112,8 +97,6 @@ - name: 2d.text.draw.fill.maxWidth.NaN desc: fillText handles maxWidth correctly - testing: - - 2d.text.draw.maxwidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -126,9 +109,6 @@ - name: 2d.text.draw.stroke.basic desc: strokeText draws stroked text manual: - testing: - - 2d.text.draw - - 2d.text.draw.stroke code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -152,8 +132,6 @@ - name: 2d.text.draw.stroke.unaffected desc: strokeText does not start a new path or subpath - testing: - - 2d.text.draw.stroke code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -177,8 +155,6 @@ - name: 2d.text.draw.kern.consistent desc: Stroked and filled text should have exactly the same kerning so it overlaps manual: - testing: - - 2d.text.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -212,8 +188,6 @@ - name: 2d.text.draw.fill.maxWidth.fontface desc: fillText works on @font-face fonts - testing: - - 2d.text.draw.maxwidth fonts: - CanvasTest code: | @@ -233,8 +207,6 @@ - name: 2d.text.draw.fill.maxWidth.bound desc: fillText handles maxWidth based on line size, not bounding box size - testing: - - 2d.text.draw.maxwidth fonts: - CanvasTest code: | @@ -253,8 +225,6 @@ expected: green - name: 2d.text.draw.fontface - testing: - - 2d.text.font.fontface fonts: - CanvasTest code: | @@ -275,8 +245,6 @@ - name: 2d.text.draw.fontface.repeat desc: Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.) - testing: - - 2d.text.font.fontface fonts: - CanvasTest fonthack: 0 @@ -298,8 +266,6 @@ - name: 2d.text.draw.fontface.notinpage desc: '@font-face fonts should work even if they are not used in the page' - testing: - - 2d.text.font.fontface fonts: - CanvasTest fonthack: 0 @@ -320,8 +286,6 @@ - name: 2d.text.draw.align.left desc: textAlign left is the left of the first em square (not the bounding box) - testing: - - 2d.text.align.left fonts: - CanvasTest code: | @@ -344,8 +308,6 @@ - name: 2d.text.draw.align.right desc: textAlign right is the right of the last em square (not the bounding box) - testing: - - 2d.text.align.right fonts: - CanvasTest code: | @@ -368,8 +330,6 @@ - name: 2d.text.draw.align.start.ltr desc: textAlign start with ltr is the left edge - testing: - - 2d.text.align.left fonts: - CanvasTest canvas: width="100" height="50" dir="ltr" @@ -393,9 +353,6 @@ - name: 2d.text.draw.align.start.rtl desc: textAlign start with rtl is the right edge - testing: - - 2d.text.align.right - - 2d.text.draw.direction fonts: - CanvasTest canvas: width="100" height="50" dir="rtl" @@ -419,8 +376,6 @@ - name: 2d.text.draw.align.end.ltr desc: textAlign end with ltr is the right edge - testing: - - 2d.text.align.right fonts: - CanvasTest canvas: width="100" height="50" dir="ltr" @@ -444,9 +399,6 @@ - name: 2d.text.draw.align.end.rtl desc: textAlign end with rtl is the left edge - testing: - - 2d.text.align.left - - 2d.text.draw.direction fonts: - CanvasTest canvas: width="100" height="50" dir="rtl" @@ -470,8 +422,6 @@ - name: 2d.text.draw.align.center desc: textAlign center is the center of the em squares (not the bounding box) - testing: - - 2d.text.align.center fonts: - CanvasTest code: | @@ -495,8 +445,6 @@ - name: 2d.text.draw.space.basic desc: U+0020 is rendered the correct size (1em wide) - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -514,8 +462,6 @@ - name: 2d.text.draw.space.collapse.nonspace desc: Non-space characters are not converted to U+0020 and collapsed - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -533,8 +479,6 @@ - name: 2d.text.measure.width.basic desc: The width of character is same as font used - testing: - - 2d.text.measure fonts: - CanvasTest code: | @@ -555,8 +499,6 @@ - name: 2d.text.measure.width.empty desc: The empty string has zero width - testing: - - 2d.text.measure fonts: - CanvasTest code: | @@ -572,8 +514,6 @@ - name: 2d.text.measure.advances desc: Testing width advances - testing: - - 2d.text.measure.advances fonts: - CanvasTest code: | @@ -604,8 +544,6 @@ - name: 2d.text.measure.actualBoundingBox desc: Testing actualBoundingBox - testing: - - 2d.text.measure.actualBoundingBox fonts: - CanvasTest code: | @@ -644,8 +582,6 @@ - name: 2d.text.measure.fontBoundingBox desc: Testing fontBoundingBox - testing: - - 2d.text.measure.fontBoundingBox fonts: - CanvasTest code: | @@ -667,8 +603,6 @@ - name: 2d.text.measure.fontBoundingBox.ahem desc: Testing fontBoundingBox for font ahem - testing: - - 2d.text.measure.fontBoundingBox fonts: - Ahem code: | @@ -690,8 +624,6 @@ - name: 2d.text.measure.emHeights desc: Testing emHeights - testing: - - 2d.text.measure.emHeights fonts: - CanvasTest code: | @@ -715,8 +647,6 @@ - name: 2d.text.measure.baselines desc: Testing baselines - testing: - - 2d.text.measure.baselines fonts: - CanvasTest code: | @@ -740,8 +670,6 @@ - name: 2d.text.drawing.style.spacing desc: Testing letter spacing and word spacing - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -766,8 +694,6 @@ - name: 2d.text.drawing.style.nonfinite.spacing desc: Testing letter spacing and word spacing with nonfinite inputs - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -782,8 +708,6 @@ - name: 2d.text.drawing.style.invalid.spacing desc: Testing letter spacing and word spacing with invalid units - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -798,8 +722,6 @@ - name: 2d.text.drawing.style.letterSpacing.measure desc: Testing letter spacing and word spacing - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -832,8 +754,6 @@ - name: 2d.text.drawing.style.wordSpacing.measure desc: Testing if word spacing is working properly - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -866,8 +786,6 @@ - name: 2d.text.drawing.style.letterSpacing.change.font desc: Set letter spacing and word spacing to font dependent value and verify it works after font change. - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -892,8 +810,6 @@ - name: 2d.text.drawing.style.wordSpacing.change.font desc: Set word spacing and word spacing to font dependent value and verify it works after font change. - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -918,22 +834,18 @@ - name: 2d.text.drawing.style.fontKerning desc: Testing basic functionalities of fontKerning for canvas - testing: - - 2d.text.drawing.style.fontKerning code: | @assert ctx.fontKerning === "auto"; - ctx.fontKerning = "Normal"; + ctx.fontKerning = "normal"; @assert ctx.fontKerning === "normal"; width_normal = ctx.measureText("TAWATAVA").width; - ctx.fontKerning = "None"; + ctx.fontKerning = "none"; @assert ctx.fontKerning === "none"; width_none = ctx.measureText("TAWATAVA").width; @assert width_normal < width_none; - name: 2d.text.drawing.style.fontKerning.with.uppercase desc: Testing basic functionalities of fontKerning for canvas - testing: - - 2d.text.drawing.style.fontKerning code: | @assert ctx.fontKerning === "auto"; ctx.fontKerning = "Normal"; @@ -968,8 +880,6 @@ - name: 2d.text.drawing.style.fontVariant.settings desc: Testing basic functionalities of fontKerning for canvas - testing: - - 2d.text.drawing.style.fontVariantCaps code: | // Setting fontVariantCaps with lower cases @assert ctx.fontVariantCaps === "normal"; @@ -1023,8 +933,6 @@ - name: 2d.text.drawing.style.textRendering.settings desc: Testing basic functionalities of textRendering in Canvas - testing: - - 2d.text.drawing.style.textRendering code: | // Setting textRendering with lower cases @assert ctx.textRendering === "auto"; @@ -1058,4 +966,4 @@ ctx.textRendering = "abcd"; @assert ctx.textRendering === "geometricPrecision"; -# TODO: shadows, alpha, composite, clip \ No newline at end of file +# TODO: shadows, alpha, composite, clip diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/fill-and-stroke-styles.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/fill-and-stroke-styles.yaml index f52a3e24c61..fe7b8841ae9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/fill-and-stroke-styles.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/fill-and-stroke-styles.yaml @@ -1,8 +1,5 @@ - name: 2d.fillStyle.parse.current.basic desc: currentColor is computed from the canvas element - testing: - - 2d.colours.parse - - 2d.currentColor.onset code: | canvas.setAttribute('style', 'color: #0f0'); ctx.fillStyle = '#f00'; @@ -13,9 +10,6 @@ - name: 2d.fillStyle.parse.current.changed desc: currentColor is computed when the attribute is set, not when it is painted - testing: - - 2d.colours.parse - - 2d.currentColor.onset code: | canvas.setAttribute('style', 'color: #0f0'); ctx.fillStyle = '#f00'; @@ -27,9 +21,6 @@ - name: 2d.fillStyle.parse.current.removed desc: currentColor is solid black when the canvas element is not in a document - testing: - - 2d.colours.parse - - 2d.currentColor.outofdoc code: | // Try not to let it undetectably incorrectly pick up opaque-black // from other parts of the document: @@ -55,8 +46,6 @@ cr.fill() - name: 2d.fillStyle.invalidstring - testing: - - 2d.colours.invalidstring code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -67,8 +56,6 @@ expected: green - name: 2d.fillStyle.invalidtype - testing: - - 2d.colours.invalidtype code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -79,39 +66,31 @@ expected: green - name: 2d.fillStyle.get.solid - testing: - - 2d.colours.getcolour - - 2d.serializecolour.solid code: | ctx.fillStyle = '#fa0'; @assert ctx.fillStyle === '#ffaa00'; - name: 2d.fillStyle.get.semitransparent - testing: - - 2d.colours.getcolour - - 2d.serializecolour.transparent code: | ctx.fillStyle = 'rgba(255,255,255,0.45)'; @assert ctx.fillStyle =~ /^rgba\(255, 255, 255, 0\.4\d+\)$/; +- name: 2d.fillStyle.get.halftransparent + code: | + ctx.fillStyle = 'rgba(255,255,255,0.5)'; + @assert ctx.fillStyle === 'rgba(255, 255, 255, 0.5)'; + - name: 2d.fillStyle.get.transparent - testing: - - 2d.colours.getcolour - - 2d.serializecolour.transparent code: | ctx.fillStyle = 'rgba(0,0,0,0)'; @assert ctx.fillStyle === 'rgba(0, 0, 0, 0)'; - name: 2d.fillStyle.default - testing: - - 2d.colours.default code: | @assert ctx.fillStyle === '#000000'; - name: 2d.fillStyle.toStringFunctionCallback desc: Passing a function in to ctx.fillStyle or ctx.strokeStyle with a toString callback works as specified - testing: - 2d.colours.toStringFunctionCallback code: | ctx.fillStyle = { toString: function() { return "#008000"; } }; @assert ctx.fillStyle === "#008000"; @@ -129,16 +108,12 @@ @assert throws TypeError ctx.strokeStyle = { toString: function() { throw new TypeError; } }; - name: 2d.strokeStyle.default - testing: - - 2d.colours.default code: | @assert ctx.strokeStyle === '#000000'; - name: 2d.gradient.object.type desc: window.CanvasGradient exists and has the right properties - testing: - - 2d.canvasGradient.type notes: &bindings Defined in "Web IDL" (draft) code: | @assert window.CanvasGradient !== undefined; @@ -147,9 +122,6 @@ - name: 2d.gradient.object.return desc: createLinearGradient() and createRadialGradient() returns objects implementing CanvasGradient - testing: - - 2d.gradient.linear.return - - 2d.gradient.radial.return code: | window.CanvasGradient.prototype.thisImplementsCanvasGradient = true; @@ -162,8 +134,6 @@ @assert g2.thisImplementsCanvasGradient === true; - name: 2d.gradient.interpolate.solid - testing: - - 2d.gradient.interpolate.linear code: | var g = ctx.createLinearGradient(0, 0, 100, 0); g.addColorStop(0, '#0f0'); @@ -173,9 +143,7 @@ @assert pixel 50,25 == 0,255,0,255; expected: green -- name: 2d.gradient.interpolate.colour - testing: - - 2d.gradient.interpolate.linear +- name: 2d.gradient.interpolate.color code: | var g = ctx.createLinearGradient(0, 0, 100, 0); g.addColorStop(0, '#ff0'); @@ -195,8 +163,6 @@ cr.fill() - name: 2d.gradient.interpolate.alpha - testing: - - 2d.gradient.interpolate.linear code: | ctx.fillStyle = '#ff0'; ctx.fillRect(0, 0, 100, 50); @@ -217,9 +183,7 @@ cr.rectangle(0, 0, 100, 50) cr.fill() -- name: 2d.gradient.interpolate.colouralpha - testing: - - 2d.gradient.interpolate.alpha +- name: 2d.gradient.interpolate.coloralpha code: | var g = ctx.createLinearGradient(0, 0, 100, 0); g.addColorStop(0, 'rgba(255,255,0, 0)'); @@ -239,9 +203,6 @@ cr.fill() - name: 2d.gradient.interpolate.outside - testing: - - 2d.gradient.outside.first - - 2d.gradient.outside.last code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -258,8 +219,6 @@ expected: green - name: 2d.gradient.interpolate.zerosize.fill - testing: - - 2d.gradient.linear.zerosize code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -274,8 +233,6 @@ expected: green - name: 2d.gradient.interpolate.zerosize.stroke - testing: - - 2d.gradient.linear.zerosize code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -298,8 +255,6 @@ expected: green - name: 2d.gradient.interpolate.zerosize.fillRect - testing: - - 2d.gradient.linear.zerosize code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -313,8 +268,6 @@ expected: green - name: 2d.gradient.interpolate.zerosize.strokeRect - testing: - - 2d.gradient.linear.zerosize code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -336,8 +289,6 @@ expected: green - name: 2d.gradient.interpolate.zerosize.fillText - testing: - - 2d.gradient.linear.zerosize code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -352,8 +303,6 @@ expected: green - name: 2d.gradient.interpolate.zerosize.strokeText - testing: - - 2d.gradient.linear.zerosize code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -369,8 +318,6 @@ - name: 2d.gradient.interpolate.vertical - testing: - - 2d.gradient.interpolate.linear code: | var g = ctx.createLinearGradient(0, 0, 0, 50); g.addColorStop(0, '#ff0'); @@ -390,8 +337,6 @@ cr.fill() - name: 2d.gradient.interpolate.multiple - testing: - - 2d.gradient.interpolate.linear code: | canvas.width = 200; var g = ctx.createLinearGradient(0, 0, 200, 0); @@ -414,8 +359,6 @@ cr.fill() - name: 2d.gradient.interpolate.overlap - testing: - - 2d.gradient.interpolate.overlap code: | canvas.width = 200; var g = ctx.createLinearGradient(0, 0, 200, 0); @@ -474,8 +417,6 @@ cr.fill() - name: 2d.gradient.interpolate.overlap2 - testing: - - 2d.gradient.interpolate.overlap code: | var g = ctx.createLinearGradient(0, 0, 100, 0); var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ]; @@ -496,8 +437,6 @@ expected: green - name: 2d.gradient.empty - testing: - - 2d.gradient.empty code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -508,8 +447,6 @@ expected: green - name: 2d.gradient.object.update - testing: - - 2d.gradient.update code: | var g = ctx.createLinearGradient(-100, 0, 200, 0); g.addColorStop(0, '#f00'); @@ -522,8 +459,6 @@ expected: green - name: 2d.gradient.object.compare - testing: - - 2d.gradient.object code: | var g1 = ctx.createLinearGradient(0, 0, 100, 0); var g2 = ctx.createLinearGradient(0, 0, 100, 0); @@ -544,8 +479,6 @@ expected: green - name: 2d.gradient.object.current - testing: - - 2d.currentColor.gradient code: | canvas.setAttribute('style', 'color: #f00'); @@ -565,8 +498,6 @@ cr.fill() - name: 2d.gradient.object.invalidoffset - testing: - - 2d.gradient.invalidoffset code: | var g = ctx.createLinearGradient(0, 0, 100, 0); @assert throws INDEX_SIZE_ERR g.addColorStop(-1, '#000'); @@ -575,9 +506,7 @@ @assert throws TypeError g.addColorStop(-Infinity, '#000'); @assert throws TypeError g.addColorStop(NaN, '#000'); -- name: 2d.gradient.object.invalidcolour - testing: - - 2d.gradient.invalidcolour +- name: 2d.gradient.object.invalidcolor code: | var g = ctx.createLinearGradient(0, 0, 100, 0); @assert throws SYNTAX_ERR g.addColorStop(0, ""); @@ -599,16 +528,12 @@ - name: 2d.gradient.linear.nonfinite desc: createLinearGradient() throws TypeError if arguments are not finite notes: *bindings - testing: - - 2d.gradient.linear.nonfinite code: | @nonfinite @assert throws TypeError ctx.createLinearGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); - name: 2d.gradient.linear.transform.1 desc: Linear gradient coordinates are relative to the coordinate space at the time of filling - testing: - - 2d.gradient.linear.transform code: | var g = ctx.createLinearGradient(0, 0, 200, 0); g.addColorStop(0, '#f00'); @@ -626,8 +551,6 @@ - name: 2d.gradient.linear.transform.2 desc: Linear gradient coordinates are relative to the coordinate space at the time of filling - testing: - - 2d.gradient.linear.transform code: | ctx.translate(100, 0); var g = ctx.createLinearGradient(0, 0, 200, 0); @@ -645,8 +568,6 @@ - name: 2d.gradient.linear.transform.3 desc: Linear gradient transforms do not experience broken caching effects - testing: - - 2d.gradient.linear.transform code: | var g = ctx.createLinearGradient(0, 0, 200, 0); g.addColorStop(0, '#f00'); @@ -664,8 +585,6 @@ - name: 2d.gradient.radial.negative desc: createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative - testing: - - 2d.gradient.radial.negative code: | @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); @@ -674,14 +593,10 @@ - name: 2d.gradient.radial.nonfinite desc: createRadialGradient() throws TypeError if arguments are not finite notes: *bindings - testing: - - 2d.gradient.radial.nonfinite code: | @nonfinite @assert throws TypeError ctx.createRadialGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>); - name: 2d.gradient.radial.inside1 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -704,8 +619,6 @@ expected: green - name: 2d.gradient.radial.inside2 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -728,8 +641,6 @@ expected: green - name: 2d.gradient.radial.inside3 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -753,8 +664,6 @@ expected: green - name: 2d.gradient.radial.outside1 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -777,8 +686,6 @@ expected: green - name: 2d.gradient.radial.outside2 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -801,8 +708,6 @@ expected: green - name: 2d.gradient.radial.outside3 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -826,8 +731,6 @@ expected: green - name: 2d.gradient.radial.touch1 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -850,8 +753,6 @@ expected: green - name: 2d.gradient.radial.touch2 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -876,8 +777,6 @@ expected: green - name: 2d.gradient.radial.touch3 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -900,8 +799,6 @@ expected: green - name: 2d.gradient.radial.equal - testing: - - 2d.gradient.radial.equal code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -924,8 +821,6 @@ expected: green - name: 2d.gradient.radial.cone.behind - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -948,8 +843,6 @@ expected: green - name: 2d.gradient.radial.cone.front - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -972,8 +865,6 @@ expected: green - name: 2d.gradient.radial.cone.bottom - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -996,8 +887,6 @@ expected: green - name: 2d.gradient.radial.cone.top - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1020,8 +909,6 @@ expected: green - name: 2d.gradient.radial.cone.beside - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1044,8 +931,6 @@ expected: green - name: 2d.gradient.radial.cone.cylinder - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1068,8 +953,6 @@ expected: green - name: 2d.gradient.radial.cone.shape1 - testing: - - 2d.gradient.radial.rendering code: | var tol = 1; // tolerance to avoid antialiasing artifacts @@ -1101,8 +984,6 @@ expected: green - name: 2d.gradient.radial.cone.shape2 - testing: - - 2d.gradient.radial.rendering code: | var tol = 1; // tolerance to avoid antialiasing artifacts @@ -1136,8 +1017,6 @@ - name: 2d.gradient.radial.transform.1 desc: Radial gradient coordinates are relative to the coordinate space at the time of filling - testing: - - 2d.gradient.radial.transform code: | var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); g.addColorStop(0, '#0f0'); @@ -1156,8 +1035,6 @@ - name: 2d.gradient.radial.transform.2 desc: Radial gradient coordinates are relative to the coordinate space at the time of filling - testing: - - 2d.gradient.radial.transform code: | ctx.translate(100, 0); var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); @@ -1176,8 +1053,6 @@ - name: 2d.gradient.radial.transform.3 desc: Radial gradient transforms do not experience broken caching effects - testing: - - 2d.gradient.radial.transform code: | var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); g.addColorStop(0, '#0f0'); @@ -1205,8 +1080,8 @@ g.addColorStop(0.75, "#f00"); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); - @assert pixel 25,15 == 255,0,0,255; - @assert pixel 75,40 == 0,255,0,255; + @assert pixel 25,15 ==~ 255,0,0,255 +/- 3; + @assert pixel 75,40 ==~ 0,255,0,255 +/- 3; expected: green - name: 2d.gradient.conic.negative.rotation @@ -1220,8 +1095,8 @@ g.addColorStop(0.75, "#f00"); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); - @assert pixel 25,15 == 255,0,0,255; - @assert pixel 75,40 == 0,255,0,255; + @assert pixel 25,15 ==~ 255,0,0,255 +/- 3; + @assert pixel 75,40 ==~ 0,255,0,255 +/- 3; expected: green - name: 2d.gradient.conic.invalid.inputs @@ -1234,8 +1109,6 @@ @nonfinite @assert throws SYNTAX_ERR g.addColorStop(<0>, ); - name: 2d.pattern.basic.type - testing: - - 2d.pattern.return images: - green.png code: | @@ -1248,8 +1121,6 @@ @assert pattern.thisImplementsCanvasPattern; - name: 2d.pattern.basic.image - testing: - - 2d.pattern.painting images: - green.png code: | @@ -1267,8 +1138,6 @@ expected: green - name: 2d.pattern.basic.canvas - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1296,8 +1165,6 @@ expected: green - name: 2d.pattern.basic.zerocanvas - testing: - - 2d.pattern.zerocanvas code: | canvas.width = 0; canvas.height = 10; @@ -1318,8 +1185,6 @@ @assert throws INVALID_STATE_ERR ctx.createPattern(canvas, 'repeat'); - name: 2d.pattern.basic.nocontext - testing: - - 2d.pattern.painting code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -1339,8 +1204,6 @@ expected: green - name: 2d.pattern.transform.identity - testing: - - 2d.pattern.transform code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -1361,8 +1224,6 @@ expected: green - name: 2d.pattern.transform.infinity - testing: - - 2d.pattern.transform code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -1383,8 +1244,6 @@ expected: green - name: 2d.pattern.transform.invalid - testing: - - 2d.pattern.transform code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -1393,36 +1252,26 @@ @assert throws TypeError pattern.setTransform({a: 1, m11: 2}); - name: 2d.pattern.image.undefined - testing: - - 2d.pattern.IDL notes: *bindings code: | @assert throws TypeError ctx.createPattern(undefined, 'repeat'); - name: 2d.pattern.image.null - testing: - - 2d.pattern.IDL notes: *bindings code: | @assert throws TypeError ctx.createPattern(null, 'repeat'); - name: 2d.pattern.image.string - testing: - - 2d.pattern.IDL notes: *bindings code: | @assert throws TypeError ctx.createPattern('../images/red.png', 'repeat'); - name: 2d.pattern.image.incomplete.nosrc - testing: - - 2d.pattern.incomplete.image code: | var img = new Image(); @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.incomplete.immediate - testing: - - 2d.pattern.incomplete.image images: - red.png code: | @@ -1435,8 +1284,6 @@ @assert ctx.createPattern(img, 'repeat') === null; @moz-todo - name: 2d.pattern.image.incomplete.reload - testing: - - 2d.pattern.incomplete.image images: - yellow.png - red.png @@ -1451,8 +1298,6 @@ @assert ctx.createPattern(img, 'repeat') === null; @moz-todo - name: 2d.pattern.image.incomplete.emptysrc - testing: - - 2d.pattern.incomplete.image images: - red.png mozilla: {throws: !!null ''} @@ -1462,8 +1307,6 @@ @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.incomplete.removedsrc - testing: - - 2d.pattern.incomplete.image images: - red.png mozilla: {throws: !!null ''} @@ -1473,17 +1316,13 @@ @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.broken - testing: - - 2d.pattern.broken.image images: - broken.png code: | var img = document.getElementById('broken.png'); - @assert ctx.createPattern(img, 'repeat') === null; + @assert throws INVALID_STATE_ERR ctx.createPattern(img, 'repeat'); - name: 2d.pattern.image.nonexistent - testing: - - 2d.pattern.nonexistent.image images: - no-such-image-really.png code: | @@ -1491,8 +1330,6 @@ @assert throws INVALID_STATE_ERR ctx.createPattern(img, 'repeat'); - name: 2d.pattern.svgimage.nonexistent - testing: - - 2d.pattern.nonexistent.svgimage svgimages: - no-such-image-really.png code: | @@ -1500,8 +1337,6 @@ @assert throws INVALID_STATE_ERR ctx.createPattern(img, 'repeat'); - name: 2d.pattern.image.nonexistent-but-loading - testing: - - 2d.pattern.nonexistent-but-loading.image code: | var img = document.createElement("img"); img.src = "/images/no-such-image-really.png"; @@ -1511,8 +1346,6 @@ @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.nosrc - testing: - - 2d.pattern.nosrc.image code: | var img = document.createElement("img"); @assert ctx.createPattern(img, 'repeat') === null; @@ -1520,8 +1353,6 @@ @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.zerowidth - testing: - - 2d.pattern.zerowidth.image images: - red-zerowidth.svg code: | @@ -1529,8 +1360,6 @@ @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.zeroheight - testing: - - 2d.pattern.zeroheight.image images: - red-zeroheight.svg code: | @@ -1538,8 +1367,6 @@ @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.svgimage.zerowidth - testing: - - 2d.pattern.zerowidth.svgimage svgimages: - red-zerowidth.svg code: | @@ -1547,8 +1374,6 @@ @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.svgimage.zeroheight - testing: - - 2d.pattern.zeroheight.svgimage svgimages: - red-zeroheight.svg code: | @@ -1556,8 +1381,6 @@ @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.repeat.empty - testing: - - 2d.pattern.missing images: - green-1x1.png code: | @@ -1575,44 +1398,30 @@ expected: green - name: 2d.pattern.repeat.null - testing: - - 2d.pattern.unrecognised code: | @assert ctx.createPattern(canvas, null) != null; - name: 2d.pattern.repeat.undefined - testing: - - 2d.pattern.unrecognised code: | @assert throws SYNTAX_ERR ctx.createPattern(canvas, undefined); - name: 2d.pattern.repeat.unrecognised - testing: - - 2d.pattern.unrecognised code: | @assert throws SYNTAX_ERR ctx.createPattern(canvas, "invalid"); - name: 2d.pattern.repeat.unrecognisednull - testing: - - 2d.pattern.unrecognised code: | @assert throws SYNTAX_ERR ctx.createPattern(canvas, "null"); - name: 2d.pattern.repeat.case - testing: - - 2d.pattern.exact code: | @assert throws SYNTAX_ERR ctx.createPattern(canvas, "Repeat"); - name: 2d.pattern.repeat.nullsuffix - testing: - - 2d.pattern.exact code: | @assert throws SYNTAX_ERR ctx.createPattern(canvas, "repeat\0"); - name: 2d.pattern.modify.image1 - testing: - - 2d.pattern.modify images: - green.png code: | @@ -1633,8 +1442,6 @@ expected: green - name: 2d.pattern.modify.image2 - testing: - - 2d.pattern.modify images: - green.png code: | @@ -1659,8 +1466,6 @@ expected: green - name: 2d.pattern.modify.canvas1 - testing: - - 2d.pattern.modify code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -1684,8 +1489,6 @@ expected: green - name: 2d.pattern.modify.canvas2 - testing: - - 2d.pattern.modify code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -1728,8 +1531,6 @@ expected: green - name: 2d.pattern.paint.norepeat.basic - testing: - - 2d.pattern.painting images: - green.png code: | @@ -1748,8 +1549,6 @@ expected: green - name: 2d.pattern.paint.norepeat.outside - testing: - - 2d.pattern.painting images: - red.png code: | @@ -1774,8 +1573,6 @@ expected: green - name: 2d.pattern.paint.norepeat.coord1 - testing: - - 2d.pattern.painting images: - green.png code: | @@ -1797,8 +1594,6 @@ expected: green - name: 2d.pattern.paint.norepeat.coord2 - testing: - - 2d.pattern.painting images: - green.png code: | @@ -1821,8 +1616,6 @@ expected: green - name: 2d.pattern.paint.norepeat.coord3 - testing: - - 2d.pattern.painting images: - red.png code: | @@ -1845,8 +1638,6 @@ expected: green - name: 2d.pattern.paint.repeat.basic - testing: - - 2d.pattern.painting images: - green-16x16.png code: | @@ -1865,8 +1656,6 @@ expected: green - name: 2d.pattern.paint.repeat.outside - testing: - - 2d.pattern.painting images: - green-16x16.png code: | @@ -1886,8 +1675,6 @@ expected: green - name: 2d.pattern.paint.repeat.coord1 - testing: - - 2d.pattern.painting images: - rgrg-256x256.png code: | @@ -1907,8 +1694,6 @@ expected: green - name: 2d.pattern.paint.repeat.coord2 - testing: - - 2d.pattern.painting images: - ggrr-256x256.png code: | @@ -1924,8 +1709,6 @@ expected: green - name: 2d.pattern.paint.repeat.coord3 - testing: - - 2d.pattern.painting images: - rgrg-256x256.png code: | @@ -1944,8 +1727,6 @@ expected: green - name: 2d.pattern.paint.repeatx.basic - testing: - - 2d.pattern.painting images: - green-16x16.png code: | @@ -1966,8 +1747,6 @@ expected: green - name: 2d.pattern.paint.repeatx.outside - testing: - - 2d.pattern.painting images: - red-16x16.png code: | @@ -1989,8 +1768,6 @@ expected: green - name: 2d.pattern.paint.repeatx.coord1 - testing: - - 2d.pattern.painting images: - red-16x16.png code: | @@ -2015,8 +1792,6 @@ expected: green - name: 2d.pattern.paint.repeaty.basic - testing: - - 2d.pattern.painting images: - green-16x16.png code: | @@ -2037,8 +1812,6 @@ expected: green - name: 2d.pattern.paint.repeaty.outside - testing: - - 2d.pattern.painting images: - red-16x16.png code: | @@ -2060,8 +1833,6 @@ expected: green - name: 2d.pattern.paint.repeaty.coord1 - testing: - - 2d.pattern.painting images: - red-16x16.png code: | @@ -2087,8 +1858,6 @@ - name: 2d.pattern.paint.orientation.image desc: Image patterns do not get flipped when painted - testing: - - 2d.pattern.painting images: - rrgg-256x256.png code: | @@ -2114,8 +1883,6 @@ - name: 2d.pattern.paint.orientation.canvas desc: Canvas patterns do not get flipped when painted - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2144,8 +1911,6 @@ - name: 2d.pattern.animated.gif desc: createPattern() of an animated GIF draws the first frame - testing: - - 2d.pattern.animated.image images: - anim-gr.gif code: | @@ -2164,8 +1929,6 @@ - name: 2d.fillStyle.CSSRGB desc: CSSRGB works as color input - testing: - - 2d.colours.CSSRGB code: | ctx.fillStyle = new CSSRGB(1, 0, 1); @assert ctx.fillStyle === '#ff00ff'; @@ -2205,8 +1968,6 @@ - name: 2d.fillStyle.CSSHSL desc: CSSHSL works as color input - testing: - - 2d.colours.CSSHSL code: | ctx.fillStyle = new CSSHSL(CSS.deg(180), 0.5, 0.5); ctx.fillRect(0, 0, 100, 50); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/filters.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/filters.yaml deleted file mode 100644 index e501fc704e3..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/filters.yaml +++ /dev/null @@ -1,424 +0,0 @@ -- name: 2d.filter.value - desc: test if ctx.filter works correctly - code: | - @assert ctx.filter == 'none'; - ctx.filter = 'blur(5px)'; - @assert ctx.filter == 'blur(5px)'; - ctx.save(); - ctx.filter = 'none'; - @assert ctx.filter == 'none'; - ctx.restore(); - @assert ctx.filter == 'blur(5px)'; - - ctx.filter = 'blur(10)'; - @assert ctx.filter == 'blur(5px)'; - ctx.filter = 'blur 10px'; - @assert ctx.filter == 'blur(5px)'; - - ctx.filter = 'inherit'; - @assert ctx.filter == 'blur(5px)'; - ctx.filter = 'initial'; - @assert ctx.filter == 'blur(5px)'; - ctx.filter = 'unset'; - @assert ctx.filter == 'blur(5px)'; - - ctx.filter = ''; - @assert ctx.filter == 'blur(5px)'; - ctx.filter = null; - @assert ctx.filter == 'blur(5px)'; - ctx.filter = undefined; - @assert ctx.filter == 'blur(5px)'; - - ctx.filter = 'blur( 5px)'; - assert_equals(ctx.filter, 'blur( 5px)'); - -- name: 2d.filter.canvasFilterObject - desc: Test CanvasFilter() object - code: | - @assert ctx.filter == 'none'; - ctx.filter = 'blur(5px)'; - @assert ctx.filter == 'blur(5px)'; - ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); - @assert ctx.filter.toString() == '[object CanvasFilter]'; - ctx.filter = new CanvasFilter([ - {filter: "gaussianBlur", stdDeviation: 5}, - {filter: "gaussianBlur", stdDeviation: 10} - ]); - @assert ctx.filter.toString() == '[object CanvasFilter]'; - var canvas2 = document.createElement('canvas'); - var ctx2 = canvas2.getContext('2d'); - ctx2.filter = ctx.filter; - @assert ctx.filter.toString() == '[object CanvasFilter]'; - ctx.filter = 'blur(5px)'; - @assert ctx.filter == 'blur(5px)'; - ctx.filter = 'none'; - @assert ctx.filter == 'none'; - ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); - ctx.filter = "this string is not a filter and should do nothing"; - @assert ctx.filter.toString() == '[object CanvasFilter]'; - -- name: 2d.filter.canvasFilterObject.blur.exceptions - desc: Test exceptions on CanvasFilter() blur.object - code: | - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur"}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: undefined}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: "foo"}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: [1,2]}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: NaN}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: {}}); - -- name: 2d.filter.canvasFilterObject.colorMatrix - desc: Test the functionality of ColorMatrix filters in CanvasFilter objects - code: | - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: undefined}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: "foo"}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: null}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3]}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, "a"]}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); - ctx.fillStyle = "#f00"; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 0}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 255,0,0,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 90}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 0,91,0,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 180}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 0,109,109,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 270}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 109,18,255,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "saturate", values: 0.5}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 155,27,27,255; - ctx.clearRect(0, 0, 100, 50); - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "luminanceToAlpha"}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 0,0,0,54; - ctx.filter = new CanvasFilter({filter: "colorMatrix", values: [ - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0 - ]}); - ctx.fillRect(0, 0, 50, 25); - ctx.fillStyle = "#0f0"; - ctx.fillRect(50, 0, 50, 25); - ctx.fillStyle = "#00f"; - ctx.fillRect(0, 25, 50, 25); - ctx.fillStyle = "#fff"; - ctx.fillRect(50, 25, 50, 25); - @assert pixel 10,10 ==~ 0,255,0,255; - @assert pixel 60,10 ==~ 0,255,0,255; - @assert pixel 10,30 ==~ 0,255,0,255; - @assert pixel 60,30 ==~ 0,255,0,255; - -- name: 2d.filter.canvasFilterObject.convolveMatrix.exceptions - desc: Test exceptions on CanvasFilter() convolveMatrix - code: | - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix"}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", divisor: 2}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: null}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: 1}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0]]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, "a"], [0]]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); - // This should not throw an error - ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]}); - -- name: 2d.filter.canvasFilterObject.componentTransfer.linear - desc: Test pixels on CanvasFilter() componentTransfer with linear type - code: | - // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement - function getColor(inputColor, slopes, intercepts) { - return [ - Math.max(0, Math.min(1, inputColor[0]/255 * slopes[0] + intercepts[0])) * 255, - Math.max(0, Math.min(1, inputColor[1]/255 * slopes[1] + intercepts[1])) * 255, - Math.max(0, Math.min(1, inputColor[2]/255 * slopes[2] + intercepts[2])) * 255, - ]; - } - - const slopes = [0.5, 1.2, -0.2]; - const intercepts = [0.25, 0, 0.5]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "linear", slope: slopes[0], intercept: intercepts[0]}, - funcG: {type: "linear", slope: slopes[1], intercept: intercepts[1]}, - funcB: {type: "linear", slope: slopes[2], intercept: intercepts[2]}, - }); - - const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], - ]; - - for (const color of inputColors) { - let outputColor = getColor(color, slopes, intercepts); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); - } - -- name: 2d.filter.canvasFilterObject.componentTransfer.identity - desc: Test pixels on CanvasFilter() componentTransfer with identity type - code: | - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "identity"}, - funcG: {type: "identity"}, - funcB: {type: "identity"}, - }); - - const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], - ]; - - for (const color of inputColors) { - ctx.fillStyle = `rgba(${color[0]}, ${color[1]}, ${color[2]}, 1)`, - ctx.fillRect(0, 0, 10, 10); - _assertPixel(canvas, 5, 5, color[0],color[1],color[2],255, "5,5", `${color[0]},${color[1]},${color[2]}`); - } - -- name: 2d.filter.canvasFilterObject.componentTransfer.gamma - desc: Test pixels on CanvasFilter() componentTransfer with gamma type - code: | - // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement - function getColor(inputColor, amplitude, exponent, offset) { - return [ - Math.max(0, Math.min(1, Math.pow(inputColor[0]/255, exponent[0]) * amplitude[0] + offset[0])) * 255, - Math.max(0, Math.min(1, Math.pow(inputColor[1]/255, exponent[1]) * amplitude[1] + offset[1])) * 255, - Math.max(0, Math.min(1, Math.pow(inputColor[2]/255, exponent[2]) * amplitude[2] + offset[2])) * 255, - ]; - } - - const amplitudes = [2, 1.1, 0.5]; - const exponents = [5, 3, 1]; - const offsets = [0.25, 0, 0.5]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "gamma", amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, - funcG: {type: "gamma", amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, - funcB: {type: "gamma", amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, - }); - - const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], - ]; - - for (const color of inputColors) { - let outputColor = getColor(color, amplitudes, exponents, offsets); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); - } - -- name: 2d.filter.canvasFilterObject.componentTransfer.table - desc: Test pixels on CanvasFilter() componentTransfer with table type - code: | - // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement - function getTransformedValue(C, V) { - // Get the right interval - const n = V.length - 1; - const k = C == 1 ? n - 1 : Math.floor(C * n); - return V[k] + (C - k/n) * n * (V[k + 1] - V[k]); - } - - function getColor(inputColor, tableValues) { - const result = [0, 0, 0]; - for (const i in inputColor) { - const C = inputColor[i]/255; - const Cprime = getTransformedValue(C, tableValues[i]); - result[i] = Math.max(0, Math.min(1, Cprime)) * 255; - } - return result; - } - - tableValuesR = [0, 0, 1, 1]; - tableValuesG = [2, 0, 0.5, 3]; - tableValuesB = [1, -1, 5, 0]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "table", tableValues: tableValuesR}, - funcG: {type: "table", tableValues: tableValuesG}, - funcB: {type: "table", tableValues: tableValuesB}, - }); - - const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], - ]; - - for (const color of inputColors) { - let outputColor = getColor(color, [tableValuesR, tableValuesG, tableValuesB]); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); - } - t.done() - -- name: 2d.filter.canvasFilterObject.componentTransfer.discrete - desc: Test pixels on CanvasFilter() componentTransfer with discrete type - code: | - // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement - function getTransformedValue(C, V) { - // Get the right interval - const n = V.length; - const k = C == 1 ? n - 1 : Math.floor(C * n); - return V[k]; - } - - function getColor(inputColor, tableValues) { - const result = [0, 0, 0]; - for (const i in inputColor) { - const C = inputColor[i]/255; - const Cprime = getTransformedValue(C, tableValues[i]); - result[i] = Math.max(0, Math.min(1, Cprime)) * 255; - } - return result; - } - - tableValuesR = [0, 0, 1, 1]; - tableValuesG = [2, 0, 0.5, 3]; - tableValuesB = [1, -1, 5, 0]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "discrete", tableValues: tableValuesR}, - funcG: {type: "discrete", tableValues: tableValuesG}, - funcB: {type: "discrete", tableValues: tableValuesB}, - }); - - const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], - ]; - - for (const color of inputColors) { - let outputColor = getColor(color, [tableValuesR, tableValuesG, tableValuesB]); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); - } - -- name: 2d.filter.canvasFilterObject.turbulence.inputTypes - desc: Test exceptions on CanvasFilter() turbulence object - code: | - const errorTestCases = [ - {baseFrequency: {}}, - {baseFrequency: -1}, - {baseFrequency: [0, -1]}, - {baseFrequency: NaN}, - {baseFrequency: Infinity}, - {baseFrequency: undefined}, - {baseFrequency: -Infinity}, - {baseFrequency: "test"}, - - {numOctaves: {}}, - {numOctaves: -1}, - {numOctaves: NaN}, - {numOctaves: Infinity}, - {numOctaves: undefined}, - {numOctaves: -Infinity}, - {numOctaves: [1, 1]}, - {numOctaves: "test"}, - - {seed: {}}, - {seed: NaN}, - {seed: Infinity}, - {seed: undefined}, - {seed: -Infinity}, - {seed: [1, 1]}, - {seed: "test"}, - - {stitchTiles: {}}, - {stitchTiles: NaN}, - {stitchTiles: Infinity}, - {stitchTiles: undefined}, - {stitchTiles: -Infinity}, - {stitchTiles: [1, 1]}, - {stitchTiles: "test"}, - {stitchTiles: null}, - {stitchTiles: []}, - {stitchTiles: [10]}, - {stitchTiles: 30}, - {stitchTiles: false}, - {stitchTiles: true}, - {stitchTiles: "10"}, - {stitchTiles: -1}, - - {type: {}}, - {type: NaN}, - {type: Infinity}, - {type: undefined}, - {type: -Infinity}, - {type: [1, 1]}, - {type: "test"}, - {type: null}, - {type: []}, - {type: [10]}, - {type: 30}, - {type: false}, - {type: true}, - {type: "10"}, - {type: -1}, - ] - - // null and [] = 0 when parsed as number - const workingTestCases = [ - {baseFrequency: null}, - {baseFrequency: []}, - {baseFrequency: [10]}, - {baseFrequency: [10, 3]}, - {baseFrequency: 30}, - {baseFrequency: false}, - {baseFrequency: true}, - {baseFrequency: "10"}, - - {numOctaves: null}, - {numOctaves: []}, - {numOctaves: [10]}, - {numOctaves: 30}, - {numOctaves: false}, - {numOctaves: true}, - {numOctaves: "10"}, - - {seed: null}, - {seed: []}, - {seed: [10]}, - {seed: 30}, - {seed: false}, - {seed: true}, - {seed: "10"}, - {seed: -1}, - - {stitchTiles: "stitch"}, - {stitchTiles: "noStitch"}, - - {type: "fractalNoise"}, - {type: "turbulence"}, - ] - - for (testCase of errorTestCases) { - const filterOptions = {...{filter: "turbulence"}, ...testCase}; - @assert throws TypeError CanvasFilter(filterOptions); - } - - for (testCase of workingTestCases) { - const filterOptions = {...{filter: "turbulence"}, ...testCase}; - @assert new CanvasFilter(filterOptions) != null; - } - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/line-styles.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/line-styles.yaml index e6dc3205e72..604f4f3659a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/line-styles.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/line-styles.yaml @@ -1,9 +1,4 @@ - name: 2d.line.defaults - testing: - - 2d.lineWidth.default - - 2d.lineCap.default - - 2d.lineJoin.default - - 2d.miterLimit.default code: | @assert ctx.lineWidth === 1; @assert ctx.lineCap === 'butt'; @@ -12,8 +7,6 @@ - name: 2d.line.width.basic desc: lineWidth determines the width of line strokes - testing: - - 2d.lineWidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -56,8 +49,6 @@ - name: 2d.line.width.transformed desc: Line stroke widths are affected by scale transformations - testing: - - 2d.lineWidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -106,8 +97,6 @@ - name: 2d.line.width.scaledefault desc: Default lineWidth strokes are affected by scale transformations - testing: - - 2d.lineWidth code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -127,9 +116,6 @@ - name: 2d.line.width.valid desc: Setting lineWidth to valid values works - testing: - - 2d.lineWidth.set - - 2d.lineWidth.get code: | ctx.lineWidth = 1.5; @assert ctx.lineWidth === 1.5; @@ -145,8 +131,6 @@ - name: 2d.line.width.invalid desc: Setting lineWidth to invalid values is ignored - testing: - - 2d.lineWidth.invalid code: | ctx.lineWidth = 1.5; @assert ctx.lineWidth === 1.5; @@ -185,8 +169,6 @@ - name: 2d.line.cap.butt desc: lineCap 'butt' is rendered correctly - testing: - - 2d.lineCap.butt code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -227,8 +209,6 @@ - name: 2d.line.cap.round desc: lineCap 'round' is rendered correctly - testing: - - 2d.lineCap.round code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -285,8 +265,6 @@ - name: 2d.line.cap.square desc: lineCap 'square' is rendered correctly - testing: - - 2d.lineCap.square code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -327,8 +305,6 @@ - name: 2d.line.cap.open desc: Line caps are drawn at the corners of an unclosed rectangle - testing: - - 2d.lineCap.end code: | ctx.fillStyle = '#f00'; ctx.strokeStyle = '#0f0'; @@ -354,8 +330,6 @@ - name: 2d.line.cap.closed desc: Line caps are not drawn at the corners of an unclosed rectangle - testing: - - 2d.lineCap.end code: | ctx.fillStyle = '#0f0'; ctx.strokeStyle = '#f00'; @@ -381,9 +355,6 @@ - name: 2d.line.cap.valid desc: Setting lineCap to valid values works - testing: - - 2d.lineCap.set - - 2d.lineCap.get code: | ctx.lineCap = 'butt' @assert ctx.lineCap === 'butt'; @@ -396,8 +367,6 @@ - name: 2d.line.cap.invalid desc: Setting lineCap to invalid values is ignored - testing: - - 2d.lineCap.invalid code: | ctx.lineCap = 'butt' @assert ctx.lineCap === 'butt'; @@ -428,9 +397,6 @@ - name: 2d.line.join.bevel desc: lineJoin 'bevel' is rendered correctly - testing: - - 2d.lineJoin.common - - 2d.lineJoin.bevel code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -490,8 +456,6 @@ - name: 2d.line.join.round desc: lineJoin 'round' is rendered correctly - testing: - - 2d.lineJoin.round code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -549,8 +513,6 @@ - name: 2d.line.join.miter desc: lineJoin 'miter' is rendered correctly - testing: - - 2d.lineJoin.miter code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -601,8 +563,6 @@ - name: 2d.line.join.open desc: Line joins are not drawn at the corner of an unclosed rectangle - testing: - - 2d.lineJoin.joins code: | ctx.fillStyle = '#0f0'; ctx.strokeStyle = '#f00'; @@ -627,8 +587,6 @@ - name: 2d.line.join.closed desc: Line joins are drawn at the corner of a closed rectangle - testing: - - 2d.lineJoin.joinclosed code: | ctx.fillStyle = '#f00'; ctx.strokeStyle = '#0f0'; @@ -653,8 +611,6 @@ - name: 2d.line.join.parallel desc: Line joins are drawn at 180-degree joins - testing: - - 2d.lineJoin.joins code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -676,9 +632,6 @@ - name: 2d.line.join.valid desc: Setting lineJoin to valid values works - testing: - - 2d.lineJoin.set - - 2d.lineJoin.get code: | ctx.lineJoin = 'bevel' @assert ctx.lineJoin === 'bevel'; @@ -691,8 +644,6 @@ - name: 2d.line.join.invalid desc: Setting lineJoin to invalid values is ignored - testing: - - 2d.lineJoin.invalid code: | ctx.lineJoin = 'bevel' @assert ctx.lineJoin === 'bevel'; @@ -723,9 +674,6 @@ - name: 2d.line.miter.exceeded desc: Miter joins are not drawn when the miter limit is exceeded - testing: - - 2d.lineJoin.miterLimit - - 2d.lineJoin.miter code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -749,9 +697,6 @@ - name: 2d.line.miter.acute desc: Miter joins are drawn correctly with acute angles - testing: - - 2d.lineJoin.miterLimit - - 2d.lineJoin.miter code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -783,9 +728,6 @@ - name: 2d.line.miter.obtuse desc: Miter joins are drawn correctly with obtuse angles - testing: - - 2d.lineJoin.miterLimit - - 2d.lineJoin.miter code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -818,8 +760,6 @@ - name: 2d.line.miter.rightangle desc: Miter joins are not drawn when the miter limit is exceeded, on exact right angles - testing: - - 2d.lineJoin.miter code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -844,8 +784,6 @@ - name: 2d.line.miter.lineedge desc: Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle - testing: - - 2d.lineJoin.miter code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -866,8 +804,6 @@ - name: 2d.line.miter.within desc: Miter joins are drawn when the miter limit is not quite exceeded - testing: - - 2d.lineJoin.miter code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -891,9 +827,6 @@ - name: 2d.line.miter.valid desc: Setting miterLimit to valid values works - testing: - - 2d.miterLimit.set - - 2d.miterLimit.get code: | ctx.miterLimit = 1.5; @assert ctx.miterLimit === 1.5; @@ -909,8 +842,6 @@ - name: 2d.line.miter.invalid desc: Setting miterLimit to invalid values is ignored - testing: - - 2d.miterLimit.invalid code: | ctx.miterLimit = 1.5; @assert ctx.miterLimit === 1.5; @@ -992,16 +923,8 @@ @assert pixel 48,48 == 0,255,0,255; expected: green - - - - - - - name: 2d.line.invalid.strokestyle desc: Verify correct behavior of canvas on an invalid strokeStyle() - testing: - - 2d.strokestyle.invalid code: | ctx.strokeStyle = 'rgb(0, 255, 0)'; ctx.strokeStyle = 'nonsense'; @@ -1014,4 +937,3 @@ @assert imgdata[4] == 0; @assert imgdata[5] == 255; @assert imgdata[6] == 0; - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml index 0e255aca0de..b8ffbd50758 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml @@ -17,9 +17,7 @@ ("trailingjunk", "100#!?", 100), ] def gen(name, string, exp, code): - testing = ["size.nonnegativeinteger"] if exp is None: - testing.append("size.error") code += "@assert canvas.width === 300;\n@assert canvas.height === 150;\n" expected = "size 300 150" else: @@ -36,17 +34,16 @@ if exp == 0: expected = None # can't generate zero-sized PNGs for the expected image - return code, testing, expected + return code, expected for name, string, exp in cases: code = "" - code, testing, expected = gen(name, string, exp, code) + code, expected = gen(name, string, exp, code) # We need to replace \r with because \r\n gets converted to \n in the HTML parser. htmlString = string.replace('\r', ' ') tests.append( { "name": "size.attributes.parse.%s" % name, "desc": "Parsing of non-negative integers", - "testing": testing, "canvas": 'width="%s" height="%s"' % (htmlString, htmlString), "code": code, "expected": expected @@ -54,11 +51,10 @@ for name, string, exp in cases: code = "canvas.setAttribute('width', %r);\ncanvas.setAttribute('height', %r);\n" % (string, string) - code, testing, expected = gen(name, string, exp, code) + code, expected = gen(name, string, exp, code) tests.append( { "name": "size.attributes.setAttribute.%s" % name, "desc": "Parsing of non-negative integers in setAttribute", - "testing": testing, "canvas": 'width="50" height="50"', "code": code, "expected": expected @@ -86,7 +82,6 @@ tests.append( { 'name': '2d.state.saverestore.%s' % key, 'desc': 'save()/restore() works for %s' % key, - 'testing': [ '2d.state.%s' % key ], 'code': """// Test that restore() undoes any modifications var old = ctx.%(key)s; @@ -109,7 +104,6 @@ tests.append( { 'name': 'initial.reset.2dstate', 'desc': 'Resetting the canvas state resets 2D state variables', - 'testing': [ 'initial.reset' ], 'code': """canvas.width = 100; var default_val; @@ -187,7 +181,6 @@ expected = calc_output(src, dest, FA_code, FB_code) tests.append( { 'name': '2d.composite.%s.%s' % (name, op), - 'testing': [ '2d.composite.%s' % op ], 'code': """ ctx.fillStyle = 'rgba%s'; ctx.fillRect(0, 0, 100, 50); @@ -208,7 +201,6 @@ expected = calc_output(src, dest, FA_code, FB_code) tests.append( { 'name': '2d.composite.%s.%s' % (name, op), - 'testing': [ '2d.composite.%s' % op ], 'images': [ 'yellow75.png' ], 'code': """ ctx.fillStyle = 'rgba%s'; @@ -229,7 +221,6 @@ expected = calc_output(src, dest, FA_code, FB_code) tests.append( { 'name': '2d.composite.%s.%s' % (name, op), - 'testing': [ '2d.composite.%s' % op ], 'images': [ 'yellow75.png' ], 'code': """ var canvas2 = document.createElement('canvas'); @@ -258,7 +249,6 @@ tests.append( { 'name': '2d.composite.%s.%s' % (name, op), 'desc': 'fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], 'code': """ ctx.fillStyle = 'rgba%s'; ctx.fillRect(0, 0, 100, 50); @@ -282,7 +272,6 @@ tests.append( { 'name': '2d.composite.%s.%s' % (name, op), 'desc': 'drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], 'images': [ 'yellow.png' ], 'code': """ ctx.fillStyle = 'rgba%s'; @@ -306,7 +295,6 @@ tests.append( { 'name': '2d.composite.%s.%s' % (name, op), 'desc': 'drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], 'code': """ ctx.fillStyle = 'rgba%s'; ctx.fillRect(0, 0, 100, 50); @@ -329,7 +317,6 @@ tests.append( { 'name': '2d.composite.%s.%s' % (name, op), 'desc': 'Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], 'images': [ 'yellow.png' ], 'code': """ ctx.fillStyle = 'rgba%s'; @@ -350,7 +337,6 @@ tests.append( { 'name': '2d.composite.clip.%s' % (op), 'desc': 'fill() does not affect pixels outside the clip region.', - 'testing': [ '2d.composite.%s' % op ], 'code': """ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -366,7 +352,7 @@ } ) - meta: | - # Colour parsing tests + # Color parsing tests # Try most of the CSS3 Color values - http://www.w3.org/TR/css3-color/#colorunits big_float = '1' + ('0' * 39) @@ -378,11 +364,11 @@ ('hex6', '#00fF00', 0,255,0,255, ""), ('hex8', '#00ff00ff', 0,255,0,255, ""), ('rgb-num', 'rgb(0,255,0)', 0,255,0,255, ""), - ('rgb-clamp-1', 'rgb(-1000, 1000, -1000)', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), - ('rgb-clamp-2', 'rgb(-200%, 200%, -200%)', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), - ('rgb-clamp-3', 'rgb(-2147483649, 4294967298, -18446744073709551619)', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), - ('rgb-clamp-4', 'rgb(-'+big_float+', '+big_float+', -'+big_float+')', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), - ('rgb-clamp-5', 'rgb(-'+big_double+', '+big_double+', -'+big_double+')', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), + ('rgb-clamp-1', 'rgb(-1000, 1000, -1000)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-2', 'rgb(-200%, 200%, -200%)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-3', 'rgb(-2147483649, 4294967298, -18446744073709551619)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-4', 'rgb(-'+big_float+', '+big_float+', -'+big_float+')', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-5', 'rgb(-'+big_double+', '+big_double+', -'+big_double+')', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), ('rgb-percent', 'rgb(0% ,100% ,0%)', 0,255,0,255, 'CSS3 Color says "The integer value 255 corresponds to 100%". (In particular, it is not 254...)'), ('rgb-eof', 'rgb(0, 255, 0', 0,255,0,255, ""), # see CSS2.1 4.2 "Unexpected end of style sheet" ('rgba-solid-1', 'rgba( 0 , 255 , 0 , 1 )', 0,255,0,255, ""), @@ -457,7 +443,6 @@ # TODO: test strokeStyle, shadowColor in the same way test = { 'name': '2d.fillStyle.parse.%s' % name, - 'testing': [ '2d.colours.parse' ], 'notes': notes, 'code': """ ctx.fillStyle = '#f00'; @@ -473,7 +458,7 @@ } tests.append(test) - # Also test that invalid colours are ignored + # Also test that invalid colors are ignored for name, string in [ ('hex1', '#f'), ('hex2', '#f0'), @@ -527,7 +512,6 @@ ]: test = { 'name': '2d.fillStyle.parse.invalid.%s' % name, - 'testing': [ '2d.colours.parse' ], 'code': """ ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '%s'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does @@ -538,14 +522,13 @@ } tests.append(test) - # Some can't have positive tests, only negative tests, because we don't know what colour they're meant to be + # Some can't have positive tests, only negative tests, because we don't know what color they're meant to be for name, string in [ ('system', 'ThreeDDarkShadow'), #('flavor', 'flavor'), # removed from latest CSS3 Color drafts ]: test = { 'name': '2d.fillStyle.parse.%s' % name, - 'testing': [ '2d.colours.parse' ], 'code': """ ctx.fillStyle = '#f00'; ctx.fillStyle = '%s'; @@ -553,4 +536,3 @@ """ % (string,), } tests.append(test) - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/path-objects.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/path-objects.yaml index e6ac79585eb..eec142c7692 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/path-objects.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/path-objects.yaml @@ -1,6 +1,4 @@ - name: 2d.path.initial - testing: - - 2d.path.initial #mozilla: { bug: TODO } code: | ctx.fillStyle = '#0f0'; @@ -12,8 +10,6 @@ expected: green - name: 2d.path.beginPath - testing: - - 2d.path.beginPath code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -25,8 +21,6 @@ expected: green - name: 2d.path.moveTo.basic - testing: - - 2d.path.moveTo code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -41,8 +35,6 @@ expected: green - name: 2d.path.moveTo.newsubpath - testing: - - 2d.path.moveTo code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -57,8 +49,6 @@ expected: green - name: 2d.path.moveTo.multiple - testing: - - 2d.path.moveTo code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -74,8 +64,6 @@ - name: 2d.path.moveTo.nonfinite desc: moveTo() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -88,8 +76,6 @@ expected: green - name: 2d.path.closePath.empty - testing: - - 2d.path.closePath.empty code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -100,8 +86,6 @@ expected: green - name: 2d.path.closePath.newline - testing: - - 2d.path.closePath.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -117,8 +101,6 @@ expected: green - name: 2d.path.closePath.nextpoint - testing: - - 2d.path.closePath.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -134,9 +116,6 @@ - name: 2d.path.lineTo.ensuresubpath.1 desc: If there is no subpath, the point is added and nothing is drawn - testing: - - 2d.path.lineTo.empty - - 2d.path.ensure code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -150,9 +129,6 @@ - name: 2d.path.lineTo.ensuresubpath.2 desc: If there is no subpath, the point is added and used for subsequent drawing - testing: - - 2d.path.lineTo.empty - - 2d.path.ensure code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -166,8 +142,6 @@ expected: green - name: 2d.path.lineTo.basic - testing: - - 2d.path.lineTo.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -181,8 +155,6 @@ expected: green - name: 2d.path.lineTo.nextpoint - testing: - - 2d.path.lineTo.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -198,8 +170,6 @@ - name: 2d.path.lineTo.nonfinite desc: lineTo() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -214,8 +184,6 @@ - name: 2d.path.lineTo.nonfinite.details desc: lineTo() with Infinity/NaN for first arg still converts the second arg - testing: - - 2d.nonfinite code: | for (var arg1 of [Infinity, -Infinity, NaN]) { var converted = false; @@ -227,9 +195,6 @@ - name: 2d.path.quadraticCurveTo.ensuresubpath.1 desc: If there is no subpath, the first control point is added (and nothing is drawn up to it) - testing: - - 2d.path.quadratic.empty - - 2d.path.ensure code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -244,9 +209,6 @@ - name: 2d.path.quadraticCurveTo.ensuresubpath.2 desc: If there is no subpath, the first control point is added - testing: - - 2d.path.quadratic.empty - - 2d.path.ensure code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -260,8 +222,6 @@ expected: green - name: 2d.path.quadraticCurveTo.basic - testing: - - 2d.path.quadratic.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -275,8 +235,6 @@ expected: green - name: 2d.path.quadraticCurveTo.shape - testing: - - 2d.path.quadratic.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -294,8 +252,6 @@ expected: green - name: 2d.path.quadraticCurveTo.scaled - testing: - - 2d.path.quadratic.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -315,8 +271,6 @@ - name: 2d.path.quadraticCurveTo.nonfinite desc: quadraticCurveTo() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -332,9 +286,6 @@ - name: 2d.path.bezierCurveTo.ensuresubpath.1 desc: If there is no subpath, the first control point is added (and nothing is drawn up to it) - testing: - - 2d.path.bezier.empty - - 2d.path.ensure code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -349,9 +300,6 @@ - name: 2d.path.bezierCurveTo.ensuresubpath.2 desc: If there is no subpath, the first control point is added - testing: - - 2d.path.bezier.empty - - 2d.path.ensure code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -365,8 +313,6 @@ expected: green - name: 2d.path.bezierCurveTo.basic - testing: - - 2d.path.bezier.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -380,8 +326,6 @@ expected: green - name: 2d.path.bezierCurveTo.shape - testing: - - 2d.path.bezier.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -399,8 +343,6 @@ expected: green - name: 2d.path.bezierCurveTo.scaled - testing: - - 2d.path.bezier.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -420,8 +362,6 @@ - name: 2d.path.bezierCurveTo.nonfinite desc: bezierCurveTo() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -437,9 +377,6 @@ - name: 2d.path.arcTo.ensuresubpath.1 desc: If there is no subpath, the first control point is added (and nothing is drawn up to it) - testing: - - 2d.path.arcTo.empty - - 2d.path.ensure code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -453,9 +390,6 @@ - name: 2d.path.arcTo.ensuresubpath.2 desc: If there is no subpath, the first control point is added - testing: - - 2d.path.arcTo.empty - - 2d.path.ensure code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -470,8 +404,6 @@ - name: 2d.path.arcTo.coincide.1 desc: arcTo() has no effect if P0 = P1 - testing: - - 2d.path.arcTo.coincide.01 code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -497,8 +429,6 @@ - name: 2d.path.arcTo.coincide.2 desc: arcTo() draws a straight line to P1 if P1 = P2 - testing: - - 2d.path.arcTo.coincide.12 code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -515,8 +445,6 @@ - name: 2d.path.arcTo.collinear.1 desc: arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1 - testing: - - 2d.path.arcTo.collinear code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -540,8 +468,6 @@ - name: 2d.path.arcTo.collinear.2 desc: arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1 - testing: - - 2d.path.arcTo.collinear code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -565,8 +491,6 @@ - name: 2d.path.arcTo.collinear.3 desc: arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1 - testing: - - 2d.path.arcTo.collinear code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -594,8 +518,6 @@ - name: 2d.path.arcTo.shape.curve1 desc: arcTo() curves in the right kind of shape - testing: - - 2d.path.arcTo.shape code: | var tol = 1.5; // tolerance to avoid antialiasing artifacts @@ -635,8 +557,6 @@ - name: 2d.path.arcTo.shape.curve2 desc: arcTo() curves in the right kind of shape - testing: - - 2d.path.arcTo.shape code: | var tol = 1.5; // tolerance to avoid antialiasing artifacts @@ -675,8 +595,6 @@ - name: 2d.path.arcTo.shape.start desc: arcTo() draws a straight line from P0 to P1 - testing: - - 2d.path.arcTo.shape code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -696,8 +614,6 @@ - name: 2d.path.arcTo.shape.end desc: arcTo() does not draw anything from P1 to P2 - testing: - - 2d.path.arcTo.shape code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -717,8 +633,6 @@ - name: 2d.path.arcTo.negative desc: arcTo() with negative radius throws an exception - testing: - - 2d.path.arcTo.negative code: | @assert throws INDEX_SIZE_ERR ctx.arcTo(0, 0, 0, 0, -1); var path = new Path2D(); @@ -726,8 +640,6 @@ - name: 2d.path.arcTo.zero.1 desc: arcTo() with zero radius draws a straight line from P0 to P1 - testing: - - 2d.path.arcTo.zeroradius code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -751,8 +663,6 @@ - name: 2d.path.arcTo.zero.2 desc: arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear - testing: - - 2d.path.arcTo.zeroradius code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -826,8 +736,6 @@ - name: 2d.path.arcTo.nonfinite desc: arcTo() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -843,8 +751,6 @@ - name: 2d.path.arc.empty desc: arc() with an empty path does not draw a straight line to the start point - testing: - - 2d.path.arc.nonempty code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -858,8 +764,6 @@ - name: 2d.path.arc.nonempty desc: arc() with a non-empty path does draw a straight line to the start point - testing: - - 2d.path.arc.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -874,8 +778,6 @@ - name: 2d.path.arc.end desc: arc() adds the end point of the arc to the subpath - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -891,8 +793,6 @@ - name: 2d.path.arc.default desc: arc() with missing last argument defaults to clockwise - testing: - - 2d.path.arc.omitted code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -906,8 +806,6 @@ - name: 2d.path.arc.angle.1 desc: arc() draws pi/2 .. -pi anticlockwise correctly - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -921,8 +819,6 @@ - name: 2d.path.arc.angle.2 desc: arc() draws -3pi/2 .. -pi anticlockwise correctly - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -936,8 +832,6 @@ - name: 2d.path.arc.angle.3 desc: arc() wraps angles mod 2pi when anticlockwise and end > start+2pi - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -951,8 +845,6 @@ - name: 2d.path.arc.angle.4 desc: arc() draws a full circle when clockwise and end > start+2pi - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -969,8 +861,6 @@ - name: 2d.path.arc.angle.5 desc: arc() wraps angles mod 2pi when clockwise and start > end+2pi - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -984,8 +874,6 @@ - name: 2d.path.arc.angle.6 desc: arc() draws a full circle when anticlockwise and start > end+2pi - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1002,8 +890,6 @@ - name: 2d.path.arc.zero.1 desc: arc() draws nothing when startAngle = endAngle and anticlockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1017,8 +903,6 @@ - name: 2d.path.arc.zero.2 desc: arc() draws nothing when startAngle = endAngle and clockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1032,8 +916,6 @@ - name: 2d.path.arc.twopie.1 desc: arc() draws nothing when end = start + 2pi-e and anticlockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1047,8 +929,6 @@ - name: 2d.path.arc.twopie.2 desc: arc() draws a full circle when end = start + 2pi-e and clockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1062,8 +942,6 @@ - name: 2d.path.arc.twopie.3 desc: arc() draws a full circle when end = start + 2pi+e and anticlockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1077,8 +955,6 @@ - name: 2d.path.arc.twopie.4 desc: arc() draws nothing when end = start + 2pi+e and clockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1092,8 +968,6 @@ - name: 2d.path.arc.shape.1 desc: arc() from 0 to pi does not draw anything in the wrong half - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1112,8 +986,6 @@ - name: 2d.path.arc.shape.2 desc: arc() from 0 to pi draws stuff in the right half - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1132,8 +1004,6 @@ - name: 2d.path.arc.shape.3 desc: arc() from 0 to -pi/2 does not draw anything in the wrong quadrant - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1151,8 +1021,6 @@ - name: 2d.path.arc.shape.4 desc: arc() from 0 to -pi/2 draws stuff in the right quadrant - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1170,8 +1038,6 @@ - name: 2d.path.arc.shape.5 desc: arc() from 0 to 5pi does not draw crazy things - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1189,8 +1055,6 @@ - name: 2d.path.arc.selfintersect.1 desc: arc() with lineWidth > 2*radius is drawn sensibly - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1208,8 +1072,6 @@ - name: 2d.path.arc.selfintersect.2 desc: arc() with lineWidth > 2*radius is drawn sensibly - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1231,8 +1093,6 @@ - name: 2d.path.arc.negative desc: arc() with negative radius throws INDEX_SIZE_ERR - testing: - - 2d.path.arc.negative code: | @assert throws INDEX_SIZE_ERR ctx.arc(0, 0, -1, 0, 0, true); var path = new Path2D(); @@ -1240,8 +1100,6 @@ - name: 2d.path.arc.zeroradius desc: arc() with zero radius draws a line to the start point - testing: - - 2d.path.arc.zero code: | ctx.fillStyle = '#f00' ctx.fillRect(0, 0, 100, 50); @@ -1256,8 +1114,6 @@ - name: 2d.path.arc.scale.1 desc: Non-uniformly scaled arcs are the right shape - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1291,8 +1147,6 @@ - name: 2d.path.arc.scale.2 desc: Highly scaled arcs are the right shape - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1316,8 +1170,6 @@ - name: 2d.path.arc.nonfinite desc: arc() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1334,8 +1186,6 @@ - name: 2d.path.rect.basic - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1346,8 +1196,6 @@ expected: green - name: 2d.path.rect.newsubpath - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1362,8 +1210,6 @@ expected: green - name: 2d.path.rect.closed - testing: - - 2d.path.rect.closed code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1376,8 +1222,6 @@ expected: green - name: 2d.path.rect.end.1 - testing: - - 2d.path.rect.newsubpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1390,8 +1234,6 @@ expected: green - name: 2d.path.rect.end.2 - testing: - - 2d.path.rect.newsubpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1409,8 +1251,6 @@ expected: green - name: 2d.path.rect.zero.1 - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1423,8 +1263,6 @@ expected: green - name: 2d.path.rect.zero.2 - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1437,8 +1275,6 @@ expected: green - name: 2d.path.rect.zero.3 - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1451,8 +1287,6 @@ expected: green - name: 2d.path.rect.zero.4 - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1465,8 +1299,6 @@ expected: green - name: 2d.path.rect.zero.5 - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1479,8 +1311,6 @@ expected: green - name: 2d.path.rect.zero.6 - testing: - - 2d.path.rect.subpath #mozilla: { bug: TODO } code: | ctx.fillStyle = '#0f0'; @@ -1496,8 +1326,6 @@ expected: green - name: 2d.path.rect.negative - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1514,8 +1342,6 @@ @assert pixel 75,37 == 0,255,0,255; - name: 2d.path.rect.winding - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1546,8 +1372,6 @@ - name: 2d.path.rect.nonfinite desc: rect() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -1771,8 +1595,6 @@ - name: 2d.path.roundrect.nonfinite desc: roundRect() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -2505,6 +2327,34 @@ code: | assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 100, 50, [])}); +- name: 2d.path.roundrect.radius.noargument + desc: Check that roundRect draws a rectangle when no radii are provided. + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(10, 10, 80, 30); + ctx.fillStyle = '#0f0'; + ctx.fill(); + // upper left corner (10, 10) + @assert pixel 10,9 == 255,0,0,255; + @assert pixel 9,10 == 255,0,0,255; + @assert pixel 10,10 == 0,255,0,255; + + // upper right corner (89, 10) + @assert pixel 90,10 == 255,0,0,255; + @assert pixel 89,9 == 255,0,0,255; + @assert pixel 89,10 == 0,255,0,255; + + // lower right corner (89, 39) + @assert pixel 89,40 == 255,0,0,255; + @assert pixel 90,39 == 255,0,0,255; + @assert pixel 89,39 == 0,255,0,255; + + // lower left corner (10, 30) + @assert pixel 9,39 == 255,0,0,255; + @assert pixel 10,40 == 255,0,0,255; + @assert pixel 10,39 == 0,255,0,255; + - name: 2d.path.roundrect.radius.toomany desc: Check that roundRect throws an IndeSizeError if radii has more than four items. code: | @@ -2520,10 +2370,20 @@ assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [{x: -1, y: 1}, 1])}); assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [{x: 1, y: -1}])}); +- name: 2d.path.roundrect.badinput + desc: roundRect() throws or does not throw errors given the strange inputs. + code: | + ctx.roundRect(0, 0, 100, 100, { foo: "bar" }); //=> DOMPointInit + ctx.roundRect(0, 0, 100, 100, undefined); //=> "missing" -> 0 + ctx.roundRect(0, 0, 100, 100, [[]]); //=> « DOMPointInit » + ctx.roundRect(0, 0, 100, 100, [[25]]); //=> « DOMPointInit » + ctx.roundRect(0, 0, 100, 100, [undefined]); //=> « DOMPointInit » + @assert throws TypeError ctx.roundRect(0, 0, 100, 100, 0n); + @assert throws TypeError ctx.roundRect(0, 0, 100, 100, { x: 0n }); + @assert throws TypeError ctx.roundRect(0, 0, 100, 100, [{ x: 0n }]); + - name: 2d.path.ellipse.basics desc: Verify canvas throws error when drawing ellipse with negative radii. - testing: - - 2d.ellipse.basics code: | ctx.ellipse(10, 10, 10, 5, 0, 0, 1, false); ctx.ellipse(10, 10, 10, 0, 0, 0, 1, false); @@ -2534,8 +2394,6 @@ ctx.ellipse(80, 0, 10, 4294967277, Math.PI / -84, -Math.PI / 2147483436, false); - name: 2d.path.fill.overlap - testing: - - 2d.path.fill.basic code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -2554,8 +2412,6 @@ cr.fill() - name: 2d.path.fill.winding.add - testing: - - 2d.path.fill.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2576,8 +2432,6 @@ expected: green - name: 2d.path.fill.winding.subtract.1 - testing: - - 2d.path.fill.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2598,8 +2452,6 @@ expected: green - name: 2d.path.fill.winding.subtract.2 - testing: - - 2d.path.fill.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2619,8 +2471,6 @@ expected: green - name: 2d.path.fill.winding.subtract.3 - testing: - - 2d.path.fill.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2646,8 +2496,6 @@ expected: green - name: 2d.path.fill.closed.basic - testing: - - 2d.path.fill.closed code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2663,8 +2511,6 @@ expected: green - name: 2d.path.fill.closed.unaffected - testing: - - 2d.path.fill.closed code: | ctx.fillStyle = '#00f'; ctx.fillRect(0, 0, 100, 50); @@ -2684,8 +2530,6 @@ - name: 2d.path.stroke.overlap desc: Stroked subpaths are combined before being drawn - testing: - - 2d.path.stroke.basic code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -2707,8 +2551,6 @@ - name: 2d.path.stroke.union desc: Strokes in opposite directions are unioned, not subtracted - testing: - - 2d.path.stroke.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2726,8 +2568,6 @@ - name: 2d.path.stroke.unaffected desc: Stroking does not start a new path or subpath - testing: - - 2d.path.stroke.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2749,8 +2589,6 @@ - name: 2d.path.stroke.scale1 desc: Stroke line widths are scaled by the current transformation matrix - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2784,8 +2622,6 @@ - name: 2d.path.stroke.scale2 desc: Stroke line widths are scaled by the current transformation matrix - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2821,8 +2657,6 @@ - name: 2d.path.stroke.skew desc: Strokes lines are skewed by the current transformation matrix - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2872,8 +2706,6 @@ - name: 2d.path.stroke.empty desc: Empty subpaths are not stroked - testing: - - 2d.path.stroke.empty code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2893,8 +2725,6 @@ - name: 2d.path.stroke.prune.line desc: Zero-length line segments from lineTo are removed before stroking - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2914,8 +2744,6 @@ - name: 2d.path.stroke.prune.closed desc: Zero-length line segments from closed paths are removed before stroking - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2937,8 +2765,6 @@ - name: 2d.path.stroke.prune.curve desc: Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2963,8 +2789,6 @@ - name: 2d.path.stroke.prune.arc desc: Zero-length line segments from arcTo and arc are removed before stroking - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2989,8 +2813,6 @@ - name: 2d.path.stroke.prune.rect desc: Zero-length line segments from rect and strokeRect are removed before stroking - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -3011,8 +2833,6 @@ - name: 2d.path.stroke.prune.corner desc: Zero-length line segments are removed before stroking with miters - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -3035,8 +2855,6 @@ - name: 2d.path.transformation.basic - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -3053,8 +2871,6 @@ - name: 2d.path.transformation.multiple # TODO: change this name desc: Transformations are applied while building paths, not when drawing - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -3081,8 +2897,6 @@ - name: 2d.path.transformation.changing desc: Transformations are applied while building paths, not when drawing - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -3104,8 +2918,6 @@ - name: 2d.path.clip.empty - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -3120,8 +2932,6 @@ expected: green - name: 2d.path.clip.basic.1 - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -3137,8 +2947,6 @@ expected: green - name: 2d.path.clip.basic.2 - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -3154,8 +2962,6 @@ expected: green - name: 2d.path.clip.intersect - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -3174,8 +2980,6 @@ expected: green - name: 2d.path.clip.winding.1 - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -3199,8 +3003,6 @@ expected: green - name: 2d.path.clip.winding.2 - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -3228,8 +3030,6 @@ expected: green - name: 2d.path.clip.unaffected - testing: - - 2d.path.clip.closed code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -3253,8 +3053,6 @@ - name: 2d.path.isPointInPath.basic.1 desc: isPointInPath() detects whether the point is inside the path - testing: - - 2d.path.isPointInPath code: | ctx.rect(0, 0, 20, 20); @assert ctx.isPointInPath(10, 10) === true; @@ -3262,8 +3060,6 @@ - name: 2d.path.isPointInPath.basic.2 desc: isPointInPath() detects whether the point is inside the path - testing: - - 2d.path.isPointInPath code: | ctx.rect(20, 0, 20, 20); @assert ctx.isPointInPath(10, 10) === false; @@ -3271,8 +3067,6 @@ - name: 2d.path.isPointInPath.edge desc: isPointInPath() counts points on the path as being inside - testing: - - 2d.path.isPointInPath.edge code: | ctx.rect(0, 0, 20, 20); @assert ctx.isPointInPath(0, 0) === true; @@ -3290,15 +3084,11 @@ - name: 2d.path.isPointInPath.empty desc: isPointInPath() works when there is no path - testing: - - 2d.path.isPointInPath code: | @assert ctx.isPointInPath(0, 0) === false; - name: 2d.path.isPointInPath.subpath desc: isPointInPath() uses the current path, not just the subpath - testing: - - 2d.path.isPointInPath code: | ctx.rect(0, 0, 20, 20); ctx.beginPath(); @@ -3311,8 +3101,6 @@ - name: 2d.path.isPointInPath.outside desc: isPointInPath() works on paths outside the canvas - testing: - - 2d.path.isPointInPath code: | ctx.rect(0, -100, 20, 20); ctx.rect(20, -10, 20, 20); @@ -3325,8 +3113,6 @@ - name: 2d.path.isPointInPath.unclosed desc: isPointInPath() works on unclosed subpaths - testing: - - 2d.path.isPointInPath code: | ctx.moveTo(0, 0); ctx.lineTo(20, 0); @@ -3337,8 +3123,6 @@ - name: 2d.path.isPointInPath.arc desc: isPointInPath() works on arcs - testing: - - 2d.path.isPointInPath code: | ctx.arc(50, 25, 10, 0, Math.PI, false); @assert ctx.isPointInPath(50, 10) === false; @@ -3353,8 +3137,6 @@ - name: 2d.path.isPointInPath.bigarc desc: isPointInPath() works on unclosed arcs larger than 2pi opera: {bug: 320937} - testing: - - 2d.path.isPointInPath code: | ctx.arc(50, 25, 10, 0, 7, false); @assert ctx.isPointInPath(50, 10) === false; @@ -3368,8 +3150,6 @@ - name: 2d.path.isPointInPath.bezier desc: isPointInPath() works on Bezier curves - testing: - - 2d.path.isPointInPath code: | ctx.moveTo(25, 25); ctx.bezierCurveTo(50, -50, 50, 100, 75, 25); @@ -3396,8 +3176,6 @@ - name: 2d.path.isPointInPath.winding desc: isPointInPath() uses the non-zero winding number rule - testing: - - 2d.path.isPointInPath code: | // Create a square ring, using opposite windings to make a hole in the centre ctx.moveTo(0, 0); @@ -3423,8 +3201,6 @@ - name: 2d.path.isPointInPath.transform.1 desc: isPointInPath() handles transformations correctly - testing: - - 2d.path.isPointInPath code: | ctx.translate(50, 0); ctx.rect(0, 0, 20, 20); @@ -3437,8 +3213,6 @@ - name: 2d.path.isPointInPath.transform.2 desc: isPointInPath() handles transformations correctly - testing: - - 2d.path.isPointInPath code: | ctx.rect(50, 0, 20, 20); ctx.translate(50, 0); @@ -3451,8 +3225,6 @@ - name: 2d.path.isPointInPath.transform.3 desc: isPointInPath() handles transformations correctly - testing: - - 2d.path.isPointInPath code: | ctx.scale(-1, 1); ctx.rect(-70, 0, 20, 20); @@ -3465,8 +3237,6 @@ - name: 2d.path.isPointInPath.transform.4 desc: isPointInPath() handles transformations correctly - testing: - - 2d.path.isPointInPath code: | ctx.translate(50, 0); ctx.rect(50, 0, 20, 20); @@ -3477,8 +3247,6 @@ - name: 2d.path.isPointInPath.nonfinite desc: isPointInPath() returns false for non-finite arguments - testing: - - 2d.path.isPointInPath.nonfinite code: | ctx.rect(-100, -50, 200, 100); @assert ctx.isPointInPath(Infinity, 0) === false; @@ -3493,8 +3261,6 @@ - name: 2d.path.isPointInStroke.scaleddashes desc: isPointInStroke() should return correct results on dashed paths at high scale factors - testing: - - 2d.path.isPointInStroke code: | var scale = 20; ctx.setLineDash([10, 21.4159]); // dash from t=0 to t=10 along the circle @@ -3513,8 +3279,6 @@ - name: 2d.path.isPointInPath.basic desc: Verify the winding rule in isPointInPath works for for rect path. - testing: - - 2d.isPointInPath.basic code: | canvas.width = 200; canvas.height = 200; @@ -3559,8 +3323,6 @@ - name: 2d.path.isPointInpath.multi.path desc: Verify the winding rule in isPointInPath works for path object. - testing: - - 2d.isPointInPath.basic code: | canvas.width = 200; canvas.height = 200; @@ -3588,8 +3350,6 @@ - name: 2d.path.isPointInpath.invalid desc: Verify isPointInPath throws exceptions with invalid inputs. - testing: - - 2d.isPointInPath.basic code: | canvas.width = 200; canvas.height = 200; diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/pixel-manipulation.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/pixel-manipulation.yaml index 59d3053fc8a..eca8e8b2bda 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/pixel-manipulation.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/pixel-manipulation.yaml @@ -1,22 +1,16 @@ - name: 2d.imageData.create2.basic desc: createImageData(sw, sh) exists and returns something - testing: - - 2d.imageData.create2.object code: | @assert ctx.createImageData(1, 1) !== null; - name: 2d.imageData.create1.basic desc: createImageData(imgdata) exists and returns something - testing: - - 2d.imageData.create1.object code: | @assert ctx.createImageData(ctx.createImageData(1, 1)) !== null; - name: 2d.imageData.create2.type desc: createImageData(sw, sh) returns an ImageData object containing a Uint8ClampedArray object - testing: - - 2d.imageData.create2.object code: | @assert window.ImageData !== undefined; @assert window.Uint8ClampedArray !== undefined; @@ -29,8 +23,6 @@ - name: 2d.imageData.create1.type desc: createImageData(imgdata) returns an ImageData object containing a Uint8ClampedArray object - testing: - - 2d.imageData.create1.object code: | @assert window.ImageData !== undefined; @assert window.Uint8ClampedArray !== undefined; @@ -43,8 +35,6 @@ - name: 2d.imageData.create2.this desc: createImageData(sw, sh) should throw when called with the wrong |this| notes: &bindings Defined in "Web IDL" (draft) - testing: - - 2d.imageData.create2.object code: | @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call(null, 1, 1); @moz-todo @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call(undefined, 1, 1); @moz-todo @@ -53,8 +43,6 @@ - name: 2d.imageData.create1.this desc: createImageData(imgdata) should throw when called with the wrong |this| notes: *bindings - testing: - - 2d.imageData.create2.object code: | var imgdata = ctx.createImageData(1, 1); @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call(null, imgdata); @moz-todo @@ -63,10 +51,6 @@ - name: 2d.imageData.create2.initial desc: createImageData(sw, sh) returns transparent black data of the right size - testing: - - 2d.imageData.create2.size - - 2d.imageData.create.initial - - 2d.imageData.initial code: | var imgdata = ctx.createImageData(10, 20); @assert imgdata.data.length === imgdata.width*imgdata.height*4; @@ -80,10 +64,6 @@ - name: 2d.imageData.create1.initial desc: createImageData(imgdata) returns transparent black data of the right size - testing: - - 2d.imageData.create1.size - - 2d.imageData.create.initial - - 2d.imageData.initial code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -100,8 +80,6 @@ - name: 2d.imageData.create2.large desc: createImageData(sw, sh) works for sizes much larger than the canvas - testing: - - 2d.imageData.create2.size code: | var imgdata = ctx.createImageData(1000, 2000); @assert imgdata.data.length === imgdata.width*imgdata.height*4; @@ -115,8 +93,6 @@ - name: 2d.imageData.create2.negative desc: createImageData(sw, sh) takes the absolute magnitude of the size arguments - testing: - - 2d.imageData.create2.size code: | var imgdata1 = ctx.createImageData(10, 20); var imgdata2 = ctx.createImageData(-10, 20); @@ -128,8 +104,6 @@ - name: 2d.imageData.create2.zero desc: createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero - testing: - - 2d.imageData.getcreate.zero code: | @assert throws INDEX_SIZE_ERR ctx.createImageData(10, 0); @assert throws INDEX_SIZE_ERR ctx.createImageData(0, 10); @@ -140,8 +114,6 @@ - name: 2d.imageData.create2.nonfinite desc: createImageData() throws TypeError if arguments are not finite notes: *bindings - testing: - - 2d.imageData.getcreate.nonfinite code: | @nonfinite @assert throws TypeError ctx.createImageData(<10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); var posinfobj = { valueOf: function() { return Infinity; } }, @@ -151,15 +123,11 @@ - name: 2d.imageData.create1.zero desc: createImageData(null) throws TypeError - testing: - - 2d.imageData.create.null code: | @assert throws TypeError ctx.createImageData(null); - name: 2d.imageData.create2.double desc: createImageData(w, h) double is converted to long - testing: - - 2d.imageData.create2.size code: | var imgdata1 = ctx.createImageData(10.01, 10.99); var imgdata2 = ctx.createImageData(-10.01, -10.99); @@ -170,8 +138,6 @@ - name: 2d.imageData.create.and.resize desc: Verify no crash when resizing an image bitmap to zero. - testing: - - 2d.imageData.resize images: - red.png code: | @@ -186,16 +152,12 @@ - name: 2d.imageData.get.basic desc: getImageData() exists and returns something - testing: - - 2d.imageData.get.basic code: | @assert ctx.getImageData(0, 0, 100, 50) !== null; - name: 2d.imageData.get.type desc: getImageData() returns an ImageData object containing a Uint8ClampedArray object - testing: - - 2d.imageData.get.object code: | @assert window.ImageData !== undefined; @assert window.Uint8ClampedArray !== undefined; @@ -207,8 +169,6 @@ - name: 2d.imageData.get.zero desc: getImageData() throws INDEX_SIZE_ERR if size is zero - testing: - - 2d.imageData.getcreate.zero code: | @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 10, 0); @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 0, 10); @@ -221,8 +181,6 @@ - name: 2d.imageData.get.nonfinite desc: getImageData() throws TypeError if arguments are not finite notes: *bindings - testing: - - 2d.imageData.getcreate.nonfinite code: | @nonfinite @assert throws TypeError ctx.getImageData(<10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); var posinfobj = { valueOf: function() { return Infinity; } }, @@ -232,9 +190,6 @@ - name: 2d.imageData.get.source.outside desc: getImageData() returns transparent black outside the canvas - testing: - - 2d.imageData.get.basic - - 2d.imageData.get.outside code: | ctx.fillStyle = '#08f'; ctx.fillRect(0, 0, 100, 50); @@ -300,9 +255,6 @@ - name: 2d.imageData.get.source.negative desc: getImageData() works with negative width and height, and returns top-to-bottom left-to-right - testing: - - 2d.imageData.get.basic - - 2d.pixelarray.order code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -327,8 +279,6 @@ - name: 2d.imageData.get.source.size desc: getImageData() returns bigger ImageData for bigger source rectangle - testing: - - 2d.imageData.get.basic code: | var imgdata1 = ctx.getImageData(0, 0, 10, 10); var imgdata2 = ctx.getImageData(0, 0, 20, 20); @@ -337,8 +287,6 @@ - name: 2d.imageData.get.double desc: createImageData(w, h) double is converted to long - testing: - - 2d.imageData.get.basic code: | var imgdata1 = ctx.getImageData(0, 0, 10.01, 10.99); var imgdata2 = ctx.getImageData(0, 0, -10.01, -10.99); @@ -348,9 +296,7 @@ @assert imgdata2.height === 10; - name: 2d.imageData.get.nonpremul - desc: getImageData() returns non-premultiplied colours - testing: - - 2d.imageData.get.premul + desc: getImageData() returns non-premultiplied colors code: | ctx.fillStyle = 'rgba(255, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); @@ -363,9 +309,6 @@ - name: 2d.imageData.get.range desc: getImageData() returns values in the range [0, 255] - testing: - - 2d.pixelarray.range - - 2d.pixelarray.retrieve code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -377,9 +320,7 @@ @assert imgdata2.data[0] === 255; - name: 2d.imageData.get.clamp - desc: getImageData() clamps colours to the range [0, 255] - testing: - - 2d.pixelarray.range + desc: getImageData() clamps colors to the range [0, 255] code: | ctx.fillStyle = 'rgb(-100, -200, -300)'; ctx.fillRect(0, 0, 100, 50); @@ -396,16 +337,12 @@ - name: 2d.imageData.get.length desc: getImageData() returns a correctly-sized Uint8ClampedArray - testing: - - 2d.pixelarray.length code: | var imgdata = ctx.getImageData(0, 0, 10, 10); @assert imgdata.data.length === imgdata.width*imgdata.height*4; - name: 2d.imageData.get.order.cols desc: getImageData() returns leftmost columns first - testing: - - 2d.pixelarray.order code: | ctx.fillStyle = '#fff'; ctx.fillRect(0, 0, 100, 50); @@ -418,8 +355,6 @@ - name: 2d.imageData.get.order.rows desc: getImageData() returns topmost rows first - testing: - - 2d.pixelarray.order code: | ctx.fillStyle = '#fff'; ctx.fillRect(0, 0, 100, 50); @@ -432,9 +367,6 @@ - name: 2d.imageData.get.order.rgb desc: getImageData() returns R then G then B - testing: - - 2d.pixelarray.order - - 2d.pixelarray.indexes code: | ctx.fillStyle = '#48c'; ctx.fillRect(0, 0, 100, 50); @@ -450,8 +382,6 @@ - name: 2d.imageData.get.order.alpha desc: getImageData() returns A in the fourth component - testing: - - 2d.pixelarray.order code: | ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; ctx.fillRect(0, 0, 100, 50); @@ -461,8 +391,6 @@ - name: 2d.imageData.get.unaffected desc: getImageData() is not affected by context state - testing: - - 2d.imageData.unaffected code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 50) @@ -485,15 +413,11 @@ - name: 2d.imageData.get.large.crash desc: Test that canvas crash when image data cannot be allocated. - testing: - - 2d.getImageData code: | @assert throws TypeError ctx.getImageData(10, 0xffffffff, 2147483647, 10); - name: 2d.imageData.get.rounding desc: Test the handling of non-integer source coordinates in getImageData(). - testing: - - 2d.getImageData code: | function testDimensions(sx, sy, sw, sh, width, height) { @@ -517,8 +441,6 @@ - name: 2d.imageData.get.invalid desc: Verify getImageData() behavior in invalid cases. - testing: - - 2d.imageData.get.invalid code: | imageData = ctx.getImageData(0,0,2,2); var testValues = [NaN, true, false, "\"garbage\"", "-1", @@ -542,8 +464,6 @@ - name: 2d.imageData.object.properties desc: ImageData objects have the right properties - testing: - - 2d.imageData.type code: | var imgdata = ctx.getImageData(0, 0, 10, 10); @assert typeof(imgdata.width) === 'number'; @@ -552,8 +472,6 @@ - name: 2d.imageData.object.readonly desc: ImageData objects properties are read-only - testing: - - 2d.imageData.type code: | var imgdata = ctx.getImageData(0, 0, 10, 10); var w = imgdata.width; @@ -572,8 +490,6 @@ - name: 2d.imageData.object.ctor.size desc: ImageData has a usable constructor - testing: - - 2d.imageData.type code: | @assert window.ImageData !== undefined; @@ -587,8 +503,6 @@ - name: 2d.imageData.object.ctor.basics desc: Testing different type of ImageData constructor - testing: - - 2d.imageData.type code: | function setRGBA(imageData, i, rgba) { @@ -678,8 +592,6 @@ - name: 2d.imageData.object.ctor.array desc: ImageData has a usable constructor - testing: - - 2d.imageData.type code: | @assert window.ImageData !== undefined; @@ -691,8 +603,6 @@ - name: 2d.imageData.object.ctor.array.bounds desc: ImageData has a usable constructor - testing: - - 2d.imageData.type code: | @assert window.ImageData !== undefined; @@ -705,8 +615,6 @@ - name: 2d.imageData.object.set desc: ImageData.data can be modified - testing: - - 2d.pixelarray.modify code: | var imgdata = ctx.getImageData(0, 0, 10, 10); imgdata.data[0] = 100; @@ -716,8 +624,6 @@ - name: 2d.imageData.object.undefined desc: ImageData.data converts undefined to 0 - testing: - - 2d.pixelarray.modify webidl: - es-octet code: | @@ -728,8 +634,6 @@ - name: 2d.imageData.object.nan desc: ImageData.data converts NaN to 0 - testing: - - 2d.pixelarray.modify webidl: - es-octet code: | @@ -743,8 +647,6 @@ - name: 2d.imageData.object.string desc: ImageData.data converts strings to numbers with ToNumber - testing: - - 2d.pixelarray.modify webidl: - es-octet code: | @@ -761,8 +663,6 @@ - name: 2d.imageData.object.clamp desc: ImageData.data clamps numbers to [0, 255] - testing: - - 2d.pixelarray.modify webidl: - es-octet code: | @@ -798,8 +698,6 @@ - name: 2d.imageData.object.round desc: ImageData.data rounds numbers with round-to-zero - testing: - - 2d.pixelarray.modify webidl: - es-octet code: | @@ -837,16 +735,12 @@ - name: 2d.imageData.put.null desc: putImageData() with null imagedata throws TypeError - testing: - - 2d.imageData.put.wrongtype code: | @assert throws TypeError ctx.putImageData(null, 0, 0); - name: 2d.imageData.put.nonfinite desc: putImageData() throws TypeError if arguments are not finite notes: *bindings - testing: - - 2d.imageData.put.nonfinite code: | var imgdata = ctx.getImageData(0, 0, 10, 10); @nonfinite @assert throws TypeError ctx.putImageData(, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); @@ -854,9 +748,6 @@ - name: 2d.imageData.put.basic desc: putImageData() puts image data from getImageData() onto the canvas - testing: - - 2d.imageData.put.normal - - 2d.imageData.put.3arg code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50) @@ -869,8 +760,6 @@ - name: 2d.imageData.put.created desc: putImageData() puts image data from createImageData() onto the canvas - testing: - - 2d.imageData.put.normal code: | var imgdata = ctx.createImageData(100, 50); for (var i = 0; i < imgdata.data.length; i += 4) { @@ -887,8 +776,6 @@ - name: 2d.imageData.put.wrongtype desc: putImageData() does not accept non-ImageData objects - testing: - - 2d.imageData.put.wrongtype code: | var imgdata = { width: 1, height: 1, data: [255, 0, 0, 255] }; @assert throws TypeError ctx.putImageData(imgdata, 0, 0); @@ -898,8 +785,6 @@ - name: 2d.imageData.put.cross desc: putImageData() accepts image data got from a different canvas - testing: - - 2d.imageData.put.normal code: | var canvas2 = document.createElement('canvas'); var ctx2 = canvas2.getContext('2d'); @@ -914,8 +799,6 @@ - name: 2d.imageData.put.alpha desc: putImageData() puts non-solid image data correctly - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = 'rgba(0, 255, 0, 0.25)'; ctx.fillRect(0, 0, 100, 50) @@ -932,8 +815,6 @@ - name: 2d.imageData.put.modified desc: putImageData() puts modified image data correctly - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50) @@ -951,8 +832,6 @@ - name: 2d.imageData.put.dirty.zero desc: putImageData() with zero-sized dirty rectangle puts nothing - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -966,8 +845,6 @@ - name: 2d.imageData.put.dirty.rect1 desc: putImageData() only modifies areas inside the dirty rectangle, using width and height - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -992,8 +869,6 @@ - name: 2d.imageData.put.dirty.rect2 desc: putImageData() only modifies areas inside the dirty rectangle, using x and y - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -1017,8 +892,6 @@ - name: 2d.imageData.put.dirty.negative desc: putImageData() handles negative-sized dirty rectangles correctly - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -1042,8 +915,6 @@ - name: 2d.imageData.put.dirty.outside desc: putImageData() handles dirty rectangles outside the canvas correctly - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -1069,8 +940,6 @@ - name: 2d.imageData.put.unchanged desc: putImageData(getImageData(...), ...) has no effect - testing: - - 2d.imageData.unchanged code: | var i = 0; for (var y = 0; y < 16; ++y) { @@ -1093,8 +962,6 @@ - name: 2d.imageData.put.unaffected desc: putImageData() is not affected by context state - testing: - - 2d.imageData.unaffected code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50) @@ -1113,8 +980,6 @@ - name: 2d.imageData.put.clip desc: putImageData() is not affected by clipping regions - testing: - - 2d.imageData.unaffected code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50) @@ -1131,8 +996,6 @@ - name: 2d.imageData.put.path desc: putImageData() does not affect the current path - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -1143,4 +1006,3 @@ ctx.fill(); @assert pixel 50,25 ==~ 0,255,0,255; expected: green - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/shadows.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/shadows.yaml index 599c00804d7..7a7c115a7c4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/shadows.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/shadows.yaml @@ -1,14 +1,8 @@ - name: 2d.shadow.attributes.shadowBlur.initial - testing: - - 2d.shadow.blur.get - - 2d.shadow.blur.initial code: | @assert ctx.shadowBlur === 0; - name: 2d.shadow.attributes.shadowBlur.valid - testing: - - 2d.shadow.blur.get - - 2d.shadow.blur.set code: | ctx.shadowBlur = 1; @assert ctx.shadowBlur === 1; @@ -23,8 +17,6 @@ @assert ctx.shadowBlur === 0; - name: 2d.shadow.attributes.shadowBlur.invalid - testing: - - 2d.shadow.blur.invalid code: | ctx.shadowBlur = 1; ctx.shadowBlur = -2; @@ -55,16 +47,11 @@ @assert ctx.shadowBlur === 0; - name: 2d.shadow.attributes.shadowOffset.initial - testing: - - 2d.shadow.offset.initial code: | @assert ctx.shadowOffsetX === 0; @assert ctx.shadowOffsetY === 0; - name: 2d.shadow.attributes.shadowOffset.valid - testing: - - 2d.shadow.offset.get - - 2d.shadow.offset.set code: | ctx.shadowOffsetX = 1; ctx.shadowOffsetY = 2; @@ -92,8 +79,6 @@ @assert ctx.shadowOffsetY === 1e6; - name: 2d.shadow.attributes.shadowOffset.invalid - testing: - - 2d.shadow.offset.invalid code: | ctx.shadowOffsetX = 1; ctx.shadowOffsetY = 2; @@ -138,15 +123,10 @@ @assert ctx.shadowOffsetY === 0; - name: 2d.shadow.attributes.shadowColor.initial - testing: - - 2d.shadow.color.initial code: | @assert ctx.shadowColor === 'rgba(0, 0, 0, 0)'; - name: 2d.shadow.attributes.shadowColor.valid - testing: - - 2d.shadow.color.get - - 2d.shadow.color.set code: | ctx.shadowColor = 'lime'; @assert ctx.shadowColor === '#00ff00'; @@ -155,8 +135,6 @@ @assert ctx.shadowColor === 'rgba(0, 255, 0, 0)'; - name: 2d.shadow.attributes.shadowColor.invalid - testing: - - 2d.shadow.color.invalid code: | ctx.shadowColor = '#00ff00'; ctx.shadowColor = 'bogus'; @@ -176,9 +154,6 @@ - name: 2d.shadow.enable.off.1 desc: Shadows are not drawn when only shadowColor is set - testing: - - 2d.shadow.enable - - 2d.shadow.render code: | ctx.shadowColor = '#f00'; ctx.fillStyle = '#0f0'; @@ -188,9 +163,6 @@ - name: 2d.shadow.enable.off.2 desc: Shadows are not drawn when only shadowColor is set - testing: - - 2d.shadow.enable - - 2d.shadow.render code: | ctx.globalCompositeOperation = 'destination-atop'; ctx.shadowColor = '#f00'; @@ -201,9 +173,6 @@ - name: 2d.shadow.enable.blur desc: Shadows are drawn if shadowBlur is set - testing: - - 2d.shadow.enable - - 2d.shadow.render code: | ctx.globalCompositeOperation = 'destination-atop'; ctx.shadowColor = '#0f0'; @@ -215,9 +184,6 @@ - name: 2d.shadow.enable.x desc: Shadows are drawn if shadowOffsetX is set - testing: - - 2d.shadow.enable - - 2d.shadow.render code: | ctx.globalCompositeOperation = 'destination-atop'; ctx.shadowColor = '#0f0'; @@ -229,9 +195,6 @@ - name: 2d.shadow.enable.y desc: Shadows are drawn if shadowOffsetY is set - testing: - - 2d.shadow.enable - - 2d.shadow.render code: | ctx.globalCompositeOperation = 'destination-atop'; ctx.shadowColor = '#0f0'; @@ -243,8 +206,6 @@ - name: 2d.shadow.offset.positiveX desc: Shadows can be offset with positive x - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -258,8 +219,6 @@ - name: 2d.shadow.offset.negativeX desc: Shadows can be offset with negative x - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -273,8 +232,6 @@ - name: 2d.shadow.offset.positiveY desc: Shadows can be offset with positive y - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -288,8 +245,6 @@ - name: 2d.shadow.offset.negativeY desc: Shadows can be offset with negative y - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -304,8 +259,6 @@ - name: 2d.shadow.outside desc: Shadows of shapes outside the visible area can be offset onto the visible area - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -327,8 +280,6 @@ - name: 2d.shadow.clip.1 desc: Shadows of clipped shapes are still drawn within the clipping region - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 50); @@ -350,8 +301,6 @@ - name: 2d.shadow.clip.2 desc: Shadows are not drawn outside the clipping region - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); @@ -373,8 +322,6 @@ - name: 2d.shadow.clip.3 desc: Shadows of clipped shapes are still drawn within the clipping region - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); @@ -397,8 +344,6 @@ - name: 2d.shadow.stroke.basic desc: Shadows are drawn for strokes - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -418,8 +363,6 @@ - name: 2d.shadow.stroke.cap.1 desc: Shadows are not drawn for areas outside stroke caps - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -442,8 +385,6 @@ - name: 2d.shadow.stroke.cap.2 desc: Shadows are drawn for stroke caps - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -464,8 +405,6 @@ - name: 2d.shadow.stroke.join.1 desc: Shadows are not drawn for areas outside stroke joins - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -488,8 +427,6 @@ - name: 2d.shadow.stroke.join.2 desc: Shadows are drawn for stroke joins - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); @@ -514,8 +451,6 @@ - name: 2d.shadow.stroke.join.3 desc: Shadows are drawn for stroke joins respecting miter limit - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -539,8 +474,6 @@ - name: 2d.shadow.image.basic desc: Shadows are drawn for images - testing: - - 2d.shadow.render images: - red.png code: | @@ -555,8 +488,6 @@ - name: 2d.shadow.image.transparent.1 desc: Shadows are not drawn for transparent images - testing: - - 2d.shadow.render images: - transparent.png code: | @@ -571,8 +502,6 @@ - name: 2d.shadow.image.transparent.2 desc: Shadows are not drawn for transparent parts of images - testing: - - 2d.shadow.render images: - redtransparent.png code: | @@ -593,8 +522,6 @@ - name: 2d.shadow.image.alpha desc: Shadows are drawn correctly for partially-transparent images - testing: - - 2d.shadow.render images: - transparent50.png code: | @@ -613,8 +540,6 @@ - name: 2d.shadow.image.section desc: Shadows are not drawn for areas outside image source rectangles - testing: - - 2d.shadow.render images: - redtransparent.png code: | @@ -631,8 +556,6 @@ - name: 2d.shadow.image.scale desc: Shadows are drawn correctly for scaled images - testing: - - 2d.shadow.render images: - redtransparent.png code: | @@ -649,8 +572,6 @@ - name: 2d.shadow.canvas.basic desc: Shadows are drawn for canvases - testing: - - 2d.shadow.render code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -670,8 +591,6 @@ - name: 2d.shadow.canvas.transparent.1 desc: Shadows are not drawn for transparent canvases - testing: - - 2d.shadow.render code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -689,8 +608,6 @@ - name: 2d.shadow.canvas.transparent.2 desc: Shadows are not drawn for transparent parts of canvases - testing: - - 2d.shadow.render code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -716,8 +633,6 @@ - name: 2d.shadow.canvas.alpha desc: Shadows are drawn correctly for partially-transparent canvases - testing: - - 2d.shadow.render images: - transparent50.png code: | @@ -743,8 +658,6 @@ - name: 2d.shadow.pattern.basic desc: Shadows are drawn for fill patterns - testing: - - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 images: - red.png @@ -762,8 +675,6 @@ - name: 2d.shadow.pattern.transparent.1 desc: Shadows are not drawn for transparent fill patterns - testing: - - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 images: - transparent.png @@ -781,8 +692,6 @@ - name: 2d.shadow.pattern.transparent.2 desc: Shadows are not drawn for transparent parts of fill patterns - testing: - - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 images: - redtransparent.png @@ -804,8 +713,6 @@ - name: 2d.shadow.pattern.alpha desc: Shadows are drawn correctly for partially-transparent fill patterns - testing: - - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 images: - transparent50.png @@ -827,8 +734,6 @@ - name: 2d.shadow.gradient.basic desc: Shadows are drawn for gradient fills - testing: - - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 code: | var gradient = ctx.createLinearGradient(0, 0, 100, 0); @@ -846,8 +751,6 @@ - name: 2d.shadow.gradient.transparent.1 desc: Shadows are not drawn for transparent gradient fills - testing: - - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 code: | var gradient = ctx.createLinearGradient(0, 0, 100, 0); @@ -865,8 +768,6 @@ - name: 2d.shadow.gradient.transparent.2 desc: Shadows are not drawn for transparent parts of gradient fills - testing: - - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 code: | var gradient = ctx.createLinearGradient(0, 0, 100, 0); @@ -890,8 +791,6 @@ - name: 2d.shadow.gradient.alpha desc: Shadows are drawn correctly for partially-transparent gradient fills - testing: - - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 code: | var gradient = ctx.createLinearGradient(0, 0, 100, 0); @@ -913,8 +812,6 @@ - name: 2d.shadow.transform.1 desc: Shadows take account of transformations - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -928,8 +825,6 @@ - name: 2d.shadow.transform.2 desc: Shadow offsets are not affected by transformations - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -944,8 +839,6 @@ - name: 2d.shadow.blur.low desc: Shadows look correct for small blurs manual: - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#ff0'; ctx.fillRect(0, 0, 100, 50); @@ -985,8 +878,6 @@ - name: 2d.shadow.blur.high desc: Shadows look correct for large blurs manual: - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#ff0'; ctx.fillRect(0, 0, 100, 50); @@ -1010,9 +901,7 @@ cr.fill() - name: 2d.shadow.alpha.1 - desc: Shadow colour alpha components are used - testing: - - 2d.shadow.render + desc: Shadow color alpha components are used code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1024,9 +913,7 @@ expected: green - name: 2d.shadow.alpha.2 - desc: Shadow colour alpha components are used - testing: - - 2d.shadow.render + desc: Shadow color alpha components are used code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1043,8 +930,6 @@ - name: 2d.shadow.alpha.3 desc: Shadows are affected by globalAlpha - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1063,8 +948,6 @@ - name: 2d.shadow.alpha.4 desc: Shadows with alpha components are correctly affected by globalAlpha - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1083,8 +966,6 @@ - name: 2d.shadow.alpha.5 desc: Shadows of shapes with alpha components are drawn correctly - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1102,8 +983,6 @@ - name: 2d.shadow.composite.1 desc: Shadows are drawn using globalCompositeOperation - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1118,8 +997,6 @@ - name: 2d.shadow.composite.2 desc: Shadows are drawn using globalCompositeOperation - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1134,8 +1011,6 @@ - name: 2d.shadow.composite.3 desc: Areas outside shadows are drawn correctly with destination-out - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml index c4d2caf007c..344a5a0752e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml @@ -1,7 +1,4 @@ - name: 2d.text.font.parse.basic - testing: - - 2d.text.font.parse - - 2d.text.font.get code: | ctx.font = '20px serif'; @assert ctx.font === '20px serif'; @@ -10,27 +7,16 @@ @assert ctx.font === '20px serif'; @moz-todo - name: 2d.text.font.parse.tiny - testing: - - 2d.text.font.parse - - 2d.text.font.get code: | ctx.font = '1px sans-serif'; @assert ctx.font === '1px sans-serif'; - name: 2d.text.font.parse.complex - testing: - - 2d.text.font.parse - - 2d.text.font.get - - 2d.text.font.lineheight code: | ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif'; @assert ctx.font === 'italic small-caps 12px "Unknown Font", sans-serif'; @moz-todo - name: 2d.text.font.parse.family - testing: - - 2d.text.font.parse - - 2d.text.font.get - - 2d.text.font.lineheight code: | ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","'; @assert ctx.font === '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","'; @@ -46,11 +32,6 @@ # in cm mm pt pc - name: 2d.text.font.parse.size.percentage - testing: - - 2d.text.font.parse - - 2d.text.font.get - - 2d.text.font.fontsize - - 2d.text.font.size canvas: 'style="font-size: 144px" width="100" height="50"' code: | ctx.font = '50% serif'; @@ -59,8 +40,6 @@ @assert ctx.font === '72px serif'; @moz-todo - name: 2d.text.font.parse.size.percentage.default - testing: - - 2d.text.font.undefined code: | var canvas2 = document.createElement('canvas'); var ctx2 = canvas2.getContext('2d'); @@ -69,17 +48,11 @@ - name: 2d.text.font.parse.system desc: System fonts must be computed to explicit values - testing: - - 2d.text.font.parse - - 2d.text.font.get - - 2d.text.font.systemfonts code: | ctx.font = 'message-box'; @assert ctx.font !== 'message-box'; - name: 2d.text.font.parse.invalid - testing: - - 2d.text.font.invalid code: | ctx.font = '20px serif'; @assert ctx.font === '20px serif'; @@ -129,14 +102,10 @@ @assert ctx.font === '20px serif'; - name: 2d.text.font.default - testing: - - 2d.text.font.default code: | @assert ctx.font === '10px sans-serif'; - name: 2d.text.font.relative_size - testing: - - 2d.text.font.relative_size code: | var canvas2 = document.createElement('canvas'); var ctx2 = canvas2.getContext('2d'); @@ -144,9 +113,6 @@ @assert ctx2.font === '10px sans-serif'; - name: 2d.text.align.valid - testing: - - 2d.text.align.get - - 2d.text.align.set code: | ctx.textAlign = 'start'; @assert ctx.textAlign === 'start'; @@ -164,8 +130,6 @@ @assert ctx.textAlign === 'center'; - name: 2d.text.align.invalid - testing: - - 2d.text.align.invalid code: | ctx.textAlign = 'start'; ctx.textAlign = 'bogus'; @@ -184,16 +148,11 @@ @assert ctx.textAlign === 'start'; - name: 2d.text.align.default - testing: - - 2d.text.align.default code: | @assert ctx.textAlign === 'start'; - name: 2d.text.baseline.valid - testing: - - 2d.text.baseline.get - - 2d.text.baseline.set code: | ctx.textBaseline = 'top'; @assert ctx.textBaseline === 'top'; @@ -214,8 +173,6 @@ @assert ctx.textBaseline === 'bottom'; - name: 2d.text.baseline.invalid - testing: - - 2d.text.baseline.invalid code: | ctx.textBaseline = 'top'; ctx.textBaseline = 'bogus'; @@ -234,8 +191,6 @@ @assert ctx.textBaseline === 'top'; - name: 2d.text.baseline.default - testing: - - 2d.text.baseline.default code: | @assert ctx.textBaseline === 'alphabetic'; @@ -245,8 +200,6 @@ - name: 2d.text.draw.baseline.top desc: textBaseline top is the top of the em square (not the bounding box) - testing: - - 2d.text.baseline.top fonts: - CanvasTest code: | @@ -269,8 +222,6 @@ - name: 2d.text.draw.baseline.bottom desc: textBaseline bottom is the bottom of the em square (not the bounding box) - testing: - - 2d.text.baseline.bottom fonts: - CanvasTest code: | @@ -293,8 +244,6 @@ - name: 2d.text.draw.baseline.middle desc: textBaseline middle is the middle of the em square (not the bounding box) - testing: - - 2d.text.baseline.middle fonts: - CanvasTest code: | @@ -316,8 +265,6 @@ expected: green - name: 2d.text.draw.baseline.alphabetic - testing: - - 2d.text.baseline.alphabetic fonts: - CanvasTest code: | @@ -339,8 +286,6 @@ expected: green - name: 2d.text.draw.baseline.ideographic - testing: - - 2d.text.baseline.ideographic fonts: - CanvasTest code: | @@ -362,8 +307,6 @@ expected: green - name: 2d.text.draw.baseline.hanging - testing: - - 2d.text.baseline.hanging fonts: - CanvasTest code: | @@ -386,8 +329,6 @@ - name: 2d.text.draw.space.collapse.space desc: Space characters are converted to U+0020, and collapsed (per CSS) - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -405,8 +346,6 @@ - name: 2d.text.draw.space.collapse.other desc: Space characters are converted to U+0020, and collapsed (per CSS) - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -424,8 +363,6 @@ - name: 2d.text.draw.space.collapse.start desc: Space characters at the start of a line are collapsed (per CSS) - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -443,8 +380,6 @@ - name: 2d.text.draw.space.collapse.end desc: Space characters at the end of a line are collapsed (per CSS) - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -464,8 +399,6 @@ - name: 2d.text.measure.width.space desc: Space characters are converted to U+0020 and collapsed (per CSS) - testing: - - 2d.text.measure.spaces fonts: - CanvasTest code: | @@ -487,8 +420,6 @@ - name: 2d.text.measure.rtl.text desc: Measurement should follow canvas direction instead text direction - testing: - - 2d.text.measure.rtl.text fonts: - CanvasTest code: | @@ -500,8 +431,6 @@ - name: 2d.text.measure.boundingBox.textAlign desc: Measurement should be related to textAlignment - testing: - - 2d.text.measure.boundingBox.textAlign code: | ctx.textAlign = "right"; metrics = ctx.measureText('hello'); @@ -513,8 +442,6 @@ - name: 2d.text.measure.boundingBox.direction desc: Measurement should follow text direction - testing: - - 2d.text.measure.boundingBox.direction code: | ctx.direction = "ltr"; metrics = ctx.measureText('hello'); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml index 5abee030077..5c07375dd2a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml @@ -1,14 +1,10 @@ - name: 2d.getcontext.exists desc: The 2D context is implemented - testing: - - context.2d code: | @assert canvas.getContext('2d') !== null; - name: 2d.getcontext.invalid.args desc: Calling getContext with invalid arguments. - testing: - - context.2d code: | @assert canvas.getContext('') === null; @assert canvas.getContext('2d#') === null; @@ -22,8 +18,6 @@ - name: 2d.getcontext.extraargs.create desc: The 2D context doesn't throw with extra getContext arguments (new context) - testing: - - context.2d.extraargs code: | @assert document.createElement("canvas").getContext('2d', false, {}, [], 1, "2") !== null; @assert document.createElement("canvas").getContext('2d', 123) !== null; @@ -34,8 +28,6 @@ - name: 2d.getcontext.extraargs.cache desc: The 2D context doesn't throw with extra getContext arguments (cached) - testing: - - context.2d.extraargs code: | @assert canvas.getContext('2d', false, {}, [], 1, "2") !== null; @assert canvas.getContext('2d', 123) !== null; @@ -47,8 +39,6 @@ - name: 2d.type.exists desc: The 2D context interface is a property of 'window' notes: &bindings Defined in "Web IDL" (draft) - testing: - - context.2d.type code: | @assert window.CanvasRenderingContext2D; @@ -56,8 +46,6 @@ desc: window.CanvasRenderingContext2D.prototype are not [[Writable]] and not [[Configurable]], and its methods are [[Configurable]]. notes: *bindings - testing: - - context.2d.type code: | @assert window.CanvasRenderingContext2D.prototype; @assert window.CanvasRenderingContext2D.prototype.fill; @@ -73,8 +61,6 @@ - name: 2d.type.replace desc: Interface methods can be overridden notes: *bindings - testing: - - context.2d.type code: | var fillRect = window.CanvasRenderingContext2D.prototype.fillRect; window.CanvasRenderingContext2D.prototype.fillRect = function (x, y, w, h) @@ -90,8 +76,6 @@ - name: 2d.type.extend desc: Interface methods can be added notes: *bindings - testing: - - context.2d.type code: | window.CanvasRenderingContext2D.prototype.fillRectGreen = function (x, y, w, h) { @@ -105,15 +89,11 @@ - name: 2d.getcontext.unique desc: getContext('2d') returns the same object - testing: - - context.unique code: | @assert canvas.getContext('2d') === canvas.getContext('2d'); - name: 2d.getcontext.shared desc: getContext('2d') returns objects which share canvas state - testing: - - context.unique code: | var ctx2 = canvas.getContext('2d'); ctx.fillStyle = '#f00'; @@ -142,15 +122,11 @@ - name: 2d.canvas.reference desc: CanvasRenderingContext2D.canvas refers back to its canvas - testing: - - 2d.canvas code: | @assert ctx.canvas === canvas; - name: 2d.canvas.readonly desc: CanvasRenderingContext2D.canvas is readonly - testing: - - 2d.canvas.attribute code: | var c = document.createElement('canvas'); var d = ctx.canvas; @@ -160,10 +136,7 @@ - name: 2d.canvas.context desc: checks CanvasRenderingContext2D prototype - testing: - - 2d.path.contexttypexxx.basic code: | @assert Object.getPrototypeOf(CanvasRenderingContext2D.prototype) === Object.prototype; @assert Object.getPrototypeOf(ctx) === CanvasRenderingContext2D.prototype; t.done(); - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-state.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-state.yaml index dda6dc314dd..04520861543 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-state.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-state.yaml @@ -1,7 +1,5 @@ - name: 2d.state.saverestore.transformation desc: save()/restore() affects the current transformation matrix - testing: - - 2d.state.transformation code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -15,8 +13,6 @@ - name: 2d.state.saverestore.clip desc: save()/restore() affects the clipping path - testing: - - 2d.state.clip code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -31,8 +27,6 @@ - name: 2d.state.saverestore.path desc: save()/restore() does not affect the current path - testing: - - 2d.state.path code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -46,8 +40,6 @@ - name: 2d.state.saverestore.bitmap desc: save()/restore() does not affect the current bitmap - testing: - - 2d.state.bitmap code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -60,9 +52,6 @@ - name: 2d.state.saverestore.stack desc: save()/restore() can be nested as a stack - testing: - - 2d.state.save - - 2d.state.restore code: | ctx.lineWidth = 1; ctx.save(); @@ -77,9 +66,6 @@ - name: 2d.state.saverestore.stackdepth desc: save()/restore() stack depth is not unreasonably limited - testing: - - 2d.state.save - - 2d.state.restore code: | var limit = 512; for (var i = 1; i < limit; ++i) @@ -95,13 +81,9 @@ - name: 2d.state.saverestore.underflow desc: restore() with an empty stack has no effect - testing: - - 2d.state.restore.underflow code: | for (var i = 0; i < 16; ++i) ctx.restore(); ctx.lineWidth = 0.5; ctx.restore(); @assert ctx.lineWidth === 0.5; - - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml index b6aaec73c5f..876c48f849c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml @@ -1,7 +1,5 @@ - name: 2d.transformation.order desc: Transformations are applied in the right order - testing: - - 2d.transformation.order code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -16,8 +14,6 @@ - name: 2d.transformation.scale.basic desc: scale() works - testing: - - 2d.transformation.scale code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -30,8 +26,6 @@ - name: 2d.transformation.scale.zero desc: scale() with a scale factor of zero works - testing: - - 2d.transformation.scale code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -57,8 +51,6 @@ - name: 2d.transformation.scale.negative desc: scale() with negative scale factors works - testing: - - 2d.transformation.scale code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -81,8 +73,6 @@ - name: 2d.transformation.scale.large desc: scale() with large scale factors works notes: Not really that large at all, but it hits the limits in Firefox. - testing: - - 2d.transformation.scale code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -95,8 +85,6 @@ - name: 2d.transformation.scale.nonfinite desc: scale() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -112,8 +100,6 @@ - name: 2d.transformation.scale.multiple desc: Multiple scale()s combine - testing: - - 2d.transformation.scale.multiple code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -128,8 +114,6 @@ - name: 2d.transformation.rotate.zero desc: rotate() by 0 does nothing - testing: - - 2d.transformation.rotate code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -142,8 +126,6 @@ - name: 2d.transformation.rotate.radians desc: rotate() uses radians - testing: - - 2d.transformation.rotate.radians code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -156,8 +138,6 @@ - name: 2d.transformation.rotate.direction desc: rotate() is clockwise - testing: - - 2d.transformation.rotate.direction code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -170,8 +150,6 @@ - name: 2d.transformation.rotate.wrap desc: rotate() wraps large positive values correctly - testing: - - 2d.transformation.rotate code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -189,8 +167,6 @@ - name: 2d.transformation.rotate.wrapnegative desc: rotate() wraps large negative values correctly - testing: - - 2d.transformation.rotate code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -205,8 +181,6 @@ - name: 2d.transformation.rotate.nonfinite desc: rotate() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -222,8 +196,6 @@ - name: 2d.transformation.translate.basic desc: translate() works - testing: - - 2d.transformation.translate code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -236,8 +208,6 @@ - name: 2d.transformation.translate.nonfinite desc: translate() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -254,8 +224,6 @@ - name: 2d.transformation.transform.identity desc: transform() with the identity matrix does nothing - testing: - - 2d.transformation.transform code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -268,8 +236,6 @@ - name: 2d.transformation.transform.skewed desc: transform() with skewy matrix transforms correctly - testing: - - 2d.transformation.transform code: | // Create green with a red square ring inside it ctx.fillStyle = '#0f0'; @@ -304,8 +270,6 @@ - name: 2d.transformation.transform.multiply desc: transform() multiplies the CTM - testing: - - 2d.transformation.transform.multiply code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -319,8 +283,6 @@ - name: 2d.transformation.transform.nonfinite desc: transform() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -335,8 +297,6 @@ expected: green - name: 2d.transformation.setTransform.skewed - testing: - - 2d.transformation.setTransform code: | // Create green with a red square ring inside it ctx.fillStyle = '#0f0'; @@ -370,8 +330,6 @@ expected: green - name: 2d.transformation.setTransform.multiple - testing: - - 2d.transformation.setTransform.identity code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -386,8 +344,6 @@ - name: 2d.transformation.setTransform.nonfinite desc: setTransform() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -399,4 +355,4 @@ ctx.fillRect(-100, -10, 100, 50); @assert pixel 50,25 == 0,255,0,255; - expected: green \ No newline at end of file + expected: green diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/drawing-images-to-the-canvas.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/drawing-images-to-the-canvas.yaml deleted file mode 100644 index f2be7b8e07b..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/drawing-images-to-the-canvas.yaml +++ /dev/null @@ -1,837 +0,0 @@ -- name: 2d.drawImage.3arg - testing: - - 2d.drawImage.defaultsource - - 2d.drawImage.defaultdest - timeout: long - images: - - red.png - - green.png - code: | - var promise1 = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - var promise2 = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - Promise.all([promise1, promise2]).then(function(response1, response2) { - var promise3 = createImageBitmap(response1); - var promise4 = createImageBitmap(response2); - Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) { - ctx.drawImage(bitmap2, 0, 0); - ctx.drawImage(bitmap1, -100, 0); - ctx.drawImage(bitmap1, 100, 0); - ctx.drawImage(bitmap1, 0, -50); - ctx.drawImage(bitmap1, 0, 50); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.5arg - testing: - - 2d.drawImage.defaultsource - images: - - red.png - - green.png - timeout: long - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var promise1 = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - var promise2 = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - Promise.all([promise1, promise2]).then(function(response1, response2) { - var promise3 = createImageBitmap(response1); - var promise4 = createImageBitmap(response2); - Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) { - ctx.drawImage(bitmap2, 50, 0, 50, 50); - ctx.drawImage(bitmap1, 0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.9arg.basic - testing: - - 2d.drawImage.paint - images: - - green.png - timeout: long - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, 50); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.9arg.sourcepos - testing: - - 2d.drawImage.paint - images: - - rgrg-256x256.png - timeout: long - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/rgrg-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 140, 20, 100, 50, 0, 0, 100, 50); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.9arg.sourcesize - testing: - - 2d.drawImage.paint - images: - - rgrg-256x256.png - timeout: long - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/rgrg-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0, 256, 256, 0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 51, 26); - ctx.fillRect(49, 24, 51, 26); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - @assert pixel 20,20 ==~ 0,255,0,255; - @assert pixel 80,20 ==~ 0,255,0,255; - @assert pixel 20,30 ==~ 0,255,0,255; - @assert pixel 80,30 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.9arg.destpos - testing: - - 2d.drawImage.paint - images: - - red.png - - green.png - timeout: long - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var promise1 = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - var promise2 = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - Promise.all([promise1, promise2]).then(function(response1, response2) { - var promise3 = createImageBitmap(response1); - var promise4 = createImageBitmap(response2); - Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) { - ctx.drawImage(bitmap2, 0, 0, 100, 50, 0, 0, 100, 50); - ctx.drawImage(bitmap1, 0, 0, 100, 50, -100, 0, 100, 50); - ctx.drawImage(bitmap1, 0, 0, 100, 50, 100, 0, 100, 50); - ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, -50, 100, 50); - ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, 50, 100, 50); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.9arg.destsize - testing: - - 2d.drawImage.paint - images: - - red.png - - green.png - timeout: long - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var promise1 = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - var promise2 = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - Promise.all([promise1, promise2]).then(function(response1, response2) { - var promise3 = createImageBitmap(response1); - var promise4 = createImageBitmap(response2); - Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) { - ctx.drawImage(bitmap2, 1, 1, 1, 1, 0, 0, 100, 50); - ctx.drawImage(bitmap1, 0, 0, 100, 50, -50, 0, 50, 50); - ctx.drawImage(bitmap1, 0, 0, 100, 50, 100, 0, 50, 50); - ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, -25, 100, 25); - ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, 50, 100, 25); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.canvas - testing: - - 2d.drawImage.paint - timeout: long - code: | - var offscreenCanvas2 = new OffscreenCanvas(100, 50); - var ctx2 = offscreenCanvas2.getContext('2d'); - ctx2.fillStyle = '#0f0'; - ctx2.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.drawImage(offscreenCanvas2, 0, 0); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - t.done(); - -- name: 2d.drawImage.self.1 - testing: - - 2d.drawImage.self - timeout: long - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50); - ctx.drawImage(canvas, 50, 0); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - t.done(); - -- name: 2d.drawImage.self.2 - testing: - - 2d.drawImage.self - timeout: long - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 1, 100, 49); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 1); - ctx.drawImage(canvas, 0, 1); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 2); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - t.done(); - -- name: 2d.drawImage.null - testing: - - 2d.drawImage.IDL - timeout: long - code: | - @assert throws TypeError ctx.drawImage(null, 0, 0); - t.done(); - -- name: 2d.drawImage.zerocanvas - testing: - - 2d.drawImage.zerocanvas - timeout: long - code: | - var offscreenCanvas2 = new OffscreenCanvas(0, 10); - @assert throws INVALID_STATE_ERR ctx.drawImage(offscreenCanvas2, 0, 0); - - offscreenCanvas2.width = 10; - offscreenCanvas2.height = 0; - @assert throws INVALID_STATE_ERR ctx.drawImage(offscreenCanvas2, 0, 0); - - offscreenCanvas2.width = 0; - offscreenCanvas2.height = 0; - @assert throws INVALID_STATE_ERR ctx.drawImage(offscreenCanvas2, 0, 0); - t.done(); - -- name: 2d.drawImage.wrongtype - desc: Incorrect image types in drawImage do not match any defined overloads, so - WebIDL throws a TypeError - testing: - - 2d.drawImage.IDL - timeout: long - code: | - @assert throws TypeError ctx.drawImage(undefined, 0, 0); - @assert throws TypeError ctx.drawImage(0, 0, 0); - @assert throws TypeError ctx.drawImage("", 0, 0); - t.done(); - -- name: 2d.drawImage.floatsource - testing: - - 2d.drawImage.paint - timeout: long - code: | - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.zerosource - desc: drawImage with zero-sized source rectangle draws nothing without exception - testing: - - 2d.drawImage.zerosource - timeout: long - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50); - ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50); - ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.zerosource.image - desc: drawImage with zero-sized source rectangle from image draws nothing without exception - testing: - - 2d.drawImage.zerosource - images: - - red-zerowidth.svg - - red-zeroheight.svg - - red-zerosize.svg - timeout: long - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red-zerowidth.svg'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0, 100, 50); - ctx.drawImage(bitmap, 0, 0, 100, 50); - ctx.drawImage(bitmap, 0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.negativesource - desc: Negative source width/height represents the correct rectangle - testing: - - 2d.drawImage.direction - mozilla: {throws: !!null ''} - images: - - ggrr-256x256.png - timeout: long - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 100, 78, -100, 50, 0, 0, 50, 50); - ctx.drawImage(bitmap, 100, 128, -100, -50, 50, 0, 50, 50); - @assert pixel 1,1 ==~ 0,255,0,255; - @assert pixel 1,48 ==~ 0,255,0,255; - @assert pixel 98,1 ==~ 0,255,0,255; - @assert pixel 98,48 ==~ 0,255,0,255; - @assert pixel 48,1 ==~ 0,255,0,255; - @assert pixel 48,48 ==~ 0,255,0,255; - @assert pixel 51,1 ==~ 0,255,0,255; - @assert pixel 51,48 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.negativedest - desc: Negative destination width/height represents the correct rectangle - testing: - - 2d.drawImage.direction - mozilla: {throws: !!null ''} - timeout: long - images: - - ggrr-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 100, 78, 50, 50, 0, 50, 50, -50); - ctx.drawImage(bitmap, 100, 128, 50, -50, 100, 50, -50, -50); - @assert pixel 1,1 ==~ 0,255,0,255; - @assert pixel 1,48 ==~ 0,255,0,255; - @assert pixel 98,1 ==~ 0,255,0,255; - @assert pixel 98,48 ==~ 0,255,0,255; - @assert pixel 48,1 ==~ 0,255,0,255; - @assert pixel 48,48 ==~ 0,255,0,255; - @assert pixel 51,1 ==~ 0,255,0,255; - @assert pixel 51,48 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.negativedir - desc: Negative dimensions do not affect the direction of the image - testing: - - 2d.drawImage.direction - mozilla: {throws: !!null ''} - timeout: long - images: - - ggrr-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 178, 50, -100, 0, 0, 50, 100); - ctx.drawImage(bitmap, 0, 78, 50, 100, 50, 100, 50, -100); - @assert pixel 1,1 ==~ 0,255,0,255; - @assert pixel 1,48 ==~ 0,255,0,255; - @assert pixel 98,1 ==~ 0,255,0,255; - @assert pixel 98,48 ==~ 0,255,0,255; - @assert pixel 48,1 ==~ 0,255,0,255; - @assert pixel 48,48 ==~ 0,255,0,255; - @assert pixel 51,1 ==~ 0,255,0,255; - @assert pixel 51,48 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.outsidesource - DISABLED: fix this to match the current spec (transparent black outside source) - testing: - - 2d.drawImage.outsidesource - code: | - var promise1 = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - var promise2 = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - Promise.all([promise1, promise2]).then(function(response1, response2) { - var promise3 = createImageBitmap(response1); - var promise4 = createImageBitmap(response2); - Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) { - ctx.drawImage(bitmap2, 10.5, 10.5, 89.5, 39.5, 0, 0, 100, 50); - ctx.drawImage(bitmap2, 5.5, 5.5, -5.5, -5.5, 0, 0, 100, 50); - ctx.drawImage(bitmap2, 100, 50, -5, -5, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, -0.001, 0, 100, 50, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, -0.001, 100, 50, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, 100.001, 50, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, 100, 50.001, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 50, 0, 50.001, 50, 0, 0, 100, 50); @moz-todo - @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, -5, 5, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, 5, -5, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 110, 60, -20, -20, 0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.broken - testing: - - 2d.drawImage.incomplete.image - timeout: long - code: | - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/broken.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(bitmap, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.svg - desc: drawImage() of an SVG image - testing: - - 2d.drawImage.svg - timeout: long - code: | - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.svg'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.animated.poster - desc: drawImage() of an APNG draws the poster frame - testing: - - 2d.drawImage.animated.image - images: - - anim-poster-gr.png - timeout: long - code: | - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/anim-poster-gr.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.path - testing: - - 2d.drawImage.unaffect - timeout: long - code: | - ctx.fillStyle = '#0f0'; - ctx.rect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0); - ctx.fill(); - @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.transform - testing: - - 2d.drawImage.subject - images: - - red.png - timeout: long - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 0); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.alpha - testing: - - 2d.drawImage.subject - images: - - red.png - timeout: long - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalAlpha = 0; - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.clip - testing: - - 2d.drawImage.subject - images: - - red.png - timeout: long - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.rect(-10, -10, 1, 1); - ctx.clip(); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.composite - testing: - - 2d.drawImage.subject - images: - - red.png - timeout: long - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = 'destination-over'; - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.nowrap - desc: Stretched images do not get pixels wrapping around the edges - images: - - redtransparent.png - timeout: long - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/redtransparent.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, -1950, 0, 2000, 50); - @assert pixel 45,25 ==~ 0,255,0,255; - @assert pixel 50,25 ==~ 0,255,0,255; - @assert pixel 55,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - -- name: 2d.drawImage.nonfinite - desc: drawImage() with Infinity/NaN is ignored - testing: - - 2d.nonfinite - images: - - red.png - timeout: long - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/redtransparent.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); - @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); - @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); - @assert pixel 50,25 == 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/fill-and-stroke-styles.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/fill-and-stroke-styles.yaml index 7a57a4730e0..9d34588c100 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/fill-and-stroke-styles.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/fill-and-stroke-styles.yaml @@ -1,6 +1,4 @@ - name: 2d.fillStyle.invalidstring - testing: - - 2d.colours.invalidstring code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -11,8 +9,6 @@ t.done(); - name: 2d.fillStyle.invalidtype - testing: - - 2d.colours.invalidtype code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -23,50 +19,41 @@ t.done(); - name: 2d.fillStyle.get.solid - testing: - - 2d.colours.getcolour - - 2d.serializecolour.solid code: | ctx.fillStyle = '#fa0'; @assert ctx.fillStyle === '#ffaa00'; t.done(); - name: 2d.fillStyle.get.semitransparent - testing: - - 2d.colours.getcolour - - 2d.serializecolour.transparent code: | ctx.fillStyle = 'rgba(255,255,255,0.45)'; @assert ctx.fillStyle =~ /^rgba\(255, 255, 255, 0\.4\d+\)$/; t.done(); +- name: 2d.fillStyle.get.halftransparent + code: | + ctx.fillStyle = 'rgba(255,255,255,0.5)'; + @assert ctx.fillStyle === 'rgba(255, 255, 255, 0.5)'; + t.done(); + - name: 2d.fillStyle.get.transparent - testing: - - 2d.colours.getcolour - - 2d.serializecolour.transparent code: | ctx.fillStyle = 'rgba(0,0,0,0)'; @assert ctx.fillStyle === 'rgba(0, 0, 0, 0)'; t.done(); - name: 2d.fillStyle.default - testing: - - 2d.colours.default code: | @assert ctx.fillStyle === '#000000'; t.done(); - name: 2d.strokeStyle.default - testing: - - 2d.colours.default code: | @assert ctx.strokeStyle === '#000000'; t.done(); - name: 2d.fillStyle.toStringFunctionCallback desc: Passing a function in to ctx.fillStyle or ctx.strokeStyle with a toString callback works as specified - testing: - 2d.colours.toStringFunctionCallback code: | ctx.fillStyle = { toString: function() { return "#008000"; } }; @assert ctx.fillStyle === "#008000"; @@ -85,8 +72,6 @@ t.done(); - name: 2d.gradient.interpolate.solid - testing: - - 2d.gradient.interpolate.linear code: | var g = ctx.createLinearGradient(0, 0, 100, 0); g.addColorStop(0, '#0f0'); @@ -96,9 +81,7 @@ @assert pixel 50,25 == 0,255,0,255; t.done(); -- name: 2d.gradient.interpolate.colour - testing: - - 2d.gradient.interpolate.linear +- name: 2d.gradient.interpolate.color code: | var g = ctx.createLinearGradient(0, 0, 100, 0); g.addColorStop(0, '#ff0'); @@ -111,8 +94,6 @@ t.done(); - name: 2d.gradient.interpolate.alpha - testing: - - 2d.gradient.interpolate.linear code: | ctx.fillStyle = '#ff0'; ctx.fillRect(0, 0, 100, 50); @@ -126,9 +107,7 @@ @assert pixel 75,25 ==~ 63,63,191,255 +/- 3; t.done(); -- name: 2d.gradient.interpolate.colouralpha - testing: - - 2d.gradient.interpolate.alpha +- name: 2d.gradient.interpolate.coloralpha code: | var g = ctx.createLinearGradient(0, 0, 100, 0); g.addColorStop(0, 'rgba(255,255,0, 0)'); @@ -141,9 +120,6 @@ t.done(); - name: 2d.gradient.interpolate.outside - testing: - - 2d.gradient.outside.first - - 2d.gradient.outside.last code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -158,8 +134,6 @@ t.done(); - name: 2d.gradient.interpolate.zerosize.fill - testing: - - 2d.gradient.linear.zerosize code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -173,8 +147,6 @@ t.done(); - name: 2d.gradient.interpolate.zerosize.stroke - testing: - - 2d.gradient.linear.zerosize code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -196,8 +168,6 @@ t.done(); - name: 2d.gradient.interpolate.zerosize.fillRect - testing: - - 2d.gradient.linear.zerosize code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -210,8 +180,6 @@ t.done(); - name: 2d.gradient.interpolate.zerosize.strokeRect - testing: - - 2d.gradient.linear.zerosize code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -233,8 +201,6 @@ - name: 2d.gradient.interpolate.vertical - testing: - - 2d.gradient.interpolate.linear code: | var g = ctx.createLinearGradient(0, 0, 0, 50); g.addColorStop(0, '#ff0'); @@ -247,8 +213,6 @@ t.done(); - name: 2d.gradient.interpolate.multiple - testing: - - 2d.gradient.interpolate.linear code: | canvas.width = 200; var g = ctx.createLinearGradient(0, 0, 200, 0); @@ -263,8 +227,6 @@ t.done(); - name: 2d.gradient.interpolate.overlap - testing: - - 2d.gradient.interpolate.overlap code: | canvas.width = 200; var g = ctx.createLinearGradient(0, 0, 200, 0); @@ -295,8 +257,6 @@ t.done(); - name: 2d.gradient.interpolate.overlap2 - testing: - - 2d.gradient.interpolate.overlap code: | var g = ctx.createLinearGradient(0, 0, 100, 0); var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ]; @@ -317,8 +277,6 @@ t.done(); - name: 2d.gradient.empty - testing: - - 2d.gradient.empty code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -329,8 +287,6 @@ t.done(); - name: 2d.gradient.object.update - testing: - - 2d.gradient.update code: | var g = ctx.createLinearGradient(-100, 0, 200, 0); g.addColorStop(0, '#f00'); @@ -343,8 +299,6 @@ t.done(); - name: 2d.gradient.object.compare - testing: - - 2d.gradient.object code: | var g1 = ctx.createLinearGradient(0, 0, 100, 0); var g2 = ctx.createLinearGradient(0, 0, 100, 0); @@ -367,8 +321,6 @@ t.done(); - name: 2d.gradient.object.invalidoffset - testing: - - 2d.gradient.invalidoffset code: | var g = ctx.createLinearGradient(0, 0, 100, 0); @assert throws INDEX_SIZE_ERR g.addColorStop(-1, '#000'); @@ -378,9 +330,7 @@ @assert throws TypeError g.addColorStop(NaN, '#000'); t.done(); -- name: 2d.gradient.object.invalidcolour - testing: - - 2d.gradient.invalidcolour +- name: 2d.gradient.object.invalidcolor code: | var g = ctx.createLinearGradient(0, 0, 100, 0); @assert throws SYNTAX_ERR g.addColorStop(0, ""); @@ -392,8 +342,6 @@ - name: 2d.gradient.linear.nonfinite desc: createLinearGradient() throws TypeError if arguments are not finite - testing: - - 2d.gradient.linear.nonfinite code: | @nonfinite @assert throws TypeError ctx.createLinearGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); t.done(); @@ -401,8 +349,6 @@ - name: 2d.gradient.linear.transform.1 desc: Linear gradient coordinates are relative to the coordinate space at the time of filling - testing: - - 2d.gradient.linear.transform code: | var g = ctx.createLinearGradient(0, 0, 200, 0); g.addColorStop(0, '#f00'); @@ -420,8 +366,6 @@ - name: 2d.gradient.linear.transform.2 desc: Linear gradient coordinates are relative to the coordinate space at the time of filling - testing: - - 2d.gradient.linear.transform code: | ctx.translate(100, 0); var g = ctx.createLinearGradient(0, 0, 200, 0); @@ -439,8 +383,6 @@ - name: 2d.gradient.linear.transform.3 desc: Linear gradient transforms do not experience broken caching effects - testing: - - 2d.gradient.linear.transform code: | var g = ctx.createLinearGradient(0, 0, 200, 0); g.addColorStop(0, '#f00'); @@ -458,8 +400,6 @@ - name: 2d.gradient.radial.negative desc: createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative - testing: - - 2d.gradient.radial.negative code: | @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); @@ -468,15 +408,11 @@ - name: 2d.gradient.radial.nonfinite desc: createRadialGradient() throws TypeError if arguments are not finite - testing: - - 2d.gradient.radial.nonfinite code: | @nonfinite @assert throws TypeError ctx.createRadialGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>); t.done(); - name: 2d.gradient.radial.inside1 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -497,8 +433,6 @@ t.done(); - name: 2d.gradient.radial.inside2 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -519,8 +453,6 @@ t.done(); - name: 2d.gradient.radial.inside3 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -542,8 +474,6 @@ t.done(); - name: 2d.gradient.radial.outside1 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -564,8 +494,6 @@ t.done(); - name: 2d.gradient.radial.outside2 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -586,8 +514,6 @@ t.done(); - name: 2d.gradient.radial.outside3 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -609,8 +535,6 @@ t.done(); - name: 2d.gradient.radial.touch1 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -631,8 +555,6 @@ t.done(); - name: 2d.gradient.radial.touch2 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -655,8 +577,6 @@ t.done(); - name: 2d.gradient.radial.touch3 - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -677,8 +597,6 @@ t.done(); - name: 2d.gradient.radial.equal - testing: - - 2d.gradient.radial.equal code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -699,8 +617,6 @@ t.done(); - name: 2d.gradient.radial.cone.behind - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -721,8 +637,6 @@ t.done(); - name: 2d.gradient.radial.cone.front - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -743,8 +657,6 @@ t.done(); - name: 2d.gradient.radial.cone.bottom - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -765,8 +677,6 @@ t.done(); - name: 2d.gradient.radial.cone.top - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -787,8 +697,6 @@ t.done(); - name: 2d.gradient.radial.cone.beside - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -809,8 +717,6 @@ t.done(); - name: 2d.gradient.radial.cone.cylinder - testing: - - 2d.gradient.radial.rendering code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -831,8 +737,6 @@ t.done(); - name: 2d.gradient.radial.cone.shape1 - testing: - - 2d.gradient.radial.rendering code: | var tol = 1; // tolerance to avoid antialiasing artifacts ctx.fillStyle = '#0f0'; @@ -860,8 +764,6 @@ t.done(); - name: 2d.gradient.radial.cone.shape2 - testing: - - 2d.gradient.radial.rendering code: | var tol = 1; // tolerance to avoid antialiasing artifacts ctx.fillStyle = '#0f0'; @@ -891,8 +793,6 @@ - name: 2d.gradient.radial.transform.1 desc: Radial gradient coordinates are relative to the coordinate space at the time of filling - testing: - - 2d.gradient.radial.transform code: | var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); g.addColorStop(0, '#0f0'); @@ -911,8 +811,6 @@ - name: 2d.gradient.radial.transform.2 desc: Radial gradient coordinates are relative to the coordinate space at the time of filling - testing: - - 2d.gradient.radial.transform code: | ctx.translate(100, 0); var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); @@ -931,8 +829,6 @@ - name: 2d.gradient.radial.transform.3 desc: Radial gradient transforms do not experience broken caching effects - testing: - - 2d.gradient.radial.transform code: | var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); g.addColorStop(0, '#0f0'); @@ -960,8 +856,8 @@ g.addColorStop(0.75, "#f00"); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); - @assert pixel 25,15 == 255,0,0,255; - @assert pixel 75,40 == 0,255,0,255; + @assert pixel 25,15 ==~ 255,0,0,255 +/- 3; + @assert pixel 75,40 ==~ 0,255,0,255 +/- 3; t.done(); - name: 2d.gradient.conic.negative.rotation @@ -975,8 +871,8 @@ g.addColorStop(0.75, "#f00"); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); - @assert pixel 25,15 == 255,0,0,255; - @assert pixel 75,40 == 0,255,0,255; + @assert pixel 25,15 ==~ 255,0,0,255 +/- 3; + @assert pixel 75,40 ==~ 0,255,0,255 +/- 3; t.done(); - name: 2d.gradient.conic.invalid.inputs @@ -990,8 +886,6 @@ t.done(); - name: 2d.pattern.basic.image - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1017,8 +911,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.basic.canvas - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1041,8 +933,6 @@ t.done(); - name: 2d.pattern.basic.zerocanvas - testing: - - 2d.pattern.zerocanvas code: | canvas.width = 0; canvas.height = 10; @@ -1062,8 +952,6 @@ t.done(); - name: 2d.pattern.basic.nocontext - testing: - - 2d.pattern.painting code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); @@ -1079,29 +967,21 @@ t.done(); - name: 2d.pattern.image.undefined - testing: - - 2d.pattern.IDL code: | @assert throws TypeError ctx.createPattern(undefined, 'repeat'); t.done(); - name: 2d.pattern.image.null - testing: - - 2d.pattern.IDL code: | @assert throws TypeError ctx.createPattern(null, 'repeat'); t.done(); - name: 2d.pattern.image.string - testing: - - 2d.pattern.IDL code: | @assert throws TypeError ctx.createPattern('../images/red.png', 'repeat'); t.done(); - name: 2d.pattern.repeat.empty - testing: - - 2d.pattern.missing code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1127,50 +1007,36 @@ }).then(t_pass, t_fail); - name: 2d.pattern.repeat.null - testing: - - 2d.pattern.unrecognised code: | @assert ctx.createPattern(canvas, null) != null; t.done(); - name: 2d.pattern.repeat.undefined - testing: - - 2d.pattern.unrecognised code: | @assert throws SYNTAX_ERR ctx.createPattern(canvas, undefined); t.done(); - name: 2d.pattern.repeat.unrecognised - testing: - - 2d.pattern.unrecognised code: | @assert throws SYNTAX_ERR ctx.createPattern(canvas, "invalid"); t.done(); - name: 2d.pattern.repeat.unrecognisednull - testing: - - 2d.pattern.unrecognised code: | @assert throws SYNTAX_ERR ctx.createPattern(canvas, "null"); t.done(); - name: 2d.pattern.repeat.case - testing: - - 2d.pattern.exact code: | @assert throws SYNTAX_ERR ctx.createPattern(canvas, "Repeat"); t.done(); - name: 2d.pattern.repeat.nullsuffix - testing: - - 2d.pattern.exact code: | @assert throws SYNTAX_ERR ctx.createPattern(canvas, "repeat\0"); t.done(); - name: 2d.pattern.modify.canvas1 - testing: - - 2d.pattern.modify code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); var ctx2 = offscreenCanvas2.getContext('2d'); @@ -1188,8 +1054,6 @@ t.done(); - name: 2d.pattern.modify.canvas2 - testing: - - 2d.pattern.modify code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); var ctx2 = offscreenCanvas2.getContext('2d'); @@ -1234,8 +1098,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.norepeat.basic - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1261,8 +1123,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.norepeat.outside - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1293,8 +1153,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.norepeat.coord1 - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 50); @@ -1323,8 +1181,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.norepeat.coord2 - testing: - - 2d.pattern.painting code: | var promise = new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest(); @@ -1353,8 +1209,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.norepeat.coord3 - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1383,8 +1237,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.repeat.basic - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1410,8 +1262,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.repeat.outside - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1438,8 +1288,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.repeat.coord1 - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1466,8 +1314,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.repeat.coord2 - testing: - - 2d.pattern.painting code: | var promise = new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest(); @@ -1491,8 +1337,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.repeat.coord3 - testing: - - 2d.pattern.painting code: | var promise = new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest(); @@ -1518,8 +1362,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.repeatx.basic - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1547,8 +1389,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.repeatx.outside - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1576,8 +1416,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.repeatx.coord1 - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1608,8 +1446,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.repeaty.basic - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1637,8 +1473,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.repeaty.outside - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1666,8 +1500,6 @@ }).then(t_pass, t_fail); - name: 2d.pattern.paint.repeaty.coord1 - testing: - - 2d.pattern.painting images: - red-16x16.png code: | @@ -1701,8 +1533,6 @@ - name: 2d.pattern.paint.orientation.image desc: Image patterns do not get flipped when painted - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1734,8 +1564,6 @@ - name: 2d.pattern.paint.orientation.canvas desc: Canvas patterns do not get flipped when painted - testing: - - 2d.pattern.painting code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1755,4 +1583,3 @@ @assert pixel 1,48 == 0,255,0,255; @assert pixel 98,48 == 0,255,0,255; t.done(); - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/filters.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/filters.yaml deleted file mode 100644 index 93bb2424ecf..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/filters.yaml +++ /dev/null @@ -1,289 +0,0 @@ -- name: 2d.filter.canvasFilterObject - desc: Test CanvasFilter() object - code: | - @assert ctx.filter == 'none'; - ctx.filter = 'blur(5px)'; - @assert ctx.filter == 'blur(5px)'; - ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); - @assert ctx.filter.toString() == '[object CanvasFilter]'; - ctx.filter = new CanvasFilter([ - {filter: "gaussianBlur", stdDeviation: 5}, - {filter: "gaussianBlur", stdDeviation: 10} - ]); - @assert ctx.filter.toString() == '[object CanvasFilter]'; - var canvas2 = new OffscreenCanvas(100, 50); - var ctx2 = canvas2.getContext('2d'); - ctx2.filter = ctx.filter; - @assert ctx.filter.toString() == '[object CanvasFilter]'; - ctx.filter = 'blur(5px)'; - @assert ctx.filter == 'blur(5px)'; - ctx.filter = 'none'; - @assert ctx.filter == 'none'; - ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); - ctx.filter = "this string is not a filter and should do nothing"; - @assert ctx.filter.toString() == '[object CanvasFilter]'; - t.done(); - -- name: 2d.filter.canvasFilterObject.blur.exceptions - desc: Test exceptions on CanvasFilter() blur.object - code: | - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur"}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: undefined}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: "foo"}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: [1,2]}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: NaN}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: {}}); - t.done(); - -- name: 2d.filter.canvasFilterObject.colorMatrix - desc: Test the functionality of ColorMatrix filters in CanvasFilter objects - code: | - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: undefined}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: "foo"}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: null}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3]}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, "a"]}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); - ctx.fillStyle = "#f00"; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 0}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 255,0,0,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 90}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 0,91,0,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 180}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 0,109,109,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 270}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 109,18,255,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "saturate", values: 0.5}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 155,27,27,255; - ctx.clearRect(0, 0, 100, 50); - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "luminanceToAlpha"}); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 10,10 ==~ 0,0,0,54; - ctx.filter = new CanvasFilter({filter: "colorMatrix", values: [ - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0 - ]}); - ctx.fillRect(0, 0, 50, 25); - ctx.fillStyle = "#0f0"; - ctx.fillRect(50, 0, 50, 25); - ctx.fillStyle = "#00f"; - ctx.fillRect(0, 25, 50, 25); - ctx.fillStyle = "#fff"; - ctx.fillRect(50, 25, 50, 25); - @assert pixel 10,10 ==~ 0,255,0,255; - @assert pixel 60,10 ==~ 0,255,0,255; - @assert pixel 10,30 ==~ 0,255,0,255; - @assert pixel 60,30 ==~ 0,255,0,255; - t.done(); - -- name: 2d.filter.canvasFilterObject.convolveMatrix.exceptions - desc: Test exceptions on CanvasFilter() convolveMatrix - code: | - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix"}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", divisor: 2}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: null}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: 1}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0]]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, "a"], [0]]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); - // This should not throw an error - ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]}); - t.done(); - -- name: 2d.filter.canvasFilterObject.componentTransfer.linear - desc: Test pixels on CanvasFilter() componentTransfer with linear type - code: | - // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement - function getColor(inputColor, slopes, intercepts) { - return [ - Math.max(0, Math.min(1, inputColor[0]/255 * slopes[0] + intercepts[0])) * 255, - Math.max(0, Math.min(1, inputColor[1]/255 * slopes[1] + intercepts[1])) * 255, - Math.max(0, Math.min(1, inputColor[2]/255 * slopes[2] + intercepts[2])) * 255, - ]; - } - - const slopes = [0.5, 1.2, -0.2]; - const intercepts = [0.25, 0, 0.5]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "linear", slope: slopes[0], intercept: intercepts[0]}, - funcG: {type: "linear", slope: slopes[1], intercept: intercepts[1]}, - funcB: {type: "linear", slope: slopes[2], intercept: intercepts[2]}, - }); - - const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], - ]; - - for (const color of inputColors) { - let outputColor = getColor(color, slopes, intercepts); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); - } - t.done(); - -- name: 2d.filter.canvasFilterObject.componentTransfer.identity - desc: Test pixels on CanvasFilter() componentTransfer with identity type - code: | - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "identity"}, - funcG: {type: "identity"}, - funcB: {type: "identity"}, - }); - - const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], - ]; - - for (const color of inputColors) { - ctx.fillStyle = `rgba(${color[0]}, ${color[1]}, ${color[2]}, 1)`, - ctx.fillRect(0, 0, 10, 10); - _assertPixel(canvas, 5, 5, color[0],color[1],color[2],255, "5,5", `${color[0]},${color[1]},${color[2]}`); - } - t.done(); - -- name: 2d.filter.canvasFilterObject.componentTransfer.gamma - desc: Test pixels on CanvasFilter() componentTransfer with gamma type - code: | - // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement - function getColor(inputColor, amplitude, exponent, offset) { - return [ - Math.max(0, Math.min(1, Math.pow(inputColor[0]/255, exponent[0]) * amplitude[0] + offset[0])) * 255, - Math.max(0, Math.min(1, Math.pow(inputColor[1]/255, exponent[1]) * amplitude[1] + offset[1])) * 255, - Math.max(0, Math.min(1, Math.pow(inputColor[2]/255, exponent[2]) * amplitude[2] + offset[2])) * 255, - ]; - } - - const amplitudes = [2, 1.1, 0.5]; - const exponents = [5, 3, 1]; - const offsets = [0.25, 0, 0.5]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "gamma", amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, - funcG: {type: "gamma", amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, - funcB: {type: "gamma", amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, - }); - - const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], - ]; - - for (const color of inputColors) { - let outputColor = getColor(color, amplitudes, exponents, offsets); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); - } - t.done(); - -- name: 2d.filter.canvasFilterObject.componentTransfer.table - desc: Test pixels on CanvasFilter() componentTransfer with table type - code: | - // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement - function getTransformedValue(C, V) { - // Get the right interval - const n = V.length - 1; - const k = C == 1 ? n - 1 : Math.floor(C * n); - return V[k] + (C - k/n) * n * (V[k + 1] - V[k]); - } - - function getColor(inputColor, tableValues) { - const result = [0, 0, 0]; - for (const i in inputColor) { - const C = inputColor[i]/255; - const Cprime = getTransformedValue(C, tableValues[i]); - result[i] = Math.max(0, Math.min(1, Cprime)) * 255; - } - return result; - } - - tableValuesR = [0, 0, 1, 1]; - tableValuesG = [2, 0, 0.5, 3]; - tableValuesB = [1, -1, 5, 0]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "table", tableValues: tableValuesR}, - funcG: {type: "table", tableValues: tableValuesG}, - funcB: {type: "table", tableValues: tableValuesB}, - }); - - const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], - ]; - - for (const color of inputColors) { - let outputColor = getColor(color, [tableValuesR, tableValuesG, tableValuesB]); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); - } - t.done() - -- name: 2d.filter.canvasFilterObject.componentTransfer.discrete - desc: Test pixels on CanvasFilter() componentTransfer with discrete type - code: | - // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement - function getTransformedValue(C, V) { - // Get the right interval - const n = V.length; - const k = C == 1 ? n - 1 : Math.floor(C * n); - return V[k]; - } - - function getColor(inputColor, tableValues) { - const result = [0, 0, 0]; - for (const i in inputColor) { - const C = inputColor[i]/255; - const Cprime = getTransformedValue(C, tableValues[i]); - result[i] = Math.max(0, Math.min(1, Cprime)) * 255; - } - return result; - } - - tableValuesR = [0, 0, 1, 1]; - tableValuesG = [2, 0, 0.5, 3]; - tableValuesB = [1, -1, 5, 0]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "discrete", tableValues: tableValuesR}, - funcG: {type: "discrete", tableValues: tableValuesG}, - funcB: {type: "discrete", tableValues: tableValuesB}, - }); - - const inputColors = [ - [255, 255, 255], - [0, 0, 0], - [127, 0, 34], - [252, 186, 3], - [50, 68, 87], - ]; - - for (const color of inputColors) { - let outputColor = getColor(color, [tableValuesR, tableValuesG, tableValuesB]); - ctx.fillStyle = `rgb(${color[0]}, ${color[1]}, ${color[2]})`; - ctx.fillRect(0, 0, 10, 10); - _assertPixelApprox(canvas, 5, 5, outputColor[0],outputColor[1],outputColor[2],255, "5,5", `${outputColor[0]},${outputColor[1]},${outputColor[2]}`, 2); - } - t.done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/line-styles.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/line-styles.yaml index 762deeb84cb..984949827db 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/line-styles.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/line-styles.yaml @@ -1,9 +1,4 @@ - name: 2d.line.defaults - testing: - - 2d.lineWidth.default - - 2d.lineCap.default - - 2d.lineJoin.default - - 2d.miterLimit.default code: | @assert ctx.lineWidth === 1; @assert ctx.lineCap === 'butt'; @@ -13,8 +8,6 @@ - name: 2d.line.width.basic desc: lineWidth determines the width of line strokes - testing: - - 2d.lineWidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -53,8 +46,6 @@ - name: 2d.line.width.transformed desc: Line stroke widths are affected by scale transformations - testing: - - 2d.lineWidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -99,8 +90,6 @@ - name: 2d.line.width.scaledefault desc: Default lineWidth strokes are affected by scale transformations - testing: - - 2d.lineWidth code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -118,9 +107,6 @@ - name: 2d.line.width.valid desc: Setting lineWidth to valid values works - testing: - - 2d.lineWidth.set - - 2d.lineWidth.get code: | ctx.lineWidth = 1.5; @assert ctx.lineWidth === 1.5; @@ -134,8 +120,6 @@ - name: 2d.line.width.invalid desc: Setting lineWidth to invalid values is ignored - testing: - - 2d.lineWidth.invalid code: | ctx.lineWidth = 1.5; @assert ctx.lineWidth === 1.5; @@ -158,8 +142,6 @@ - name: 2d.line.cap.butt desc: lineCap 'butt' is rendered correctly - testing: - - 2d.lineCap.butt code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -195,8 +177,6 @@ - name: 2d.line.cap.round desc: lineCap 'round' is rendered correctly - testing: - - 2d.lineCap.round code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -241,8 +221,6 @@ - name: 2d.line.cap.square desc: lineCap 'square' is rendered correctly - testing: - - 2d.lineCap.square code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -278,8 +256,6 @@ - name: 2d.line.cap.open desc: Line caps are drawn at the corners of an unclosed rectangle - testing: - - 2d.lineCap.end code: | ctx.fillStyle = '#f00'; ctx.strokeStyle = '#0f0'; @@ -302,8 +278,6 @@ - name: 2d.line.cap.closed desc: Line caps are not drawn at the corners of an unclosed rectangle - testing: - - 2d.lineCap.end code: | ctx.fillStyle = '#0f0'; ctx.strokeStyle = '#f00'; @@ -326,9 +300,6 @@ - name: 2d.line.cap.valid desc: Setting lineCap to valid values works - testing: - - 2d.lineCap.set - - 2d.lineCap.get code: | ctx.lineCap = 'butt' @assert ctx.lineCap === 'butt'; @@ -340,8 +311,6 @@ - name: 2d.line.cap.invalid desc: Setting lineCap to invalid values is ignored - testing: - - 2d.lineCap.invalid code: | ctx.lineCap = 'butt' @assert ctx.lineCap === 'butt'; @@ -367,9 +336,6 @@ - name: 2d.line.join.bevel desc: lineJoin 'bevel' is rendered correctly - testing: - - 2d.lineJoin.common - - 2d.lineJoin.bevel code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -418,8 +384,6 @@ - name: 2d.line.join.round desc: lineJoin 'round' is rendered correctly - testing: - - 2d.lineJoin.round code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -466,8 +430,6 @@ - name: 2d.line.join.miter desc: lineJoin 'miter' is rendered correctly - testing: - - 2d.lineJoin.miter code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -507,8 +469,6 @@ - name: 2d.line.join.open desc: Line joins are not drawn at the corner of an unclosed rectangle - testing: - - 2d.lineJoin.joins code: | ctx.fillStyle = '#0f0'; ctx.strokeStyle = '#f00'; @@ -530,8 +490,6 @@ - name: 2d.line.join.closed desc: Line joins are drawn at the corner of a closed rectangle - testing: - - 2d.lineJoin.joinclosed code: | ctx.fillStyle = '#f00'; ctx.strokeStyle = '#0f0'; @@ -553,8 +511,6 @@ - name: 2d.line.join.parallel desc: Line joins are drawn at 180-degree joins - testing: - - 2d.lineJoin.joins code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -574,9 +530,6 @@ - name: 2d.line.join.valid desc: Setting lineJoin to valid values works - testing: - - 2d.lineJoin.set - - 2d.lineJoin.get code: | ctx.lineJoin = 'bevel' @assert ctx.lineJoin === 'bevel'; @@ -588,8 +541,6 @@ - name: 2d.line.join.invalid desc: Setting lineJoin to invalid values is ignored - testing: - - 2d.lineJoin.invalid code: | ctx.lineJoin = 'bevel' @assert ctx.lineJoin === 'bevel'; @@ -615,9 +566,6 @@ - name: 2d.line.miter.exceeded desc: Miter joins are not drawn when the miter limit is exceeded - testing: - - 2d.lineJoin.miterLimit - - 2d.lineJoin.miter code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -638,9 +586,6 @@ - name: 2d.line.miter.acute desc: Miter joins are drawn correctly with acute angles - testing: - - 2d.lineJoin.miterLimit - - 2d.lineJoin.miter code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -668,9 +613,6 @@ - name: 2d.line.miter.obtuse desc: Miter joins are drawn correctly with obtuse angles - testing: - - 2d.lineJoin.miterLimit - - 2d.lineJoin.miter code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -699,8 +641,6 @@ - name: 2d.line.miter.rightangle desc: Miter joins are not drawn when the miter limit is exceeded, on exact right angles - testing: - - 2d.lineJoin.miter code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -722,8 +662,6 @@ - name: 2d.line.miter.lineedge desc: Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle - testing: - - 2d.lineJoin.miter code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -741,8 +679,6 @@ - name: 2d.line.miter.within desc: Miter joins are drawn when the miter limit is not quite exceeded - testing: - - 2d.lineJoin.miter code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -763,9 +699,6 @@ - name: 2d.line.miter.valid desc: Setting miterLimit to valid values works - testing: - - 2d.miterLimit.set - - 2d.miterLimit.get code: | ctx.miterLimit = 1.5; @assert ctx.miterLimit === 1.5; @@ -779,8 +712,6 @@ - name: 2d.line.miter.invalid desc: Setting miterLimit to invalid values is ignored - testing: - - 2d.miterLimit.invalid code: | ctx.miterLimit = 1.5; @assert ctx.miterLimit === 1.5; diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/meta.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/meta.yaml index a26f256e371..aa850d4e48f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/meta.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/meta.yaml @@ -17,7 +17,6 @@ tests.append( { 'name': '2d.state.saverestore.%s' % key, 'desc': 'save()/restore() works for %s' % key, - 'testing': [ '2d.state.%s' % key ], 'code': """// Test that restore() undoes any modifications var old = ctx.%(key)s; @@ -41,7 +40,6 @@ tests.append( { 'name': 'initial.reset.2dstate', 'desc': 'Resetting the canvas state resets 2D state variables', - 'testing': [ 'initial.reset' ], 'code': """canvas.width = 100; var default_val; @@ -119,7 +117,6 @@ expected = calc_output(src, dest, FA_code, FB_code) tests.append( { 'name': '2d.composite.%s.%s' % (name, op), - 'testing': [ '2d.composite.%s' % op ], 'code': """ ctx.fillStyle = 'rgba%s'; ctx.fillRect(0, 0, 100, 50); @@ -136,7 +133,6 @@ expected = calc_output(src, dest, FA_code, FB_code) tests.append( { 'name': '2d.composite.%s.%s' % (name, op), - 'testing': [ '2d.composite.%s' % op ], 'images': [ 'yellow75.png' ], 'code': """ ctx.fillStyle = 'rgba%s'; @@ -165,7 +161,6 @@ expected = calc_output(src, dest, FA_code, FB_code) tests.append( { 'name': '2d.composite.%s.%s' % (name, op), - 'testing': [ '2d.composite.%s' % op ], 'images': [ 'yellow75.png' ], 'code': """ var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height); @@ -199,7 +194,6 @@ new_test = { 'name': '2d.composite.%s.%s' % (name, op), 'desc': 'fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], 'code': """ ctx.fillStyle = 'rgba%s'; ctx.fillRect(0, 0, 100, 50); @@ -222,7 +216,6 @@ tests.append( { 'name': '2d.composite.%s.%s' % (name, op), 'desc': 'drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], 'images': [ 'yellow.png' ], 'code': """ ctx.fillStyle = 'rgba%s'; @@ -254,7 +247,6 @@ tests.append( { 'name': '2d.composite.%s.%s' % (name, op), 'desc': 'drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], 'code': """ ctx.fillStyle = 'rgba%s'; ctx.fillRect(0, 0, 100, 50); @@ -273,7 +265,6 @@ tests.append( { 'name': '2d.composite.%s.%s' % (name, op), 'desc': 'Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], 'images': [ 'yellow.png' ], 'code': """ ctx.fillStyle = 'rgba%s'; @@ -302,7 +293,6 @@ tests.append( { 'name': '2d.composite.clip.%s' % (op), 'desc': 'fill() does not affect pixels outside the clip region.', - 'testing': [ '2d.composite.%s' % op ], 'code': """ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -318,7 +308,7 @@ } ) - meta: | - # Colour parsing tests + # Color parsing tests # Try most of the CSS3 Color values - http://www.w3.org/TR/css3-color/#colorunits big_float = '1' + ('0' * 39) @@ -330,11 +320,11 @@ ('hex6', '#00fF00', 0,255,0,255, ""), ('hex8', '#00ff00ff', 0,255,0,255, ""), ('rgb-num', 'rgb(0,255,0)', 0,255,0,255, ""), - ('rgb-clamp-1', 'rgb(-1000, 1000, -1000)', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), - ('rgb-clamp-2', 'rgb(-200%, 200%, -200%)', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), - ('rgb-clamp-3', 'rgb(-2147483649, 4294967298, -18446744073709551619)', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), - ('rgb-clamp-4', 'rgb(-'+big_float+', '+big_float+', -'+big_float+')', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), - ('rgb-clamp-5', 'rgb(-'+big_double+', '+big_double+', -'+big_double+')', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), + ('rgb-clamp-1', 'rgb(-1000, 1000, -1000)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-2', 'rgb(-200%, 200%, -200%)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-3', 'rgb(-2147483649, 4294967298, -18446744073709551619)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-4', 'rgb(-'+big_float+', '+big_float+', -'+big_float+')', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-5', 'rgb(-'+big_double+', '+big_double+', -'+big_double+')', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), ('rgb-percent', 'rgb(0% ,100% ,0%)', 0,255,0,255, 'CSS3 Color says "The integer value 255 corresponds to 100%". (In particular, it is not 254...)'), ('rgb-eof', 'rgb(0, 255, 0', 0,255,0,255, ""), # see CSS2.1 4.2 "Unexpected end of style sheet" ('rgba-solid-1', 'rgba( 0 , 255 , 0 , 1 )', 0,255,0,255, ""), @@ -409,7 +399,6 @@ # TODO: test strokeStyle, shadowColor in the same way test = { 'name': '2d.fillStyle.parse.%s' % name, - 'testing': [ '2d.colours.parse' ], 'notes': notes, 'code': """ ctx.fillStyle = '#f00'; @@ -421,7 +410,7 @@ } tests.append(test) - # Also test that invalid colours are ignored + # Also test that invalid colors are ignored for name, string in [ ('hex1', '#f'), ('hex2', '#f0'), @@ -475,7 +464,6 @@ ]: test = { 'name': '2d.fillStyle.parse.invalid.%s' % name, - 'testing': [ '2d.colours.parse' ], 'code': """ ctx.fillStyle = '#0f0'; try { ctx.fillStyle = '%s'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does @@ -486,14 +474,13 @@ } tests.append(test) - # Some can't have positive tests, only negative tests, because we don't know what colour they're meant to be + # Some can't have positive tests, only negative tests, because we don't know what color they're meant to be for name, string in [ ('system', 'ThreeDDarkShadow'), #('flavor', 'flavor'), # removed from latest CSS3 Color drafts ]: test = { 'name': '2d.fillStyle.parse.%s' % name, - 'testing': [ '2d.colours.parse' ], 'code': """ ctx.fillStyle = '#f00'; ctx.fillStyle = '%s'; @@ -522,9 +509,7 @@ ("trailingjunk", "100#!?", "exception"), ] def gen(name, string, exp, code): - testing = ["size.nonnegativeinteger"] if exp is None: - testing.append("size.error") code += "canvas.width = '%s';\ncanvas.height = '%s';\n" % (string, string) code += "@assert canvas.width === 100;\n@assert canvas.height === 50;\n" expected = None @@ -541,15 +526,13 @@ if exp == 0: expected = None # can't generate zero-sized PNGs for the expected image - return code, testing, expected + return code, expected for name, string, exp in cases: code = "" - code, testing, expected = gen(name, string, exp, code) + code, expected = gen(name, string, exp, code) tests.append( { "name": "size.attributes.parse.%s" % name, "desc": "Parsing of non-negative integers", - "testing": testing, "code": code, } ) - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/path-objects.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/path-objects.yaml index 1e221f905fa..9c70daf59fc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/path-objects.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/path-objects.yaml @@ -1,6 +1,4 @@ - name: 2d.path.initial - testing: - - 2d.path.initial code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -11,8 +9,6 @@ t.done(); - name: 2d.path.beginPath - testing: - - 2d.path.beginPath code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -24,8 +20,6 @@ t.done(); - name: 2d.path.moveTo.basic - testing: - - 2d.path.moveTo code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -40,8 +34,6 @@ t.done(); - name: 2d.path.moveTo.newsubpath - testing: - - 2d.path.moveTo code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -56,8 +48,6 @@ t.done(); - name: 2d.path.moveTo.multiple - testing: - - 2d.path.moveTo code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -73,8 +63,6 @@ - name: 2d.path.moveTo.nonfinite desc: moveTo() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -87,8 +75,6 @@ t.done(); - name: 2d.path.closePath.empty - testing: - - 2d.path.closePath.empty code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -99,8 +85,6 @@ t.done(); - name: 2d.path.closePath.newline - testing: - - 2d.path.closePath.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -116,8 +100,6 @@ t.done(); - name: 2d.path.closePath.nextpoint - testing: - - 2d.path.closePath.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -133,9 +115,6 @@ - name: 2d.path.lineTo.ensuresubpath.1 desc: If there is no subpath, the point is added and nothing is drawn - testing: - - 2d.path.lineTo.empty - - 2d.path.ensure code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -149,9 +128,6 @@ - name: 2d.path.lineTo.ensuresubpath.2 desc: If there is no subpath, the point is added and used for subsequent drawing - testing: - - 2d.path.lineTo.empty - - 2d.path.ensure code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -165,8 +141,6 @@ t.done(); - name: 2d.path.lineTo.basic - testing: - - 2d.path.lineTo.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -180,8 +154,6 @@ t.done(); - name: 2d.path.lineTo.nextpoint - testing: - - 2d.path.lineTo.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -197,8 +169,6 @@ - name: 2d.path.lineTo.nonfinite desc: lineTo() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -213,8 +183,6 @@ - name: 2d.path.lineTo.nonfinite.details desc: lineTo() with Infinity/NaN for first arg still converts the second arg - testing: - - 2d.nonfinite code: | for (var arg1 of [Infinity, -Infinity, NaN]) { var converted = false; @@ -226,9 +194,6 @@ - name: 2d.path.quadraticCurveTo.ensuresubpath.1 desc: If there is no subpath, the first control point is added (and nothing is drawn up to it) - testing: - - 2d.path.quadratic.empty - - 2d.path.ensure code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -243,9 +208,6 @@ - name: 2d.path.quadraticCurveTo.ensuresubpath.2 desc: If there is no subpath, the first control point is added - testing: - - 2d.path.quadratic.empty - - 2d.path.ensure code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -259,8 +221,6 @@ t.done(); - name: 2d.path.quadraticCurveTo.basic - testing: - - 2d.path.quadratic.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -274,8 +234,6 @@ t.done(); - name: 2d.path.quadraticCurveTo.shape - testing: - - 2d.path.quadratic.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -293,8 +251,6 @@ t.done(); - name: 2d.path.quadraticCurveTo.scaled - testing: - - 2d.path.quadratic.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -314,8 +270,6 @@ - name: 2d.path.quadraticCurveTo.nonfinite desc: quadraticCurveTo() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -331,9 +285,6 @@ - name: 2d.path.bezierCurveTo.ensuresubpath.1 desc: If there is no subpath, the first control point is added (and nothing is drawn up to it) - testing: - - 2d.path.bezier.empty - - 2d.path.ensure code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -348,9 +299,6 @@ - name: 2d.path.bezierCurveTo.ensuresubpath.2 desc: If there is no subpath, the first control point is added - testing: - - 2d.path.bezier.empty - - 2d.path.ensure code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -364,8 +312,6 @@ t.done(); - name: 2d.path.bezierCurveTo.basic - testing: - - 2d.path.bezier.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -379,8 +325,6 @@ t.done(); - name: 2d.path.bezierCurveTo.shape - testing: - - 2d.path.bezier.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -398,8 +342,6 @@ t.done(); - name: 2d.path.bezierCurveTo.scaled - testing: - - 2d.path.bezier.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -419,8 +361,6 @@ - name: 2d.path.bezierCurveTo.nonfinite desc: bezierCurveTo() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -436,9 +376,6 @@ - name: 2d.path.arcTo.ensuresubpath.1 desc: If there is no subpath, the first control point is added (and nothing is drawn up to it) - testing: - - 2d.path.arcTo.empty - - 2d.path.ensure code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -452,9 +389,6 @@ - name: 2d.path.arcTo.ensuresubpath.2 desc: If there is no subpath, the first control point is added - testing: - - 2d.path.arcTo.empty - - 2d.path.ensure code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -469,8 +403,6 @@ - name: 2d.path.arcTo.coincide.1 desc: arcTo() has no effect if P0 = P1 - testing: - - 2d.path.arcTo.coincide.01 code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -493,8 +425,6 @@ - name: 2d.path.arcTo.coincide.2 desc: arcTo() draws a straight line to P1 if P1 = P2 - testing: - - 2d.path.arcTo.coincide.12 code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -510,8 +440,6 @@ - name: 2d.path.arcTo.collinear.1 desc: arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1 - testing: - - 2d.path.arcTo.collinear code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -532,8 +460,6 @@ - name: 2d.path.arcTo.collinear.2 desc: arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1 - testing: - - 2d.path.arcTo.collinear code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -554,8 +480,6 @@ - name: 2d.path.arcTo.collinear.3 desc: arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1 - testing: - - 2d.path.arcTo.collinear code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -579,8 +503,6 @@ - name: 2d.path.arcTo.shape.curve1 desc: arcTo() curves in the right kind of shape - testing: - - 2d.path.arcTo.shape code: | var tol = 1.5; // tolerance to avoid antialiasing artifacts ctx.fillStyle = '#0f0'; @@ -616,8 +538,6 @@ - name: 2d.path.arcTo.shape.curve2 desc: arcTo() curves in the right kind of shape - testing: - - 2d.path.arcTo.shape code: | var tol = 1.5; // tolerance to avoid antialiasing artifacts ctx.fillStyle = '#0f0'; @@ -652,8 +572,6 @@ - name: 2d.path.arcTo.shape.start desc: arcTo() draws a straight line from P0 to P1 - testing: - - 2d.path.arcTo.shape code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -672,8 +590,6 @@ - name: 2d.path.arcTo.shape.end desc: arcTo() does not draw anything from P1 to P2 - testing: - - 2d.path.arcTo.shape code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -692,16 +608,12 @@ - name: 2d.path.arcTo.negative desc: arcTo() with negative radius throws an exception - testing: - - 2d.path.arcTo.negative code: | @assert throws INDEX_SIZE_ERR ctx.arcTo(0, 0, 0, 0, -1); t.done(); - name: 2d.path.arcTo.zero.1 desc: arcTo() with zero radius draws a straight line from P0 to P1 - testing: - - 2d.path.arcTo.zeroradius code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -722,8 +634,6 @@ - name: 2d.path.arcTo.zero.2 desc: arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear - testing: - - 2d.path.arcTo.zeroradius code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -790,8 +700,6 @@ - name: 2d.path.arcTo.nonfinite desc: arcTo() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -807,8 +715,6 @@ - name: 2d.path.arc.empty desc: arc() with an empty path does not draw a straight line to the start point - testing: - - 2d.path.arc.nonempty code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -822,8 +728,6 @@ - name: 2d.path.arc.nonempty desc: arc() with a non-empty path does draw a straight line to the start point - testing: - - 2d.path.arc.nonempty code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -838,8 +742,6 @@ - name: 2d.path.arc.end desc: arc() adds the end point of the arc to the subpath - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -855,8 +757,6 @@ - name: 2d.path.arc.default desc: arc() with missing last argument defaults to clockwise - testing: - - 2d.path.arc.omitted code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -870,8 +770,6 @@ - name: 2d.path.arc.angle.1 desc: arc() draws pi/2 .. -pi anticlockwise correctly - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -885,8 +783,6 @@ - name: 2d.path.arc.angle.2 desc: arc() draws -3pi/2 .. -pi anticlockwise correctly - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -900,8 +796,6 @@ - name: 2d.path.arc.angle.3 desc: arc() wraps angles mod 2pi when anticlockwise and end > start+2pi - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -915,8 +809,6 @@ - name: 2d.path.arc.angle.4 desc: arc() draws a full circle when clockwise and end > start+2pi - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -933,8 +825,6 @@ - name: 2d.path.arc.angle.5 desc: arc() wraps angles mod 2pi when clockwise and start > end+2pi - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -948,8 +838,6 @@ - name: 2d.path.arc.angle.6 desc: arc() draws a full circle when anticlockwise and start > end+2pi - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -966,8 +854,6 @@ - name: 2d.path.arc.zero.1 desc: arc() draws nothing when startAngle = endAngle and anticlockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -981,8 +867,6 @@ - name: 2d.path.arc.zero.2 desc: arc() draws nothing when startAngle = endAngle and clockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -996,8 +880,6 @@ - name: 2d.path.arc.twopie.1 desc: arc() draws nothing when end = start + 2pi-e and anticlockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1011,8 +893,6 @@ - name: 2d.path.arc.twopie.2 desc: arc() draws a full circle when end = start + 2pi-e and clockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1026,8 +906,6 @@ - name: 2d.path.arc.twopie.3 desc: arc() draws a full circle when end = start + 2pi+e and anticlockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1041,8 +919,6 @@ - name: 2d.path.arc.twopie.4 desc: arc() draws nothing when end = start + 2pi+e and clockwise - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1056,8 +932,6 @@ - name: 2d.path.arc.shape.1 desc: arc() from 0 to pi does not draw anything in the wrong half - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1076,8 +950,6 @@ - name: 2d.path.arc.shape.2 desc: arc() from 0 to pi draws stuff in the right half - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1096,8 +968,6 @@ - name: 2d.path.arc.shape.3 desc: arc() from 0 to -pi/2 does not draw anything in the wrong quadrant - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1115,8 +985,6 @@ - name: 2d.path.arc.shape.4 desc: arc() from 0 to -pi/2 draws stuff in the right quadrant - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1134,8 +1002,6 @@ - name: 2d.path.arc.shape.5 desc: arc() from 0 to 5pi does not draw crazy things - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1153,8 +1019,6 @@ - name: 2d.path.arc.selfintersect.1 desc: arc() with lineWidth > 2*radius is drawn sensibly - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1172,8 +1036,6 @@ - name: 2d.path.arc.selfintersect.2 desc: arc() with lineWidth > 2*radius is drawn sensibly - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1195,16 +1057,12 @@ - name: 2d.path.arc.negative desc: arc() with negative radius throws INDEX_SIZE_ERR - testing: - - 2d.path.arc.negative code: | @assert throws INDEX_SIZE_ERR ctx.arc(0, 0, -1, 0, 0, true); t.done(); - name: 2d.path.arc.zeroradius desc: arc() with zero radius draws a line to the start point - testing: - - 2d.path.arc.zero code: | ctx.fillStyle = '#f00' ctx.fillRect(0, 0, 100, 50); @@ -1219,8 +1077,6 @@ - name: 2d.path.arc.scale.1 desc: Non-uniformly scaled arcs are the right shape - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1253,8 +1109,6 @@ - name: 2d.path.arc.scale.2 desc: Highly scaled arcs are the right shape - testing: - - 2d.path.arc.draw code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1277,8 +1131,6 @@ - name: 2d.path.arc.nonfinite desc: arc() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1295,8 +1147,6 @@ - name: 2d.path.rect.basic - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1307,8 +1157,6 @@ t.done(); - name: 2d.path.rect.newsubpath - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1323,8 +1171,6 @@ t.done(); - name: 2d.path.rect.closed - testing: - - 2d.path.rect.closed code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1337,8 +1183,6 @@ t.done(); - name: 2d.path.rect.end.1 - testing: - - 2d.path.rect.newsubpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1351,8 +1195,6 @@ t.done(); - name: 2d.path.rect.end.2 - testing: - - 2d.path.rect.newsubpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1370,8 +1212,6 @@ t.done(); - name: 2d.path.rect.zero.1 - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1384,8 +1224,6 @@ t.done(); - name: 2d.path.rect.zero.2 - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1398,8 +1236,6 @@ t.done(); - name: 2d.path.rect.zero.3 - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1412,8 +1248,6 @@ t.done(); - name: 2d.path.rect.zero.4 - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1426,8 +1260,6 @@ t.done(); - name: 2d.path.rect.zero.5 - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1440,8 +1272,6 @@ t.done(); - name: 2d.path.rect.zero.6 - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1456,8 +1286,6 @@ t.done(); - name: 2d.path.rect.negative - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1475,8 +1303,6 @@ t.done(); - name: 2d.path.rect.winding - testing: - - 2d.path.rect.subpath code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -1507,8 +1333,6 @@ - name: 2d.path.rect.nonfinite desc: rect() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.moveTo(0, 0); ctx.lineTo(100, 0); @@ -1747,8 +1571,6 @@ - name: 2d.path.roundrect.nonfinite desc: roundRect() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -2454,8 +2276,6 @@ t.done(); - name: 2d.path.fill.overlap - testing: - - 2d.path.fill.basic code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -2468,8 +2288,6 @@ t.done(); - name: 2d.path.fill.winding.add - testing: - - 2d.path.fill.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2488,8 +2306,6 @@ t.done(); - name: 2d.path.fill.winding.subtract.1 - testing: - - 2d.path.fill.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2508,8 +2324,6 @@ t.done(); - name: 2d.path.fill.winding.subtract.2 - testing: - - 2d.path.fill.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2527,8 +2341,6 @@ t.done(); - name: 2d.path.fill.winding.subtract.3 - testing: - - 2d.path.fill.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2552,8 +2364,6 @@ t.done(); - name: 2d.path.fill.closed.basic - testing: - - 2d.path.fill.closed code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2567,8 +2377,6 @@ t.done(); - name: 2d.path.fill.closed.unaffected - testing: - - 2d.path.fill.closed code: | ctx.fillStyle = '#00f'; ctx.fillRect(0, 0, 100, 50); @@ -2586,8 +2394,6 @@ - name: 2d.path.stroke.overlap desc: Stroked subpaths are combined before being drawn - testing: - - 2d.path.stroke.basic code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -2603,8 +2409,6 @@ - name: 2d.path.stroke.union desc: Strokes in opposite directions are unioned, not subtracted - testing: - - 2d.path.stroke.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2620,8 +2424,6 @@ - name: 2d.path.stroke.unaffected desc: Stroking does not start a new path or subpath - testing: - - 2d.path.stroke.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2640,8 +2442,6 @@ - name: 2d.path.stroke.scale1 desc: Stroke line widths are scaled by the current transformation matrix - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2672,8 +2472,6 @@ - name: 2d.path.stroke.scale2 desc: Stroke line widths are scaled by the current transformation matrix - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2706,8 +2504,6 @@ - name: 2d.path.stroke.skew desc: Strokes lines are skewed by the current transformation matrix - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2753,8 +2549,6 @@ - name: 2d.path.stroke.empty desc: Empty subpaths are not stroked - testing: - - 2d.path.stroke.empty code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2771,8 +2565,6 @@ - name: 2d.path.stroke.prune.line desc: Zero-length line segments from lineTo are removed before stroking - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2789,8 +2581,6 @@ - name: 2d.path.stroke.prune.closed desc: Zero-length line segments from closed paths are removed before stroking - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2809,8 +2599,6 @@ - name: 2d.path.stroke.prune.curve desc: Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2831,8 +2619,6 @@ - name: 2d.path.stroke.prune.arc desc: Zero-length line segments from arcTo and arc are removed before stroking - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2853,8 +2639,6 @@ - name: 2d.path.stroke.prune.rect desc: Zero-length line segments from rect and strokeRect are removed before stroking - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2871,8 +2655,6 @@ - name: 2d.path.stroke.prune.corner desc: Zero-length line segments are removed before stroking with miters - testing: - - 2d.path.stroke.prune code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2891,8 +2673,6 @@ t.done(); - name: 2d.path.transformation.basic - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2906,8 +2686,6 @@ - name: 2d.path.transformation.multiple desc: Transformations are applied while building paths, not when drawing - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2931,8 +2709,6 @@ - name: 2d.path.transformation.changing desc: Transformations are applied while building paths, not when drawing - testing: - - 2d.path.transformation code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2952,8 +2728,6 @@ t.done(); - name: 2d.path.clip.empty - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2965,8 +2739,6 @@ t.done(); - name: 2d.path.clip.basic.1 - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -2979,8 +2751,6 @@ t.done(); - name: 2d.path.clip.basic.2 - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -2993,8 +2763,6 @@ t.done(); - name: 2d.path.clip.intersect - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -3010,8 +2778,6 @@ t.done(); - name: 2d.path.clip.winding.1 - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -3032,8 +2798,6 @@ t.done(); - name: 2d.path.clip.winding.2 - testing: - - 2d.path.clip.basic code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -3057,8 +2821,6 @@ t.done(); - name: 2d.path.clip.unaffected - testing: - - 2d.path.clip.closed code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -3076,8 +2838,6 @@ - name: 2d.path.isPointInPath.basic.1 desc: isPointInPath() detects whether the point is inside the path - testing: - - 2d.path.isPointInPath code: | ctx.rect(0, 0, 20, 20); @assert ctx.isPointInPath(10, 10) === true; @@ -3086,8 +2846,6 @@ - name: 2d.path.isPointInPath.basic.2 desc: isPointInPath() detects whether the point is inside the path - testing: - - 2d.path.isPointInPath code: | ctx.rect(20, 0, 20, 20); @assert ctx.isPointInPath(10, 10) === false; @@ -3096,8 +2854,6 @@ - name: 2d.path.isPointInPath.edge desc: isPointInPath() counts points on the path as being inside - testing: - - 2d.path.isPointInPath.edge code: | ctx.rect(0, 0, 20, 20); @assert ctx.isPointInPath(0, 0) === true; @@ -3116,16 +2872,12 @@ - name: 2d.path.isPointInPath.empty desc: isPointInPath() works when there is no path - testing: - - 2d.path.isPointInPath code: | @assert ctx.isPointInPath(0, 0) === false; t.done(); - name: 2d.path.isPointInPath.subpath desc: isPointInPath() uses the current path, not just the subpath - testing: - - 2d.path.isPointInPath code: | ctx.rect(0, 0, 20, 20); ctx.beginPath(); @@ -3139,8 +2891,6 @@ - name: 2d.path.isPointInPath.outside desc: isPointInPath() works on paths outside the canvas - testing: - - 2d.path.isPointInPath code: | ctx.rect(0, -100, 20, 20); ctx.rect(20, -10, 20, 20); @@ -3154,8 +2904,6 @@ - name: 2d.path.isPointInPath.unclosed desc: isPointInPath() works on unclosed subpaths - testing: - - 2d.path.isPointInPath code: | ctx.moveTo(0, 0); ctx.lineTo(20, 0); @@ -3167,8 +2915,6 @@ - name: 2d.path.isPointInPath.arc desc: isPointInPath() works on arcs - testing: - - 2d.path.isPointInPath code: | ctx.arc(50, 25, 10, 0, Math.PI, false); @assert ctx.isPointInPath(50, 10) === false; @@ -3184,8 +2930,6 @@ - name: 2d.path.isPointInPath.bigarc desc: isPointInPath() works on unclosed arcs larger than 2pi opera: {bug: 320937} - testing: - - 2d.path.isPointInPath code: | ctx.arc(50, 25, 10, 0, 7, false); @assert ctx.isPointInPath(50, 10) === false; @@ -3200,8 +2944,6 @@ - name: 2d.path.isPointInPath.bezier desc: isPointInPath() works on Bezier curves - testing: - - 2d.path.isPointInPath code: | ctx.moveTo(25, 25); ctx.bezierCurveTo(50, -50, 50, 100, 75, 25); @@ -3229,8 +2971,6 @@ - name: 2d.path.isPointInPath.winding desc: isPointInPath() uses the non-zero winding number rule - testing: - - 2d.path.isPointInPath code: | // Create a square ring, using opposite windings to make a hole in the centre ctx.moveTo(0, 0); @@ -3256,8 +2996,6 @@ - name: 2d.path.isPointInPath.transform.1 desc: isPointInPath() handles transformations correctly - testing: - - 2d.path.isPointInPath code: | ctx.translate(50, 0); ctx.rect(0, 0, 20, 20); @@ -3271,8 +3009,6 @@ - name: 2d.path.isPointInPath.transform.2 desc: isPointInPath() handles transformations correctly - testing: - - 2d.path.isPointInPath code: | ctx.rect(50, 0, 20, 20); ctx.translate(50, 0); @@ -3286,8 +3022,6 @@ - name: 2d.path.isPointInPath.transform.3 desc: isPointInPath() handles transformations correctly - testing: - - 2d.path.isPointInPath code: | ctx.scale(-1, 1); ctx.rect(-70, 0, 20, 20); @@ -3301,8 +3035,6 @@ - name: 2d.path.isPointInPath.transform.4 desc: isPointInPath() handles transformations correctly - testing: - - 2d.path.isPointInPath code: | ctx.translate(50, 0); ctx.rect(50, 0, 20, 20); @@ -3314,8 +3046,6 @@ - name: 2d.path.isPointInPath.nonfinite desc: isPointInPath() returns false for non-finite arguments - testing: - - 2d.path.isPointInPath.nonfinite code: | ctx.rect(-100, -50, 200, 100); @assert ctx.isPointInPath(Infinity, 0) === false; @@ -3329,8 +3059,6 @@ - name: 2d.path.isPointInStroke.basic desc: detects whether point is in the area contained by the stroke of the path - testing: - - 2d.path.isPointInStroke.basic code: | ctx.strokeStyle = '#0f0'; ctx.beginPath(); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/pixel-manipulation.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/pixel-manipulation.yaml index b4ff2da712b..86f7940adda 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/pixel-manipulation.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/pixel-manipulation.yaml @@ -1,25 +1,17 @@ - name: 2d.imageData.create2.basic desc: createImageData(sw, sh) exists and returns something - testing: - - 2d.imageData.create2.object code: | @assert ctx.createImageData(1, 1) !== null; t.done(); - name: 2d.imageData.create1.basic desc: createImageData(imgdata) exists and returns something - testing: - - 2d.imageData.create1.object code: | @assert ctx.createImageData(ctx.createImageData(1, 1)) !== null; t.done(); - name: 2d.imageData.create2.initial desc: createImageData(sw, sh) returns transparent black data of the right size - testing: - - 2d.imageData.create2.size - - 2d.imageData.create.initial - - 2d.imageData.initial code: | var imgdata = ctx.createImageData(10, 20); @assert imgdata.data.length === imgdata.width*imgdata.height*4; @@ -34,10 +26,6 @@ - name: 2d.imageData.create1.initial desc: createImageData(imgdata) returns transparent black data of the right size - testing: - - 2d.imageData.create1.size - - 2d.imageData.create.initial - - 2d.imageData.initial code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -55,8 +43,6 @@ - name: 2d.imageData.create2.large desc: createImageData(sw, sh) works for sizes much larger than the canvas - testing: - - 2d.imageData.create2.size code: | var imgdata = ctx.createImageData(1000, 2000); @assert imgdata.data.length === imgdata.width*imgdata.height*4; @@ -71,8 +57,6 @@ - name: 2d.imageData.create2.negative desc: createImageData(sw, sh) takes the absolute magnitude of the size arguments - testing: - - 2d.imageData.create2.size code: | var imgdata1 = ctx.createImageData(10, 20); var imgdata2 = ctx.createImageData(-10, 20); @@ -85,8 +69,6 @@ - name: 2d.imageData.create2.zero desc: createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero - testing: - - 2d.imageData.getcreate.zero code: | @assert throws INDEX_SIZE_ERR ctx.createImageData(10, 0); @assert throws INDEX_SIZE_ERR ctx.createImageData(0, 10); @@ -95,8 +77,6 @@ - name: 2d.imageData.create2.nonfinite desc: createImageData() throws TypeError if arguments are not finite - testing: - - 2d.imageData.getcreate.nonfinite code: | @nonfinite @assert throws TypeError ctx.createImageData(<10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); var posinfobj = { valueOf: function() { return Infinity; } }, @@ -107,16 +87,12 @@ - name: 2d.imageData.create1.zero desc: createImageData(null) throws TypeError - testing: - - 2d.imageData.create.null code: | @assert throws TypeError ctx.createImageData(null); t.done(); - name: 2d.imageData.create2.round desc: createImageData(w, h) is rounded the same as getImageData(0, 0, w, h) - testing: - - 2d.imageData.createround code: | var imgdata1 = ctx.createImageData(10.01, 10.99); var imgdata2 = ctx.getImageData(0, 0, 10.01, 10.99); @@ -126,16 +102,12 @@ - name: 2d.imageData.get.basic desc: getImageData() exists and returns something - testing: - - 2d.imageData.get.basic code: | @assert ctx.getImageData(0, 0, 100, 50) !== null; t.done(); - name: 2d.imageData.get.zero desc: getImageData() throws INDEX_SIZE_ERR if size is zero - testing: - - 2d.imageData.getcreate.zero code: | @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 10, 0); @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 0, 10); @@ -144,8 +116,6 @@ - name: 2d.imageData.get.nonfinite desc: getImageData() throws TypeError if arguments are not finite - testing: - - 2d.imageData.getcreate.nonfinite code: | @nonfinite @assert throws TypeError ctx.getImageData(<10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); var posinfobj = { valueOf: function() { return Infinity; } }, @@ -156,9 +126,6 @@ - name: 2d.imageData.get.source.outside desc: getImageData() returns transparent black outside the canvas - testing: - - 2d.imageData.get.basic - - 2d.imageData.get.outside code: | ctx.fillStyle = '#08f'; ctx.fillRect(0, 0, 100, 50); @@ -218,9 +185,6 @@ - name: 2d.imageData.get.source.negative desc: getImageData() works with negative width and height, and returns top-to-bottom left-to-right - testing: - - 2d.imageData.get.basic - - 2d.pixelarray.order code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -244,8 +208,6 @@ - name: 2d.imageData.get.source.size desc: getImageData() returns bigger ImageData for bigger source rectangle - testing: - - 2d.imageData.get.basic code: | var imgdata1 = ctx.getImageData(0, 0, 10, 10); var imgdata2 = ctx.getImageData(0, 0, 20, 20); @@ -254,9 +216,7 @@ t.done(); - name: 2d.imageData.get.nonpremul - desc: getImageData() returns non-premultiplied colours - testing: - - 2d.imageData.get.premul + desc: getImageData() returns non-premultiplied colors code: | ctx.fillStyle = 'rgba(255, 255, 255, 0.5)'; ctx.fillRect(0, 0, 100, 50); @@ -270,9 +230,6 @@ - name: 2d.imageData.get.range desc: getImageData() returns values in the range [0, 255] - testing: - - 2d.pixelarray.range - - 2d.pixelarray.retrieve code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -285,9 +242,7 @@ t.done(); - name: 2d.imageData.get.clamp - desc: getImageData() clamps colours to the range [0, 255] - testing: - - 2d.pixelarray.range + desc: getImageData() clamps colors to the range [0, 255] code: | ctx.fillStyle = 'rgb(-100, -200, -300)'; ctx.fillRect(0, 0, 100, 50); @@ -305,8 +260,6 @@ - name: 2d.imageData.get.length desc: getImageData() returns a correctly-sized Uint8ClampedArray - testing: - - 2d.pixelarray.length code: | var imgdata = ctx.getImageData(0, 0, 10, 10); @assert imgdata.data.length === imgdata.width*imgdata.height*4; @@ -314,8 +267,6 @@ - name: 2d.imageData.get.order.cols desc: getImageData() returns leftmost columns first - testing: - - 2d.pixelarray.order code: | ctx.fillStyle = '#fff'; ctx.fillRect(0, 0, 100, 50); @@ -329,8 +280,6 @@ - name: 2d.imageData.get.order.rows desc: getImageData() returns topmost rows first - testing: - - 2d.pixelarray.order code: | ctx.fillStyle = '#fff'; ctx.fillRect(0, 0, 100, 50); @@ -344,9 +293,6 @@ - name: 2d.imageData.get.order.rgb desc: getImageData() returns R then G then B - testing: - - 2d.pixelarray.order - - 2d.pixelarray.indexes code: | ctx.fillStyle = '#48c'; ctx.fillRect(0, 0, 100, 50); @@ -363,8 +309,6 @@ - name: 2d.imageData.get.order.alpha desc: getImageData() returns A in the fourth component - testing: - - 2d.pixelarray.order code: | ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; ctx.fillRect(0, 0, 100, 50); @@ -375,8 +319,6 @@ - name: 2d.imageData.get.unaffected desc: getImageData() is not affected by context state - testing: - - 2d.imageData.unaffected code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 50) @@ -399,8 +341,6 @@ - name: 2d.imageData.object.properties desc: ImageData objects have the right properties - testing: - - 2d.imageData.type code: | var imgdata = ctx.getImageData(0, 0, 10, 10); @assert typeof(imgdata.width) === 'number'; @@ -410,8 +350,6 @@ - name: 2d.imageData.object.readonly desc: ImageData objects properties are read-only - testing: - - 2d.imageData.type code: | var imgdata = ctx.getImageData(0, 0, 10, 10); var w = imgdata.width; @@ -431,8 +369,6 @@ - name: 2d.imageData.object.set desc: ImageData.data can be modified - testing: - - 2d.pixelarray.modify code: | var imgdata = ctx.getImageData(0, 0, 10, 10); imgdata.data[0] = 100; @@ -443,8 +379,6 @@ - name: 2d.imageData.object.undefined desc: ImageData.data converts undefined to 0 - testing: - - 2d.pixelarray.modify code: | var imgdata = ctx.getImageData(0, 0, 10, 10); imgdata.data[0] = 100; @@ -454,8 +388,6 @@ - name: 2d.imageData.object.nan desc: ImageData.data converts NaN to 0 - testing: - - 2d.pixelarray.modify code: | var imgdata = ctx.getImageData(0, 0, 10, 10); imgdata.data[0] = 100; @@ -468,8 +400,6 @@ - name: 2d.imageData.object.string desc: ImageData.data converts strings to numbers with ToNumber - testing: - - 2d.pixelarray.modify code: | var imgdata = ctx.getImageData(0, 0, 10, 10); imgdata.data[0] = 100; @@ -485,8 +415,6 @@ - name: 2d.imageData.object.clamp desc: ImageData.data clamps numbers to [0, 255] - testing: - - 2d.pixelarray.modify code: | var imgdata = ctx.getImageData(0, 0, 10, 10); imgdata.data[0] = 100; @@ -517,8 +445,6 @@ - name: 2d.imageData.object.round desc: ImageData.data rounds numbers with round-to-zero - testing: - - 2d.pixelarray.modify code: | var imgdata = ctx.getImageData(0, 0, 10, 10); imgdata.data[0] = 0.499; @@ -553,16 +479,12 @@ - name: 2d.imageData.put.null desc: putImageData() with null imagedata throws TypeError - testing: - - 2d.imageData.put.wrongtype code: | @assert throws TypeError ctx.putImageData(null, 0, 0); t.done(); - name: 2d.imageData.put.nonfinite desc: putImageData() throws TypeError if arguments are not finite - testing: - - 2d.imageData.put.nonfinite code: | var imgdata = ctx.getImageData(0, 0, 10, 10); @nonfinite @assert throws TypeError ctx.putImageData(, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); @@ -571,9 +493,6 @@ - name: 2d.imageData.put.basic desc: putImageData() puts image data from getImageData() onto the canvas - testing: - - 2d.imageData.put.normal - - 2d.imageData.put.3arg code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50) @@ -586,8 +505,6 @@ - name: 2d.imageData.put.created desc: putImageData() puts image data from createImageData() onto the canvas - testing: - - 2d.imageData.put.normal code: | var imgdata = ctx.createImageData(100, 50); for (var i = 0; i < imgdata.data.length; i += 4) { @@ -604,8 +521,6 @@ - name: 2d.imageData.put.wrongtype desc: putImageData() does not accept non-ImageData objects - testing: - - 2d.imageData.put.wrongtype code: | var imgdata = { width: 1, height: 1, data: [255, 0, 0, 255] }; @assert throws TypeError ctx.putImageData(imgdata, 0, 0); @@ -615,8 +530,6 @@ - name: 2d.imageData.put.cross desc: putImageData() accepts image data got from a different canvas - testing: - - 2d.imageData.put.normal code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); var ctx2 = offscreenCanvas2.getContext('2d'); @@ -631,8 +544,6 @@ - name: 2d.imageData.put.alpha desc: putImageData() puts non-solid image data correctly - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = 'rgba(0, 255, 0, 0.25)'; ctx.fillRect(0, 0, 100, 50) @@ -645,8 +556,6 @@ - name: 2d.imageData.put.modified desc: putImageData() puts modified image data correctly - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50) @@ -664,8 +573,6 @@ - name: 2d.imageData.put.dirty.zero desc: putImageData() with zero-sized dirty rectangle puts nothing - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -679,8 +586,6 @@ - name: 2d.imageData.put.dirty.rect1 desc: putImageData() only modifies areas inside the dirty rectangle, using width and height - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -702,8 +607,6 @@ - name: 2d.imageData.put.dirty.rect2 desc: putImageData() only modifies areas inside the dirty rectangle, using x and y - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -724,8 +627,6 @@ - name: 2d.imageData.put.dirty.negative desc: putImageData() handles negative-sized dirty rectangles correctly - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -746,8 +647,6 @@ - name: 2d.imageData.put.dirty.outside desc: putImageData() handles dirty rectangles outside the canvas correctly - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -769,8 +668,6 @@ - name: 2d.imageData.put.unchanged desc: putImageData(getImageData(...), ...) has no effect - testing: - - 2d.imageData.unchanged code: | var i = 0; for (var y = 0; y < 16; ++y) { @@ -792,8 +689,6 @@ - name: 2d.imageData.put.unaffected desc: putImageData() is not affected by context state - testing: - - 2d.imageData.unaffected code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50) @@ -812,8 +707,6 @@ - name: 2d.imageData.put.clip desc: putImageData() is not affected by clipping regions - testing: - - 2d.imageData.unaffected code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50) @@ -830,8 +723,6 @@ - name: 2d.imageData.put.path desc: putImageData() does not affect the current path - testing: - - 2d.imageData.put.normal code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50) @@ -842,4 +733,3 @@ ctx.fill(); @assert pixel 50,25 ==~ 0,255,0,255; t.done(); - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/shadows.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/shadows.yaml index 28f5d4bfae7..06e2681c72c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/shadows.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/shadows.yaml @@ -1,15 +1,9 @@ - name: 2d.shadow.attributes.shadowBlur.initial - testing: - - 2d.shadow.blur.get - - 2d.shadow.blur.initial code: | @assert ctx.shadowBlur === 0; t.done(); - name: 2d.shadow.attributes.shadowBlur.valid - testing: - - 2d.shadow.blur.get - - 2d.shadow.blur.set code: | ctx.shadowBlur = 1; @assert ctx.shadowBlur === 1; @@ -22,8 +16,6 @@ t.done(); - name: 2d.shadow.attributes.shadowBlur.invalid - testing: - - 2d.shadow.blur.invalid code: | ctx.shadowBlur = 1; ctx.shadowBlur = -2; @@ -40,17 +32,12 @@ t.done(); - name: 2d.shadow.attributes.shadowOffset.initial - testing: - - 2d.shadow.offset.initial code: | @assert ctx.shadowOffsetX === 0; @assert ctx.shadowOffsetY === 0; t.done(); - name: 2d.shadow.attributes.shadowOffset.valid - testing: - - 2d.shadow.offset.get - - 2d.shadow.offset.set code: | ctx.shadowOffsetX = 1; ctx.shadowOffsetY = 2; @@ -75,8 +62,6 @@ t.done(); - name: 2d.shadow.attributes.shadowOffset.invalid - testing: - - 2d.shadow.offset.invalid code: | ctx.shadowOffsetX = 1; ctx.shadowOffsetY = 2; @@ -99,16 +84,11 @@ t.done(); - name: 2d.shadow.attributes.shadowColor.initial - testing: - - 2d.shadow.color.initial code: | @assert ctx.shadowColor === 'rgba(0, 0, 0, 0)'; t.done(); - name: 2d.shadow.attributes.shadowColor.valid - testing: - - 2d.shadow.color.get - - 2d.shadow.color.set code: | ctx.shadowColor = 'lime'; @assert ctx.shadowColor === '#00ff00'; @@ -117,8 +97,6 @@ t.done(); - name: 2d.shadow.attributes.shadowColor.invalid - testing: - - 2d.shadow.color.invalid code: | ctx.shadowColor = '#00ff00'; ctx.shadowColor = 'bogus'; @@ -136,9 +114,6 @@ - name: 2d.shadow.enable.off.1 desc: Shadows are not drawn when only shadowColor is set - testing: - - 2d.shadow.enable - - 2d.shadow.render code: | ctx.shadowColor = '#f00'; ctx.fillStyle = '#0f0'; @@ -148,9 +123,6 @@ - name: 2d.shadow.enable.off.2 desc: Shadows are not drawn when only shadowColor is set - testing: - - 2d.shadow.enable - - 2d.shadow.render code: | ctx.globalCompositeOperation = 'destination-atop'; ctx.shadowColor = '#f00'; @@ -161,9 +133,6 @@ - name: 2d.shadow.enable.blur desc: Shadows are drawn if shadowBlur is set - testing: - - 2d.shadow.enable - - 2d.shadow.render code: | ctx.globalCompositeOperation = 'destination-atop'; ctx.shadowColor = '#0f0'; @@ -175,9 +144,6 @@ - name: 2d.shadow.enable.x desc: Shadows are drawn if shadowOffsetX is set - testing: - - 2d.shadow.enable - - 2d.shadow.render code: | ctx.globalCompositeOperation = 'destination-atop'; ctx.shadowColor = '#0f0'; @@ -189,9 +155,6 @@ - name: 2d.shadow.enable.y desc: Shadows are drawn if shadowOffsetY is set - testing: - - 2d.shadow.enable - - 2d.shadow.render code: | ctx.globalCompositeOperation = 'destination-atop'; ctx.shadowColor = '#0f0'; @@ -203,8 +166,6 @@ - name: 2d.shadow.offset.positiveX desc: Shadows can be offset with positive x - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -218,8 +179,6 @@ - name: 2d.shadow.offset.negativeX desc: Shadows can be offset with negative x - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -233,8 +192,6 @@ - name: 2d.shadow.offset.positiveY desc: Shadows can be offset with positive y - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -248,8 +205,6 @@ - name: 2d.shadow.offset.negativeY desc: Shadows can be offset with negative y - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -264,8 +219,6 @@ - name: 2d.shadow.outside desc: Shadows of shapes outside the visible area can be offset onto the visible area - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -287,8 +240,6 @@ - name: 2d.shadow.clip.1 desc: Shadows of clipped shapes are still drawn within the clipping region - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 50); @@ -308,8 +259,6 @@ - name: 2d.shadow.clip.2 desc: Shadows are not drawn outside the clipping region - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); @@ -329,8 +278,6 @@ - name: 2d.shadow.clip.3 desc: Shadows of clipped shapes are still drawn within the clipping region - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); @@ -351,8 +298,6 @@ - name: 2d.shadow.stroke.basic desc: Shadows are drawn for strokes - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -371,8 +316,6 @@ - name: 2d.shadow.stroke.cap.1 desc: Shadows are not drawn for areas outside stroke caps - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -394,8 +337,6 @@ - name: 2d.shadow.stroke.cap.2 desc: Shadows are drawn for stroke caps - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -415,8 +356,6 @@ - name: 2d.shadow.stroke.join.1 desc: Shadows are not drawn for areas outside stroke joins - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -438,8 +377,6 @@ - name: 2d.shadow.stroke.join.2 desc: Shadows are drawn for stroke joins - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); @@ -463,8 +400,6 @@ - name: 2d.shadow.stroke.join.3 desc: Shadows are drawn for stroke joins respecting miter limit - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -487,8 +422,6 @@ - name: 2d.shadow.image.basic desc: Shadows are drawn for images - testing: - - 2d.shadow.render images: - red.png code: | @@ -514,8 +447,6 @@ - name: 2d.shadow.image.transparent.1 desc: Shadows are not drawn for transparent images - testing: - - 2d.shadow.render images: - transparent.png code: | @@ -541,8 +472,6 @@ - name: 2d.shadow.image.transparent.2 desc: Shadows are not drawn for transparent parts of images - testing: - - 2d.shadow.render images: - redtransparent.png code: | @@ -574,8 +503,6 @@ - name: 2d.shadow.image.alpha desc: Shadows are drawn correctly for partially-transparent images - testing: - - 2d.shadow.render images: - transparent50.png code: | @@ -601,8 +528,6 @@ - name: 2d.shadow.image.section desc: Shadows are not drawn for areas outside image source rectangles - testing: - - 2d.shadow.render images: - redtransparent.png code: | @@ -630,8 +555,6 @@ - name: 2d.shadow.image.scale desc: Shadows are drawn correctly for scaled images - testing: - - 2d.shadow.render images: - redtransparent.png code: | @@ -659,8 +582,6 @@ - name: 2d.shadow.canvas.basic desc: Shadows are drawn for canvases - testing: - - 2d.shadow.render code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); var ctx2 = offscreenCanvas2.getContext('2d'); @@ -676,8 +597,6 @@ - name: 2d.shadow.canvas.transparent.1 desc: Shadows are not drawn for transparent canvases - testing: - - 2d.shadow.render code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); var ctx2 = offscreenCanvas2.getContext('2d'); @@ -691,8 +610,6 @@ - name: 2d.shadow.canvas.transparent.2 desc: Shadows are not drawn for transparent parts of canvases - testing: - - 2d.shadow.render code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); var ctx2 = offscreenCanvas2.getContext('2d'); @@ -714,8 +631,6 @@ - name: 2d.shadow.canvas.alpha desc: Shadows are drawn correctly for partially-transparent canvases - testing: - - 2d.shadow.render code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); var ctx2 = offscreenCanvas2.getContext('2d'); @@ -731,8 +646,6 @@ - name: 2d.shadow.pattern.basic desc: Shadows are drawn for fill patterns - testing: - - 2d.shadow.render images: - red.png code: | @@ -759,8 +672,6 @@ - name: 2d.shadow.pattern.transparent.1 desc: Shadows are not drawn for transparent fill patterns - testing: - - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 images: - transparent.png @@ -788,8 +699,6 @@ - name: 2d.shadow.pattern.transparent.2 desc: Shadows are not drawn for transparent parts of fill patterns - testing: - - 2d.shadow.render images: - redtransparent.png code: | @@ -821,8 +730,6 @@ - name: 2d.shadow.pattern.alpha desc: Shadows are drawn correctly for partially-transparent fill patterns - testing: - - 2d.shadow.render images: - transparent50.png code: | @@ -849,8 +756,6 @@ - name: 2d.shadow.gradient.basic desc: Shadows are drawn for gradient fills - testing: - - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 code: | var gradient = ctx.createLinearGradient(0, 0, 100, 0); @@ -867,8 +772,6 @@ - name: 2d.shadow.gradient.transparent.1 desc: Shadows are not drawn for transparent gradient fills - testing: - - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 code: | var gradient = ctx.createLinearGradient(0, 0, 100, 0); @@ -885,8 +788,6 @@ - name: 2d.shadow.gradient.transparent.2 desc: Shadows are not drawn for transparent parts of gradient fills - testing: - - 2d.shadow.render code: | var gradient = ctx.createLinearGradient(0, 0, 100, 0); gradient.addColorStop(0, '#f00'); @@ -908,8 +809,6 @@ - name: 2d.shadow.gradient.alpha desc: Shadows are drawn correctly for partially-transparent gradient fills - testing: - - 2d.shadow.render code: | var gradient = ctx.createLinearGradient(0, 0, 100, 0); gradient.addColorStop(0, 'rgba(255,0,0,0.5)'); @@ -925,8 +824,6 @@ - name: 2d.shadow.transform.1 desc: Shadows take account of transformations - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -939,8 +836,6 @@ - name: 2d.shadow.transform.2 desc: Shadow offsets are not affected by transformations - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -952,9 +847,7 @@ t.done(); - name: 2d.shadow.alpha.1 - desc: Shadow colour alpha components are used - testing: - - 2d.shadow.render + desc: Shadow color alpha components are used code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -965,9 +858,7 @@ t.done(); - name: 2d.shadow.alpha.2 - desc: Shadow colour alpha components are used - testing: - - 2d.shadow.render + desc: Shadow color alpha components are used code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -979,8 +870,6 @@ - name: 2d.shadow.alpha.3 desc: Shadows are affected by globalAlpha - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -994,8 +883,6 @@ - name: 2d.shadow.alpha.4 desc: Shadows with alpha components are correctly affected by globalAlpha - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1009,8 +896,6 @@ - name: 2d.shadow.alpha.5 desc: Shadows of shapes with alpha components are drawn correctly - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1023,8 +908,6 @@ - name: 2d.shadow.composite.1 desc: Shadows are drawn using globalCompositeOperation - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1038,8 +921,6 @@ - name: 2d.shadow.composite.2 desc: Shadows are drawn using globalCompositeOperation - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -1053,8 +934,6 @@ - name: 2d.shadow.composite.3 desc: Areas outside shadows are drawn correctly with destination-out - testing: - - 2d.shadow.render code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/text.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/text.yaml index 636d7f5e978..80c54ca6b66 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/text.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/text.yaml @@ -1,7 +1,4 @@ - name: 2d.text.font.parse.basic - testing: - - 2d.text.font.parse - - 2d.text.font.get code: | ctx.font = '20px serif'; @assert ctx.font === '20px serif'; @@ -11,29 +8,18 @@ t.done(); - name: 2d.text.font.parse.tiny - testing: - - 2d.text.font.parse - - 2d.text.font.get code: | ctx.font = '1px sans-serif'; @assert ctx.font === '1px sans-serif'; t.done(); - name: 2d.text.font.parse.complex - testing: - - 2d.text.font.parse - - 2d.text.font.get - - 2d.text.font.lineheight code: | ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif'; @assert ctx.font === 'italic small-caps 12px "Unknown Font", sans-serif'; @moz-todo t.done(); - name: 2d.text.font.parse.family - testing: - - 2d.text.font.parse - - 2d.text.font.get - - 2d.text.font.lineheight code: | ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","'; @assert ctx.font === '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","'; @@ -51,18 +37,12 @@ - name: 2d.text.font.parse.system desc: System fonts must be computed to explicit values - testing: - - 2d.text.font.parse - - 2d.text.font.get - - 2d.text.font.systemfonts code: | ctx.font = 'message-box'; @assert ctx.font !== 'message-box'; t.done(); - name: 2d.text.font.parse.invalid - testing: - - 2d.text.font.invalid code: | ctx.font = '20px serif'; @assert ctx.font === '20px serif'; @@ -113,24 +93,17 @@ t.done(); - name: 2d.text.font.default - testing: - - 2d.text.font.default code: | @assert ctx.font === '10px sans-serif'; t.done(); - name: 2d.text.font.relative_size - testing: - - 2d.text.font.relative_size code: | ctx.font = '1em sans-serif'; @assert ctx.font === '10px sans-serif'; t.done(); - name: 2d.text.align.valid - testing: - - 2d.text.align.get - - 2d.text.align.set code: | ctx.textAlign = 'start'; @assert ctx.textAlign === 'start'; @@ -149,8 +122,6 @@ t.done(); - name: 2d.text.align.invalid - testing: - - 2d.text.align.invalid code: | ctx.textAlign = 'start'; ctx.textAlign = 'bogus'; @@ -170,17 +141,12 @@ t.done(); - name: 2d.text.align.default - testing: - - 2d.text.align.default code: | @assert ctx.textAlign === 'start'; t.done(); - name: 2d.text.baseline.valid - testing: - - 2d.text.baseline.get - - 2d.text.baseline.set code: | ctx.textBaseline = 'top'; @assert ctx.textBaseline === 'top'; @@ -202,8 +168,6 @@ t.done(); - name: 2d.text.baseline.invalid - testing: - - 2d.text.baseline.invalid code: | ctx.textBaseline = 'top'; ctx.textBaseline = 'bogus'; @@ -223,8 +187,6 @@ t.done(); - name: 2d.text.baseline.default - testing: - - 2d.text.baseline.default code: | @assert ctx.textBaseline === 'alphabetic'; t.done(); @@ -232,9 +194,6 @@ - name: 2d.text.draw.fill.basic desc: fillText draws filled text manual: - testing: - - 2d.text.draw - - 2d.text.draw.fill code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -257,8 +216,6 @@ - name: 2d.text.draw.fill.unaffected desc: fillText does not start a new path or subpath - testing: - - 2d.text.draw.fill code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -282,8 +239,6 @@ - name: 2d.text.draw.fill.rtl desc: fillText respects Right-To-Left Override characters manual: - testing: - - 2d.text.draw code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -296,8 +251,6 @@ - name: 2d.text.draw.fill.maxWidth.large desc: fillText handles maxWidth correctly manual: - testing: - - 2d.text.draw.maxwidth code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -308,8 +261,6 @@ expected: *passfill - name: 2d.text.draw.fill.maxWidth.small desc: fillText handles maxWidth correctly - testing: - - 2d.text.draw.maxwidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -322,8 +273,6 @@ - name: 2d.text.draw.fill.maxWidth.zero desc: fillText handles maxWidth correctly - testing: - - 2d.text.draw.maxwidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -337,8 +286,6 @@ - name: 2d.text.draw.fill.maxWidth.negative desc: fillText handles maxWidth correctly - testing: - - 2d.text.draw.maxwidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -351,8 +298,6 @@ - name: 2d.text.draw.fill.maxWidth.NaN desc: fillText handles maxWidth correctly - testing: - - 2d.text.draw.maxwidth code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -366,9 +311,6 @@ - name: 2d.text.draw.stroke.basic desc: strokeText draws stroked text manual: - testing: - - 2d.text.draw - - 2d.text.draw.stroke code: | ctx.fillStyle = '#000'; ctx.fillRect(0, 0, 100, 50); @@ -393,8 +335,6 @@ - name: 2d.text.draw.stroke.unaffected desc: strokeText does not start a new path or subpath - testing: - - 2d.text.draw.stroke code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -419,8 +359,6 @@ - name: 2d.text.draw.kern.consistent desc: Stroked and filled text should have exactly the same kerning so it overlaps manual: - testing: - - 2d.text.draw code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -452,8 +390,6 @@ - name: 2d.text.draw.fill.maxWidth.fontface desc: fillText works on @font-face fonts - testing: - - 2d.text.draw.maxwidth fonts: - CanvasTest code: | @@ -476,8 +412,6 @@ - name: 2d.text.draw.fill.maxWidth.bound desc: fillText handles maxWidth based on line size, not bounding box size - testing: - - 2d.text.draw.maxwidth fonts: - CanvasTest code: | @@ -499,8 +433,6 @@ expected: green - name: 2d.text.draw.fontface - testing: - - 2d.text.font.fontface fonts: - CanvasTest code: | @@ -524,8 +456,6 @@ - name: 2d.text.draw.fontface.repeat desc: Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.) - testing: - - 2d.text.font.fontface fonts: - CanvasTest fonthack: 0 @@ -550,8 +480,6 @@ - name: 2d.text.draw.fontface.notinpage desc: '@font-face fonts should work even if they are not used in the page' - testing: - - 2d.text.font.fontface fonts: - CanvasTest fonthack: 0 @@ -575,8 +503,6 @@ - name: 2d.text.draw.baseline.top desc: textBaseline top is the top of the em square (not the bounding box) - testing: - - 2d.text.baseline.top fonts: - CanvasTest code: | @@ -602,8 +528,6 @@ - name: 2d.text.draw.baseline.bottom desc: textBaseline bottom is the bottom of the em square (not the bounding box) - testing: - - 2d.text.baseline.bottom fonts: - CanvasTest code: | @@ -629,8 +553,6 @@ - name: 2d.text.draw.baseline.middle desc: textBaseline middle is the middle of the em square (not the bounding box) - testing: - - 2d.text.baseline.middle fonts: - CanvasTest code: | @@ -655,8 +577,6 @@ expected: green - name: 2d.text.draw.baseline.alphabetic - testing: - - 2d.text.baseline.alphabetic fonts: - CanvasTest code: | @@ -681,8 +601,6 @@ expected: green - name: 2d.text.draw.baseline.ideographic - testing: - - 2d.text.baseline.ideographic fonts: - CanvasTest code: | @@ -707,8 +625,6 @@ expected: green - name: 2d.text.draw.baseline.hanging - testing: - - 2d.text.baseline.hanging fonts: - CanvasTest code: | @@ -734,8 +650,6 @@ - name: 2d.text.draw.align.left desc: textAlign left is the left of the first em square (not the bounding box) - testing: - - 2d.text.align.left fonts: - CanvasTest code: | @@ -761,8 +675,6 @@ - name: 2d.text.draw.align.right desc: textAlign right is the right of the last em square (not the bounding box) - testing: - - 2d.text.align.right fonts: - CanvasTest code: | @@ -788,8 +700,6 @@ - name: 2d.text.draw.align.start.ltr desc: textAlign start with ltr is the left edge - testing: - - 2d.text.align.left fonts: - CanvasTest code: | @@ -816,9 +726,6 @@ - name: 2d.text.draw.align.start.rtl desc: textAlign start with rtl is the right edge - testing: - - 2d.text.align.right - - 2d.text.draw.direction fonts: - CanvasTest code: | @@ -845,8 +752,6 @@ - name: 2d.text.draw.align.end.ltr desc: textAlign end with ltr is the right edge - testing: - - 2d.text.align.right fonts: - CanvasTest code: | @@ -873,9 +778,6 @@ - name: 2d.text.draw.align.end.rtl desc: textAlign end with rtl is the left edge - testing: - - 2d.text.align.left - - 2d.text.draw.direction fonts: - CanvasTest code: | @@ -902,8 +804,6 @@ - name: 2d.text.draw.align.center desc: textAlign center is the center of the em squares (not the bounding box) - testing: - - 2d.text.align.center fonts: - CanvasTest code: | @@ -930,8 +830,6 @@ - name: 2d.text.draw.space.basic desc: U+0020 is rendered the correct size (1em wide) - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -952,8 +850,6 @@ - name: 2d.text.draw.space.collapse.space desc: Space characters are converted to U+0020, and collapsed (per CSS) - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -974,8 +870,6 @@ - name: 2d.text.draw.space.collapse.other desc: Space characters are converted to U+0020, and collapsed (per CSS) - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -996,8 +890,6 @@ - name: 2d.text.draw.space.collapse.nonspace desc: Non-space characters are not converted to U+0020 and collapsed - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -1018,8 +910,6 @@ - name: 2d.text.draw.space.collapse.start desc: Space characters at the start of a line are collapsed (per CSS) - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -1040,8 +930,6 @@ - name: 2d.text.draw.space.collapse.end desc: Space characters at the end of a line are collapsed (per CSS) - testing: - - 2d.text.draw.spaces fonts: - CanvasTest code: | @@ -1063,8 +951,6 @@ - name: 2d.text.measure.width.basic desc: The width of character is same as font used for OffscreenCanvas - testing: - - 2d.text.measure fonts: - CanvasTest code: | @@ -1084,8 +970,6 @@ - name: 2d.text.measure.width.empty desc: The empty string has zero width for OffscreenCanvas - testing: - - 2d.text.measure fonts: - CanvasTest code: | @@ -1100,8 +984,6 @@ - name: 2d.text.measure.width.space desc: Space characters are converted to U+0020 and collapsed (per CSS) for OffscreenCanvas - testing: - - 2d.text.measure.spaces fonts: - CanvasTest code: | @@ -1122,8 +1004,6 @@ - name: 2d.text.measure.advances desc: Testing width advances for OffscreenCanvas - testing: - - 2d.text.measure.advances fonts: - CanvasTest code: | @@ -1153,8 +1033,6 @@ - name: 2d.text.measure.actualBoundingBox desc: Testing actualBoundingBox for OffscreenCanvas - testing: - - 2d.text.measure.actualBoundingBox fonts: - CanvasTest code: | @@ -1191,8 +1069,6 @@ - name: 2d.text.measure.fontBoundingBox desc: Testing fontBoundingBox for OffscreenCanvas - testing: - - 2d.text.measure.fontBoundingBox fonts: - CanvasTest code: | @@ -1212,8 +1088,6 @@ }).then(t_pass, t_fail); - name: 2d.text.measure.emHeights desc: Testing emHeights for OffscreenCanvas - testing: - - 2d.text.measure.emHeights fonts: - CanvasTest code: | @@ -1236,8 +1110,6 @@ - name: 2d.text.measure.baselines desc: Testing baselines for OffscreenCanvas - testing: - - 2d.text.measure.baselines fonts: - CanvasTest code: | @@ -1260,8 +1132,6 @@ - name: 2d.text.drawing.style.spacing desc: Testing letter spacing and word spacing - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -1287,8 +1157,6 @@ - name: 2d.text.drawing.style.nonfinite.spacing desc: Testing letter spacing and word spacing with nonfinite inputs - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -1305,8 +1173,6 @@ - name: 2d.text.drawing.style.invalid.spacing desc: Testing letter spacing and word spacing with invalid units - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -1323,8 +1189,6 @@ - name: 2d.text.drawing.style.letterSpacing.measure desc: Testing letter spacing and word spacing - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -1358,8 +1222,6 @@ - name: 2d.text.drawing.style.wordSpacing.measure desc: Testing if word spacing is working properly - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -1393,8 +1255,6 @@ - name: 2d.text.drawing.style.letterSpacing.change.font desc: Set letter spacing and word spacing to font dependent value and verify it works after font change. - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -1420,8 +1280,6 @@ - name: 2d.text.drawing.style.wordSpacing.change.font desc: Set word spacing and word spacing to font dependent value and verify it works after font change. - testing: - - 2d.text.drawing.style.spacing code: | @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; @@ -1447,8 +1305,6 @@ - name: 2d.text.drawing.style.fontKerning desc: Testing basic functionalities of fontKerning for canvas - testing: - - 2d.text.drawing.style.fontKerning code: | @assert ctx.fontKerning === "auto"; ctx.fontKerning = "normal"; @@ -1462,8 +1318,6 @@ - name: 2d.text.drawing.style.fontKerning.with.uppercase desc: Testing basic functionalities of fontKerning for canvas - testing: - - 2d.text.drawing.style.fontKerning code: | @assert ctx.fontKerning === "auto"; ctx.fontKerning = "Normal"; @@ -1499,8 +1353,6 @@ - name: 2d.text.drawing.style.fontVariant.settings desc: Testing basic functionalities of fontKerning for canvas - testing: - - 2d.text.drawing.style.fontVariantCaps code: | // Setting fontVariantCaps with lower cases @assert ctx.fontVariantCaps === "normal"; @@ -1555,8 +1407,6 @@ - name: 2d.text.drawing.style.textRendering.settings desc: Testing basic functionalities of textRendering in Canvas - testing: - - 2d.text.drawing.style.textRendering code: | // Setting textRendering with lower cases @assert ctx.textRendering === "auto"; @@ -1593,8 +1443,6 @@ - name: 2d.text.drawing.style.measure.rtl.text desc: Measurement should follow canvas direction instead text direction - testing: - - 2d.text.drawing.style.textRendering code: | metrics = ctx.measureText('اَلْعَرَبÙيَّةÙ'); @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight; @@ -1605,8 +1453,6 @@ - name: 2d.text.drawing.style.measure.textAlign desc: Measurement should be related to textAlignment - testing: - - 2d.text.drawing.style.measure.textAlign code: | ctx.textAlign = "right"; metrics = ctx.measureText('hello'); @@ -1619,8 +1465,6 @@ - name: 2d.text.drawing.style.measure.direction desc: Measurement should follow text direction - testing: - - 2d.text.drawing.style.measure.direction code: | ctx.direction = "ltr"; metrics = ctx.measureText('hello'); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/the-canvas-state.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/the-canvas-state.yaml index 1ca9bf36105..afb4cf956c6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/the-canvas-state.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/the-canvas-state.yaml @@ -1,7 +1,5 @@ - name: 2d.state.saverestore.transformation desc: save()/restore() affects the current transformation matrix - testing: - - 2d.state.transformation code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -15,8 +13,6 @@ - name: 2d.state.saverestore.clip desc: save()/restore() affects the clipping path - testing: - - 2d.state.clip code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -31,8 +27,6 @@ - name: 2d.state.saverestore.path desc: save()/restore() does not affect the current path - testing: - - 2d.state.path code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -46,8 +40,6 @@ - name: 2d.state.saverestore.bitmap desc: save()/restore() does not affect the current bitmap - testing: - - 2d.state.bitmap code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -60,9 +52,6 @@ - name: 2d.state.saverestore.stack desc: save()/restore() can be nested as a stack - testing: - - 2d.state.save - - 2d.state.restore code: | ctx.lineWidth = 1; ctx.save(); @@ -78,9 +67,6 @@ - name: 2d.state.saverestore.stackdepth desc: save()/restore() stack depth is not unreasonably limited - testing: - - 2d.state.save - - 2d.state.restore code: | var limit = 512; for (var i = 1; i < limit; ++i) @@ -97,8 +83,6 @@ - name: 2d.state.saverestore.underflow desc: restore() with an empty stack has no effect - testing: - - 2d.state.restore.underflow code: | for (var i = 0; i < 16; ++i) ctx.restore(); @@ -106,4 +90,3 @@ ctx.restore(); @assert ctx.lineWidth === 0.5; t.done(); - diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/the-offscreen-canvas.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/the-offscreen-canvas.yaml index 3e92426dce1..0bef18bf9d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/the-offscreen-canvas.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/the-offscreen-canvas.yaml @@ -1,15 +1,11 @@ - name: 2d.canvas.reference desc: canvas refers back to its canvas - testing: - - 2d.canvas code: | @assert ctx.canvas === canvas; t.done(); - name: 2d.canvas.readonly desc: canvas is readonly - testing: - - 2d.canvas.attribute code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); var d = ctx.canvas; @@ -20,8 +16,6 @@ - name: 2d.getcontext.exists desc: The 2D context is implemented - testing: - - context.2d code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @assert offscreenCanvas2.getContext('2d') !== null; @@ -29,8 +23,6 @@ - name: 2d.getcontext.extraargs.create desc: The 2D context doesn't throw with extra getContext arguments (new context) - testing: - - context.2d.extraargs code: | @assert (new OffscreenCanvas(100, 50)).getContext('2d', false, {}, [], 1, "2") !== null; @assert (new OffscreenCanvas(100, 50)).getContext('2d', 123) !== null; @@ -42,8 +34,6 @@ - name: 2d.getcontext.extraargs.cache desc: The 2D context doesn't throw with extra getContext arguments (cached) - testing: - - context.2d.extraargs code: | @assert canvas.getContext('2d', false, {}, [], 1, "2") !== null; @assert canvas.getContext('2d', 123) !== null; @@ -55,8 +45,6 @@ - name: 2d.getcontext.unique desc: getContext('2d') returns the same object - testing: - - context.unique code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @assert offscreenCanvas2.getContext('2d') === offscreenCanvas2.getContext('2d'); @@ -64,8 +52,6 @@ - name: 2d.getcontext.shared desc: getContext('2d') returns objects which share canvas state - testing: - - context.unique code: | var ctx2 = canvas.getContext('2d'); ctx.fillStyle = '#f00'; @@ -76,8 +62,6 @@ - name: context.emptystring desc: getContext with empty string returns null - testing: - - context.unrecognised code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @assert throws TypeError offscreenCanvas2.getContext(""); @@ -85,8 +69,6 @@ - name: context.unrecognised.badname desc: getContext with unrecognised context name returns null - testing: - - context.unrecognised code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @assert throws TypeError offscreenCanvas2.getContext('This is not an implemented context in any real browser'); @@ -94,8 +76,6 @@ - name: context.unrecognised.badsuffix desc: Context name "2d" plus a suffix is unrecognised - testing: - - context.unrecognised code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @assert throws TypeError offscreenCanvas2.getContext("2d#"); @@ -103,8 +83,6 @@ - name: context.unrecognised.nullsuffix desc: Context name "2d" plus a "\0" suffix is unrecognised - testing: - - context.unrecognised code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @assert throws TypeError offscreenCanvas2.getContext("2d\0"); @@ -112,8 +90,6 @@ - name: context.unrecognised.unicode desc: Context name which kind of looks like "2d" is unrecognised - testing: - - context.unrecognised code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @assert throws TypeError offscreenCanvas2.getContext("2\uFF44"); @@ -121,34 +97,26 @@ - name: context.casesensitive desc: Context name "2D" is unrecognised; matching is case sensitive - testing: - - context.unrecognised code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @assert throws TypeError offscreenCanvas2.getContext('2D'); t.done(); - name: context.arguments.missing - testing: - - canvas.getContext code: | var offscreenCanvas2 = new OffscreenCanvas(100, 50); @assert throws TypeError offscreenCanvas2.getContext(); @moz-todo t.done(); -- name: initial.colour +- name: initial.color desc: Initial state is transparent black - testing: - - initial.colour code: | @assert pixel 20,20 == 0,0,0,0; t.done(); - name: initial.reset.different desc: Changing size resets canvas to transparent black - testing: - - initial.reset code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); @@ -159,8 +127,6 @@ - name: initial.reset.same desc: Setting size (not changing the value) resets canvas to transparent black - testing: - - initial.reset code: | canvas.width = 100; ctx.fillStyle = '#f00'; @@ -172,8 +138,6 @@ - name: initial.reset.path desc: Resetting the canvas state resets the current path - testing: - - initial.reset code: | canvas.width = 100; ctx.rect(0, 0, 100, 50); @@ -185,8 +149,6 @@ - name: initial.reset.clip desc: Resetting the canvas state resets the current clip region - testing: - - initial.reset code: | canvas.width = 100; ctx.rect(0, 0, 1, 1); @@ -199,8 +161,6 @@ - name: initial.reset.transform desc: Resetting the canvas state resets the current transformation matrix - testing: - - initial.reset code: | canvas.width = 100; ctx.scale(0.1, 0.1); @@ -212,8 +172,6 @@ - name: initial.reset.gradient desc: Resetting the canvas state does not invalidate any existing gradients - testing: - - initial.reset code: | canvas.width = 50; var g = ctx.createLinearGradient(0, 0, 100, 0); @@ -229,8 +187,6 @@ - name: initial.reset.pattern desc: Resetting the canvas state does not invalidate any existing patterns - testing: - - initial.reset code: | canvas.width = 30; ctx.fillStyle = '#0f0'; @@ -246,9 +202,6 @@ - name: size.attributes.idl.set.zero desc: Setting width/height IDL attributes to 0 - testing: - - size.width - - size.height code: | canvas.width = 0; canvas.height = 0; @@ -258,9 +211,6 @@ - name: size.attributes.idl desc: Getting/setting width/height IDL attributes - testing: - - size.width - - size.height webidl: - es-unsigned-long code: | @@ -284,9 +234,6 @@ - name: size.attributes.default desc: Default width/height when attributes are missing - testing: - - size.default - - size.missing code: | @assert canvas.width === 100; @assert canvas.height === 50; @@ -294,8 +241,6 @@ - name: size.attributes.reflect.setidl desc: Setting IDL attributes updates IDL and content attributes - testing: - - size.reflect code: | canvas.width = 120; canvas.height = 60; @@ -305,8 +250,6 @@ - name: size.attributes.reflect.setidlzero desc: Setting IDL attributes to 0 updates IDL and content attributes - testing: - - size.reflect code: | canvas.width = 0; canvas.height = 0; @@ -315,9 +258,6 @@ t.done(); - name: size.large - testing: - - size.width - - size.height notes: Not sure how reasonable this is, but the spec doesn't say there's an upper limit on the size. code: | @@ -330,8 +270,6 @@ - name: 2d.text.setFont.mathFont desc: crbug.com/1212190, make sure offscreencanvas doesn't crash with Math Font - testing: - - 2d.text.setFont.mathFont code: | ctx.font = "math serif"; t.done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/transformations.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/transformations.yaml index ab5e6d5a624..efc00222bfc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/transformations.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/transformations.yaml @@ -1,7 +1,5 @@ - name: 2d.transformation.order desc: Transformations are applied in the right order - testing: - - 2d.transformation.order code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -14,8 +12,6 @@ - name: 2d.transformation.scale.basic desc: scale() works - testing: - - 2d.transformation.scale code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -27,8 +23,6 @@ - name: 2d.transformation.scale.zero desc: scale() with a scale factor of zero works - testing: - - 2d.transformation.scale code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -49,8 +43,6 @@ - name: 2d.transformation.scale.negative desc: scale() with negative scale factors works - testing: - - 2d.transformation.scale code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -71,8 +63,6 @@ - name: 2d.transformation.scale.large desc: scale() with large scale factors works notes: Not really that large at all, but it hits the limits in Firefox. - testing: - - 2d.transformation.scale code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -84,8 +74,6 @@ - name: 2d.transformation.scale.nonfinite desc: scale() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -98,8 +86,6 @@ - name: 2d.transformation.scale.multiple desc: Multiple scale()s combine - testing: - - 2d.transformation.scale.multiple code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -113,8 +99,6 @@ - name: 2d.transformation.rotate.zero desc: rotate() by 0 does nothing - testing: - - 2d.transformation.rotate code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -126,8 +110,6 @@ - name: 2d.transformation.rotate.radians desc: rotate() uses radians - testing: - - 2d.transformation.rotate.radians code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -139,8 +121,6 @@ - name: 2d.transformation.rotate.direction desc: rotate() is clockwise - testing: - - 2d.transformation.rotate.direction code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -152,8 +132,6 @@ - name: 2d.transformation.rotate.wrap desc: rotate() wraps large positive values correctly - testing: - - 2d.transformation.rotate code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -170,8 +148,6 @@ - name: 2d.transformation.rotate.wrapnegative desc: rotate() wraps large negative values correctly - testing: - - 2d.transformation.rotate code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -185,8 +161,6 @@ - name: 2d.transformation.rotate.nonfinite desc: rotate() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -199,8 +173,6 @@ - name: 2d.transformation.translate.basic desc: translate() works - testing: - - 2d.transformation.translate code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -212,8 +184,6 @@ - name: 2d.transformation.translate.nonfinite desc: translate() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -227,8 +197,6 @@ - name: 2d.transformation.transform.identity desc: transform() with the identity matrix does nothing - testing: - - 2d.transformation.transform code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -240,8 +208,6 @@ - name: 2d.transformation.transform.skewed desc: transform() with skewy matrix transforms correctly - testing: - - 2d.transformation.transform code: | // Create green with a red square ring inside it ctx.fillStyle = '#0f0'; @@ -275,8 +241,6 @@ - name: 2d.transformation.transform.multiply desc: transform() multiplies the CTM - testing: - - 2d.transformation.transform.multiply code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -289,8 +253,6 @@ - name: 2d.transformation.transform.nonfinite desc: transform() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -303,8 +265,6 @@ - name: 2d.transformation.setTransform.skewed - testing: - - 2d.transformation.setTransform code: | // Create green with a red square ring inside it ctx.fillStyle = '#0f0'; @@ -337,8 +297,6 @@ t.done(); - name: 2d.transformation.setTransform.multiple - testing: - - 2d.transformation.setTransform.identity code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); @@ -351,8 +309,6 @@ - name: 2d.transformation.setTransform.nonfinite desc: setTransform() with Infinity/NaN is ignored - testing: - - 2d.nonfinite code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); diff --git a/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-popup-cross-origin.https.sub.tentative.html b/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-popup-cross-origin.https.sub.tentative.html new file mode 100644 index 00000000000..837fa438a3a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-popup-cross-origin.https.sub.tentative.html @@ -0,0 +1,47 @@ + + +Capability Delegation of Fullscreen Requests: Popup Cross-Origin + + + + + + + +

                                                                      + Verifies that element.requestFullscreen() calls from a cross-origin popup without user activation + work if and only if the opener has user activation and it delegates the capability. + + https://wicg.github.io/capability-delegation/spec.html +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-popup-same-origin.https.tentative.html b/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-popup-same-origin.https.tentative.html new file mode 100644 index 00000000000..42bb8703d8d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-popup-same-origin.https.tentative.html @@ -0,0 +1,46 @@ + + +Capability Delegation of Fullscreen Requests: Popup Same-Origin + + + + + + + +
                                                                      + Verifies that element.requestFullscreen() calls from a same-origin popup without user activation + work if and only if the opener has user activation and it delegates the capability. + + https://wicg.github.io/capability-delegation/spec.html +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-subframe-cross-origin.https.sub.tentative.html b/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-subframe-cross-origin.https.sub.tentative.html new file mode 100644 index 00000000000..d61f0dd8c2f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-subframe-cross-origin.https.sub.tentative.html @@ -0,0 +1,49 @@ + + +Capability Delegation of Fullscreen Requests: Subframe Cross-Origin + + + + + + + +
                                                                      + Verifies that element.requestFullscreen() calls from a cross-origin subframe without user + activation work if and only if the top frame has user activation and it delegates the capability. + + https://wicg.github.io/capability-delegation/spec.html + + See wpt/html/user-activation/propagation*.html for frame tree user activation visibility tests. +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-subframe-same-origin.https.tentative.html b/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-subframe-same-origin.https.tentative.html new file mode 100644 index 00000000000..16cbbfd3e97 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/capability-delegation/delegate-fullscreen-request-subframe-same-origin.https.tentative.html @@ -0,0 +1,49 @@ + + +Capability Delegation of Fullscreen Requests: Subframe Same-Origin + + + + + + + +
                                                                      + Verifies that element.requestFullscreen() calls from a same-origin subframe without user + activation work if and only if the top frame has user activation, regardless of whether it + delegates the capability or not. + + https://wicg.github.io/capability-delegation/spec.html + + See wpt/html/user-activation/propagation*.html for frame tree user activation visibility tests. +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/capability-delegation/delegation-consumes-activation.https.tentative.html b/tests/wpt/web-platform-tests/html/capability-delegation/delegation-consumes-activation.https.tentative.html new file mode 100644 index 00000000000..a538f29493e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/capability-delegation/delegation-consumes-activation.https.tentative.html @@ -0,0 +1,55 @@ + + +Capability Delegation: Consumes User Activation + + + + + + + +
                                                                      + Test that capability delegation consumes transient user activation. + + https://wicg.github.io/capability-delegation/spec.html +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/capability-delegation/delegation-sender-checks.tentative.html b/tests/wpt/web-platform-tests/html/capability-delegation/delegation-sender-checks.tentative.html new file mode 100644 index 00000000000..4fa8a2d433d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/capability-delegation/delegation-sender-checks.tentative.html @@ -0,0 +1,60 @@ +!DOCTYPE html> + +Capability Delegation sender checks + + + + + + + +
                                                                      + Verifies that capability delegation related error checks in HTML + postMessage algorithm are enforced correctly. +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/capability-delegation/resources/delegate-fullscreen-request-recipient.html b/tests/wpt/web-platform-tests/html/capability-delegation/resources/delegate-fullscreen-request-recipient.html new file mode 100644 index 00000000000..11daf738d68 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/capability-delegation/resources/delegate-fullscreen-request-recipient.html @@ -0,0 +1,29 @@ + +Capability Delegation of Fullscreen Requests test recipient +Capability Delegation of Fullscreen Requests test recipient body + + diff --git a/tests/wpt/web-platform-tests/html/capability-delegation/resources/utils.js b/tests/wpt/web-platform-tests/html/capability-delegation/resources/utils.js new file mode 100644 index 00000000000..37c0226be73 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/capability-delegation/resources/utils.js @@ -0,0 +1,55 @@ +// Returns a Promise that gets resolved with `event.data` when `window` receives from `source` a +// "message" event whose `event.data.type` matches the string `message_data_type`. +function getMessageData(message_data_type, source) { + return new Promise(resolve => { + function waitAndRemove(e) { + if (e.source != source || !e.data || e.data.type != message_data_type) + return; + window.removeEventListener("message", waitAndRemove); + resolve(e.data); + } + window.addEventListener("message", waitAndRemove); + }); +} + +// A helper that simulates user activation on the current frame if `activate` is true, then posts +// `message` to `frame` with the target `origin` and specified `capability` to delegate. This helper +// awaits and returns a Promise fulfilled with the result message sent in reply from `frame`. +// However, if the `postMessage` call fails, the helper returns a Promise rejected with the +// exception. +async function postCapabilityDelegationMessage(frame, message, origin, capability, activate) { + let result_promise = getMessageData("result", frame); + + if (activate) + await test_driver.bless(); + + let postMessageOptions = {targetOrigin: origin}; + if (capability) + postMessageOptions["delegate"] = capability; + try { + frame.postMessage(message, postMessageOptions); + } catch (exception) { + return Promise.reject(exception); + } + + return await result_promise; +} + +// Returns the name of a capability for which `postMessage` delegation is supported by the user +// agent, or undefined if no such capability is found. +async function findOneCapabilitySupportingDelegation() { + const capabilities = ["fullscreen", "payment"]; + + for (let i = 0; i < capabilities.length; i++) { + try { + await postCapabilityDelegationMessage(window, "any_message", "/", capabilities[i], false); + assert_unreached(); + } catch (exception) { + if (exception.name != "NotSupportedError") + return capabilities[i]; + // Ignore all other exceptions to continue searching through the list. + } + }; + + return undefined; +} diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/anonymous-window.tentative.https.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/anonymous-window.tentative.https.js deleted file mode 100644 index dc63dc262aa..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/anonymous-window.tentative.https.js +++ /dev/null @@ -1,48 +0,0 @@ -// META: script=/common/get-host-info.sub.js -// META: script=/common/dispatcher/dispatcher.js -// META: script=../credentialless/resources/common.js - -const ORIGIN = get_host_info(); - -promise_test_parallel(async t => { - const iframe = document.createElement("iframe"); - document.body.appendChild(iframe); - iframe.contentWindow.modified = true; - iframe.anonymous = true; - iframe.src = ORIGIN + "/blank.html"; - // Wait for navigation finished. - await t.step_wait(() => - iframe.contentWindow.location.href === iframe.src, - "Wait for the navigation to complete"); - assert_true(iframe.anonymous); - assert_equals(undefined, iframe.contentWindow.modified); -}, "Anonymous (false => true) => window not reused."); - -promise_test_parallel(async t => { - const iframe = document.createElement("iframe"); - iframe.anonymous = true; - document.body.appendChild(iframe); - iframe.contentWindow.modified = true; - iframe.anonymous = false; - iframe.src = ORIGIN + "/blank.html"; - // Wait for navigation finished. - await t.step_wait(() => - iframe.contentWindow.location.href === iframe.src, - "Wait for the navigation to complete"); - assert_false(iframe.anonymous); - assert_equals(undefined, iframe.contentWindow.modified); -}, "Anonymous (true => false) => window not reused."); - -promise_test_parallel(async t => { - const iframe = document.createElement("iframe"); - iframe.anonymous = true; - document.body.appendChild(iframe); - iframe.contentWindow.modified = true; - iframe.src = ORIGIN + "/blank.html"; - // Wait for navigation finished. - await t.step_wait(() => - iframe.contentWindow.location.href === iframe.src, - "Wait for the navigation to complete"); - assert_true(iframe.anonymous); - assert_true(iframe.contentWindow.modified); -}, "Anonymous (true => true) => window reused."); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/broadcast-channel.tentative.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/broadcast-channel.tentative.window.js deleted file mode 100644 index 255a7192099..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/broadcast-channel.tentative.window.js +++ /dev/null @@ -1,56 +0,0 @@ -// META: script=/common/get-host-info.sub.js -// META: script=/common/utils.js -// META: script=/common/dispatcher/dispatcher.js -// META: script=../credentialless/resources/common.js -// META: script=./resources/common.js - -// A script listening using a BroadcastChannel. -const listen_script = (key, done, onmessage) => ` - const bc = new BroadcastChannel("${key}"); - bc.onmessage = event => send("${onmessage}", event.data); - send("${done}", "registered"); -`; - -const emit_script = (key, message) => ` - const bc = new BroadcastChannel("${key}"); - bc.postMessage("${message}"); -`; - -promise_test(async test => { - const origin = get_host_info().HTTPS_REMOTE_ORIGIN; - const key_1 = token(); - const key_2 = token(); - - // 2 actors: An anonymous iframe and a normal one. - const iframe_anonymous = newAnonymousIframe(origin); - const iframe_normal = newIframe(origin); - const queue_1 = token(); - const queue_2 = token(); - const unexpected_queue = token(); - - // Listen using the two keys from both sides: - send(iframe_anonymous , listen_script(key_1, queue_1, queue_1)); - send(iframe_anonymous , listen_script(key_2, queue_1, unexpected_queue)); - send(iframe_normal, listen_script(key_2, queue_2, queue_2)); - send(iframe_normal, listen_script(key_1, queue_2, unexpected_queue)); - assert_equals(await receive(queue_1), "registered"); - assert_equals(await receive(queue_1), "registered"); - assert_equals(await receive(queue_2), "registered"); - assert_equals(await receive(queue_2), "registered"); - - // Emit from both sides. It must work, and work without crossing the - // anonymous/non-anonymous border. - receive(unexpected_queue).then(test.unreached_func( - "BroadcastChannel shouldn't cross the anonymous/normal border")); - send(iframe_anonymous , emit_script(key_1, "msg_1")); - send(iframe_normal, emit_script(key_2, "msg_2")); - assert_equals(await receive(queue_1), "msg_1"); - assert_equals(await receive(queue_2), "msg_2"); - - // Wait a bit to let bad things the opportunity to show up. This is done by - // repeating the previous operation. - send(iframe_anonymous , emit_script(key_1, "msg_3")); - send(iframe_normal, emit_script(key_2, "msg_4")); - assert_equals(await receive(queue_1), "msg_3"); - assert_equals(await receive(queue_2), "msg_4"); -}) diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/local-storage.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/local-storage.tentative.https.window.js deleted file mode 100644 index 9ce8b0f0025..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/local-storage.tentative.https.window.js +++ /dev/null @@ -1,52 +0,0 @@ -// META: script=/common/get-host-info.sub.js -// META: script=/common/utils.js -// META: script=/common/dispatcher/dispatcher.js -// META: script=../credentialless/resources/common.js -// META: script=./resources/common.js - -const same_origin = get_host_info().HTTPS_ORIGIN; -const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN; -const local_storage_key = "coep_credentialless_iframe_local_storage"; -const local_storage_same_origin = "same_origin"; -const local_storage_cross_origin = "cross_origin"; - -promise_test_parallel(async test => { - // Add an item in the localStorage on same_origin. - localStorage.setItem(local_storage_key, local_storage_same_origin); - - // Add an item in the localStorage on cross_origin. - { - const w_token = token(); - const w_url = cross_origin + executor_path + `&uuid=${w_token}`; - const w = window.open(w_url); - const reply_token = token(); - send(w_token, ` - localStorage.setItem("${local_storage_key}", - "${local_storage_cross_origin}"); - send("${reply_token}", "done"); - `); - assert_equals(await receive(reply_token), "done"); - w.close(); - } - - promise_test_parallel(async test => { - let iframe = newAnonymousIframe(same_origin); - let reply_token = token(); - send(iframe, ` - let value = localStorage.getItem("${local_storage_key}"); - send("${reply_token}", value); - `) - assert_equals(await receive(reply_token), "") - }, "same_origin anonymous iframe can't access the localStorage"); - - promise_test_parallel(async test => { - let iframe = newAnonymousIframe(cross_origin); - let reply_token = token(); - send(iframe, ` - let value = localStorage.getItem("${local_storage_key}"); - send("${reply_token}", value); - `) - assert_equals(await receive(reply_token), "") - }, "cross_origin anonymous iframe can't access the localStorage"); - -}, "Setup") diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/resources/common.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/resources/common.js deleted file mode 100644 index e11e2307def..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/resources/common.js +++ /dev/null @@ -1,21 +0,0 @@ -// Create an anonymous iframe. The new document will execute any scripts sent -// toward the token it returns. -const newAnonymousIframe = (child_origin) => { - const sub_document_token = token(); - let iframe = document.createElement('iframe'); - iframe.src = child_origin + executor_path + `&uuid=${sub_document_token}`; - iframe.anonymous = true; - document.body.appendChild(iframe); - return sub_document_token; -}; - -// Create a normal iframe. The new document will execute any scripts sent -// toward the token it returns. -const newIframe = (child_origin) => { - const sub_document_token = token(); - let iframe = document.createElement('iframe'); - iframe.src = child_origin + executor_path + `&uuid=${sub_document_token}`; - iframe.anonymous = false - document.body.appendChild(iframe); - return sub_document_token; -}; diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/session-storage.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/session-storage.tentative.https.window.js deleted file mode 100644 index 418e17f0183..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/anonymous-iframe/session-storage.tentative.https.window.js +++ /dev/null @@ -1,52 +0,0 @@ -// META: script=/common/get-host-info.sub.js -// META: script=/common/utils.js -// META: script=/common/dispatcher/dispatcher.js -// META: script=../credentialless/resources/common.js -// META: script=./resources/common.js - -const same_origin = get_host_info().HTTPS_ORIGIN; -const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN; -const session_storage_key = "coep_credentialless_iframe_session_storage"; -const session_storage_same_origin = "same_origin"; -const session_storage_cross_origin = "cross_origin"; - -promise_test_parallel(async test => { - // Add an item in the sessionStorage on same_origin. - sessionStorage.setItem(session_storage_key, session_storage_same_origin); - - // Add an item in the sessionStorage on cross_origin. - { - const w_token = token(); - const w_url = cross_origin + executor_path + `&uuid=${w_token}`; - const w = window.open(w_url); - const reply_token = token(); - send(w_token, ` - sessionStorage.setItem("${session_storage_key}", - "${session_storage_cross_origin}"); - send("${reply_token}", "done"); - `); - assert_equals(await receive(reply_token), "done"); - w.close(); - } - - promise_test_parallel(async test => { - let iframe = newAnonymousIframe(same_origin); - let reply_token = token(); - send(iframe, ` - let value = sessionStorage.getItem("${session_storage_key}"); - send("${reply_token}", value); - `) - assert_equals(await receive(reply_token), "") - }, "same_origin anonymous iframe can't access the sessionStorage"); - - promise_test_parallel(async test => { - let iframe = newAnonymousIframe(cross_origin); - let reply_token = token(); - send(iframe, ` - let value = sessionStorage.getItem("${session_storage_key}"); - send("${reply_token}", value); - `) - assert_equals(await receive(reply_token), "") - }, "cross_origin anonymous iframe can't access the sessionStorage"); - -}, "Setup") diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.tentative.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.tentative.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.tentative.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.tentative.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.tentative.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.tentative.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.https.window.js new file mode 100644 index 00000000000..96bf7b08db8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.https.window.js @@ -0,0 +1,99 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=./resources/common.js + +window.onload = function() { + promise_test_parallel(async test => { + const same_origin = get_host_info().HTTPS_ORIGIN; + const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN; + const cookie_key = "coep_credentialless_script"; + const cookie_same_origin = "same_origin"; + const cookie_cross_origin = "cross_origin"; + + await Promise.all([ + setCookie(same_origin, cookie_key, cookie_same_origin + + cookie_same_site_none), + setCookie(cross_origin, cookie_key, cookie_cross_origin + + cookie_same_site_none), + ]); + + // One window with COEP:none. (control) + const w_control_token = token(); + const w_control_url = same_origin + executor_path + + coep_none + `&uuid=${w_control_token}` + const w_control = window.open(w_control_url); + add_completion_callback(() => w_control.close()); + + // One window with COEP:credentialless. (experiment) + const w_credentialless_token = token(); + const w_credentialless_url = same_origin + executor_path + + coep_credentialless + `&uuid=${w_credentialless_token}`; + const w_credentialless = window.open(w_credentialless_url); + add_completion_callback(() => w_credentialless.close()); + + let scriptTest = function( + description, origin, mode, + expected_cookies_control, + expected_cookies_credentialless) + { + promise_test_parallel(async test => { + const token_1 = token(); + const token_2 = token(); + + send(w_control_token, ` + let script = document.createElement("script"); + script.src = "${showRequestHeaders(origin, token_1)}"; + ${mode}; + document.body.appendChild(script); + `); + send(w_credentialless_token, ` + let script = document.createElement("script"); + script.src = "${showRequestHeaders(origin, token_2)}"; + ${mode}; + document.body.appendChild(script); + `); + + const headers_control = JSON.parse(await receive(token_1)); + const headers_credentialless = JSON.parse(await receive(token_2)); + + assert_equals(parseCookies(headers_control)[cookie_key], + expected_cookies_control, + "coep:none => "); + assert_equals(parseCookies(headers_credentialless)[cookie_key], + expected_cookies_credentialless, + "coep:credentialless => "); + }, `script ${description}`) + }; + + // Same-origin request always contains Cookies: + scriptTest("same-origin + undefined", + same_origin, '', + cookie_same_origin, + cookie_same_origin); + scriptTest("same-origin + anonymous", + same_origin, 'script.crossOrigin="anonymous"', + cookie_same_origin, + cookie_same_origin); + scriptTest("same-origin + use-credentials", + same_origin, 'script.crossOrigin="use-credentials"', + cookie_same_origin, + cookie_same_origin); + + // Cross-origin request contains cookies in the following cases: + // - COEP:credentialless is not set. + // - script.crossOrigin is `use-credentials`. + scriptTest("cross-origin + undefined", + cross_origin, '', + cookie_cross_origin, + undefined); + scriptTest("cross-origin + anonymous", + cross_origin, 'script.crossOrigin="anonymous"', + undefined, + undefined); + scriptTest("cross-origin + use-credentials", + cross_origin, 'script.crossOrigin="use-credentials"', + cookie_cross_origin, + cookie_cross_origin); + }, "Main"); +} diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.tentative.https.window.js deleted file mode 100644 index c3b4f0fa58c..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.tentative.https.window.js +++ /dev/null @@ -1,97 +0,0 @@ -// META: script=/common/get-host-info.sub.js -// META: script=/common/utils.js -// META: script=/common/dispatcher/dispatcher.js -// META: script=./resources/common.js - -promise_test_parallel(async test => { - const same_origin = get_host_info().HTTPS_ORIGIN; - const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN; - const cookie_key = "coep_credentialless_script"; - const cookie_same_origin = "same_origin"; - const cookie_cross_origin = "cross_origin"; - - await Promise.all([ - setCookie(same_origin, cookie_key, cookie_same_origin + - cookie_same_site_none), - setCookie(cross_origin, cookie_key, cookie_cross_origin + - cookie_same_site_none), - ]); - - // One window with COEP:none. (control) - const w_control_token = token(); - const w_control_url = same_origin + executor_path + - coep_none + `&uuid=${w_control_token}` - const w_control = window.open(w_control_url); - add_completion_callback(() => w_control.close()); - - // One window with COEP:credentialless. (experiment) - const w_credentialless_token = token(); - const w_credentialless_url = same_origin + executor_path + - coep_credentialless + `&uuid=${w_credentialless_token}`; - const w_credentialless = window.open(w_credentialless_url); - add_completion_callback(() => w_credentialless.close()); - - let scriptTest = function( - description, origin, mode, - expected_cookies_control, - expected_cookies_credentialless) - { - promise_test_parallel(async test => { - const token_1 = token(); - const token_2 = token(); - - send(w_control_token, ` - let script = document.createElement("script"); - script.src = "${showRequestHeaders(origin, token_1)}"; - ${mode}; - document.body.appendChild(script); - `); - send(w_credentialless_token, ` - let script = document.createElement("script"); - script.src = "${showRequestHeaders(origin, token_2)}"; - ${mode}; - document.body.appendChild(script); - `); - - const headers_control = JSON.parse(await receive(token_1)); - const headers_credentialless = JSON.parse(await receive(token_2)); - - assert_equals(parseCookies(headers_control)[cookie_key], - expected_cookies_control, - "coep:none => "); - assert_equals(parseCookies(headers_credentialless)[cookie_key], - expected_cookies_credentialless, - "coep:credentialless => "); - }, `script ${description}`) - }; - - // Same-origin request always contains Cookies: - scriptTest("same-origin + undefined", - same_origin, '', - cookie_same_origin, - cookie_same_origin); - scriptTest("same-origin + anonymous", - same_origin, 'script.crossOrigin="anonymous"', - cookie_same_origin, - cookie_same_origin); - scriptTest("same-origin + use-credentials", - same_origin, 'script.crossOrigin="use-credentials"', - cookie_same_origin, - cookie_same_origin); - - // Cross-origin request contains cookies in the following cases: - // - COEP:credentialless is not set. - // - script.crossOrigin is `use-credentials`. - scriptTest("cross-origin + undefined", - cross_origin, '', - cookie_cross_origin, - undefined); - scriptTest("cross-origin + anonymous", - cross_origin, 'script.crossOrigin="anonymous"', - undefined, - undefined); - scriptTest("cross-origin + use-credentials", - cross_origin, 'script.crossOrigin="use-credentials"', - cookie_cross_origin, - cookie_cross_origin); -}, "Main"); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.tentative.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.tentative.https.window.js rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.tentative.https.window.js.headers b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js.headers similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.tentative.https.window.js.headers rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-iframe.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-iframe.https.window.js new file mode 100644 index 00000000000..9190303206d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-iframe.https.window.js @@ -0,0 +1,74 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=./credentialless/resources/common.js +// META: script=./resources/common.js + +const cors_coep_headers = coep_require_corp + corp_cross_origin; +const same_origin = get_host_info().HTTPS_ORIGIN; +const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN; + +const newIframe = async ( + test, + parent_origin, + parent_headers, + child_origin, + child_headers +) => { + const [future_child, future_error] = + await createIsolatedFrame(parent_origin, parent_headers); + future_error.then(test.unreached_func('cannot create isolated iframe.')); + + const child = await future_child; + add_completion_callback(() => child.remove()); + + const grand_child_token = token(); + const grand_child = child.contentDocument.createElement('iframe'); + grand_child.src = child_origin + executor_path + child_headers + + `&uuid=${grand_child_token}`; + child.contentDocument.body.appendChild(grand_child); + add_completion_callback(() => grand_child.remove()); + + return grand_child_token; +}; + +const childFrameIsCrossOriginIsolated = async ( + test, + child_origin, + parent_permission_coi +) => { + let parent_headers = cors_coep_headers; + const child_headers = cors_coep_headers; + if (parent_permission_coi !== undefined) { + // Escape right parenthesis in WPT pipe: + parent_permission_coi = parent_permission_coi.replace(')', '\\)'); + parent_headers += `|header(permissions-policy,` + + `cross-origin-isolated=${parent_permission_coi})`; + } + const parent_origin = same_origin; + const iframe = await newIframe( + test, + parent_origin, + parent_headers, + child_origin, + child_headers); + return IsCrossOriginIsolated(iframe); +} + +const generate_iframe_test = async (origin, isolation, expect_coi) => { + promise_test_parallel(async (test) => { + const isCrossOriginIsolated = + await childFrameIsCrossOriginIsolated(test, origin, isolation); + assert_equals(isCrossOriginIsolated, expect_coi) + }, `iframe (origin: ${origin}) cross origin isolated (${isolation}) ` + + `permission test`); +} + +generate_iframe_test(same_origin, undefined, true); +generate_iframe_test(same_origin, '*', true); +generate_iframe_test(same_origin, 'self', true); +generate_iframe_test(same_origin, '()', false); +generate_iframe_test(cross_origin, undefined, false); +generate_iframe_test(cross_origin, '*', false); +generate_iframe_test(cross_origin, 'self', false); +generate_iframe_test(cross_origin, '()', false); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-iframe.https.window.js.headers b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-iframe.https.window.js.headers new file mode 100644 index 00000000000..3b7825def9d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-iframe.https.window.js.headers @@ -0,0 +1,2 @@ +Cross-Origin-Embedder-Policy: require-corp +Cross-Origin-Opener-Policy: same-origin \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-worker.https.window.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-worker.https.window.js new file mode 100644 index 00000000000..d9431cdb504 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-worker.https.window.js @@ -0,0 +1,170 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=./credentialless/resources/common.js +// META: script=./resources/common.js + +const cors_coep_headers = coep_require_corp + corp_cross_origin; +const same_origin = get_host_info().HTTPS_ORIGIN; +const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN; +const dedicatedWorkerPostMessage = ` + self.addEventListener('message', (e) => { + e.data.port.postMessage(self.crossOriginIsolated); + }); +`; + +const postMessageIsWorkerCrossOriginIsolated = async ( + test, + frame, + worker_url +) => { + const worker = new frame.contentWindow.Worker(worker_url); + const mc = new MessageChannel(); + worker.postMessage({port: mc.port2}, [mc.port2]); + worker.onerror = test.unreached_func('cannot create dedicated worker'); + return (await new Promise(r => mc.port1.onmessage = r)).data; +} + +const isDataDedicatedWorkerCrossOriginIsolated = async ( + test, + parent_headers +) => { + const [future_child, future_error] = + await createIsolatedFrame('', parent_headers); + future_error.then(test.unreached_func('cannot create isolated iframe')); + + const child = await future_child; + add_completion_callback(() => child.remove()); + + const worker_url = + `data:application/javascript;base64,${btoa(dedicatedWorkerPostMessage)}`; + return postMessageIsWorkerCrossOriginIsolated(test, child, worker_url); +} + +const isBlobURLDedicatedWorkerCrossOriginIsolated = async( + test, + parent_headers +) => { + const [future_child, future_error] = + await createIsolatedFrame("", parent_headers); + future_error.then(test.unreached_func('cannot create isolated iframe')); + + const child = await future_child; + add_completion_callback(() => child.remove()); + + const blob = + new Blob([dedicatedWorkerPostMessage], {type: 'text/plaintext'}); + const workerURL = URL.createObjectURL(blob); + return postMessageIsWorkerCrossOriginIsolated(test, child, workerURL) +} + +const isHTTPSDedicatedWorkerCrossOriginIsolated = async( + test, + parent_headers +) => { + const [future_child, future_error] = + await createIsolatedFrame("", parent_headers); + future_error.then(test.unreached_func('cannot create isolated iframe')); + + const child = await future_child; + add_completion_callback(() => child.remove()); + + const worker_token = token(); + const workerURL = + `${executor_worker_path}${cors_coep_headers}&uuid=${worker_token}`; + const worker = new child.contentWindow.Worker(workerURL); + return IsCrossOriginIsolated(worker_token); +} + +const sharedWorkerIsCrossOriginIsolated = async( + test, + withCoopCoep +) => { + const [worker, future_error] = + environments.shared_worker(withCoopCoep ? cors_coep_headers : ""); + future_error.then(test.unreached_func('cannot create shared worker.')); + return IsCrossOriginIsolated(worker); +} + +const serviceWorkerIsCrossOriginIsolated = async( + test, + withCoopCoep +) => { + const [worker, future_error] = + environments.service_worker(withCoopCoep ? cors_coep_headers : ""); + future_error.then(test.unreached_func('cannot create service worker.')); + return IsCrossOriginIsolated(worker); +} + +const dedicatedWorkerIsCrossOriginIsolated = async ( + test, + scheme, + parent_permission_coi +) => { + let parent_headers = cors_coep_headers; + if (parent_permission_coi !== undefined) { + // Escape right parenthesis in WPT cors_coep_headers: + parent_permission_coi = parent_permission_coi.replace(')', '\\)'); + parent_headers += `|header(permissions-policy,` + + `cross-origin-isolated=${parent_permission_coi})`; + } + switch (scheme) { + case 'https': + return isHTTPSDedicatedWorkerCrossOriginIsolated(test, parent_headers); + case 'data': + return isDataDedicatedWorkerCrossOriginIsolated(test, parent_headers); + case 'blob': + return isBlobURLDedicatedWorkerCrossOriginIsolated(test, parent_headers); + default: + assert_unreached("wrong scheme for dedicated worker test."); + } +} + +const generate_shared_worker_test = async (withCoopCoep, expected) => { + promise_test_parallel(async (test) => { + const isCrossOriginIsolated = + await sharedWorkerIsCrossOriginIsolated(test, withCoopCoep); + assert_equals(isCrossOriginIsolated, expected) + }, `shared_worker (withCoopCoep: ${withCoopCoep}) ` + + `cross origin isolated permission test`); +} + +const generate_dedicated_worker_test = async ( + scheme, + parent_permission_coi, + expected +) => { + promise_test_parallel(async (test) => { + const isCrossOriginIsolated = + await dedicatedWorkerIsCrossOriginIsolated(test, scheme, parent_permission_coi); + assert_equals(isCrossOriginIsolated, expected) + }, `dedicated_worker (scheme: ${scheme}) cross origin ` + + `isolated (${parent_permission_coi}) permission test`); +} + +const generate_service_worker_test = async (withCoopCoep, expected) => { + promise_test_parallel(async (test) => { + const isCrossOriginIsolated = + await serviceWorkerIsCrossOriginIsolated(test, withCoopCoep); + assert_equals(isCrossOriginIsolated, expected) + }, `service_worker (withCoopCoep: ${withCoopCoep}) ` + + `cross origin isolated permission test`); +} + +generate_shared_worker_test(false, false); +generate_shared_worker_test(true, true); + +generate_dedicated_worker_test('https', undefined, true); +generate_dedicated_worker_test('https', '*', true); +generate_dedicated_worker_test('https', 'self', true); +generate_dedicated_worker_test('https', '()', false); +generate_dedicated_worker_test('data', undefined, false); +generate_dedicated_worker_test('data', '*', false); +generate_dedicated_worker_test('data', 'self', false); +generate_dedicated_worker_test('blob', undefined, true); +generate_dedicated_worker_test('blob', '*', true); +generate_dedicated_worker_test('blob', 'self', true); +generate_dedicated_worker_test('blob', '()', false); + +generate_service_worker_test(false, false); +generate_service_worker_test(true, true); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-worker.https.window.js.headers b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-worker.https.window.js.headers new file mode 100644 index 00000000000..3b7825def9d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission-worker.https.window.js.headers @@ -0,0 +1,2 @@ +Cross-Origin-Embedder-Policy: require-corp +Cross-Origin-Opener-Policy: same-origin \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html deleted file mode 100644 index 661d449e1af..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html +++ /dev/null @@ -1,197 +0,0 @@ - -crossOriginIsolated permission - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html.headers deleted file mode 100644 index 5f8621ef836..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html.headers +++ /dev/null @@ -1,2 +0,0 @@ -Cross-Origin-Embedder-Policy: require-corp -Cross-Origin-Opener-Policy: same-origin diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https.html index cc0c470910b..1ba624181cb 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https.html @@ -3,110 +3,212 @@ + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-credentialless.tentative.https.any.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-credentialless.tentative.https.any.js new file mode 100644 index 00000000000..f4d59955af1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-credentialless.tentative.https.any.js @@ -0,0 +1,2 @@ +// META: global=window,worker,sharedworker-module,serviceworker-module +test(t => assert_equals(crossOriginEmbedderPolicy, "credentialless")); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-credentialless.tentative.https.any.js.headers b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-credentialless.tentative.https.any.js.headers new file mode 100644 index 00000000000..32523a69788 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-credentialless.tentative.https.any.js.headers @@ -0,0 +1 @@ +Cross-Origin-Embedder-Policy: credentialless diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-require-corp.tentative.https.any.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-require-corp.tentative.https.any.js new file mode 100644 index 00000000000..f6019c2457e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-require-corp.tentative.https.any.js @@ -0,0 +1,2 @@ +// META: global=window,worker,sharedworker-module,serviceworker-module +test(t => assert_equals(crossOriginEmbedderPolicy, "require-corp")); diff --git a/tests/wpt/web-platform-tests/web-bundle/subresource-loading/link-coep.https.tentative.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-require-corp.tentative.https.any.js.headers similarity index 100% rename from tests/wpt/web-platform-tests/web-bundle/subresource-loading/link-coep.https.tentative.html.headers rename to tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-require-corp.tentative.https.any.js.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-unsafe-none.tentative.https.any.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-unsafe-none.tentative.https.any.js new file mode 100644 index 00000000000..d2890901ebc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reflection-unsafe-none.tentative.https.any.js @@ -0,0 +1,2 @@ +// META: global=window,worker,sharedworker-module,serviceworker-module +test(t => assert_equals(crossOriginEmbedderPolicy, "unsafe-none")); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html index 56dccfe2e71..39c3de7076f 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html @@ -19,6 +19,7 @@ // - reporting-subresource-corp.https.html // - cache-storage-reporting*.https.html // . + const { REMOTE_ORIGIN } = get_host_info(); const BASE = new URL("resources", location).pathname const FRAME_URL = `resources/reporting-empty-frame.html` + @@ -27,13 +28,15 @@ const FRAME_URL = `resources/reporting-empty-frame.html` + const WORKER_URL = `resources/shared-worker.js` + '?pipe=header(cross-origin-embedder-policy,require-corp;report-to="endpoint")' + `|header(cross-origin-embedder-policy-report-only,require-corp;report-to="report-only-endpoint")`; +const REPORT_UUID = "4d8b6d86-c9a8-47c1-871b-111169a8f79c"; +const REPORT_ONLY_UUID = "5d7c1e33-ef88-43c2-9ca3-c67ff300b8c2"; function wait(ms) { return new Promise(resolve => step_timeout(resolve, ms)); } async function fetchReports(endpoint) { - const res = await fetch(`resources/report.py?endpoint=${endpoint}`, {cache: 'no-store'}); + const res = await fetch(`resources/report.py?key=${endpoint}`, {cache: 'no-store'}); if (res.status == 200) { return await res.json(); } @@ -102,9 +105,9 @@ promise_test(async t => { // header, so it is blocked. iframe.contentWindow.fetch(url, init).catch(() => {}); - await checkCorpReportExistence('endpoint', url, iframe.src, '', 'enforce'); + await checkCorpReportExistence(REPORT_UUID, url, iframe.src, '', 'enforce'); await checkCorpReportExistence( - 'report-only-endpoint', url, iframe.src, '', 'reporting'); + REPORT_ONLY_UUID, url, iframe.src, '', 'reporting'); }, 'subresource CORP'); promise_test(async t => { @@ -131,9 +134,9 @@ promise_test(async t => { attachFrame(url); await checkCorpReportExistence( - 'endpoint', url, iframe.src, 'iframe', 'enforce'); + REPORT_UUID, url, iframe.src, 'iframe', 'enforce'); await checkCorpReportExistence( - 'report-only-endpoint', url, iframe.src, 'iframe', 'reporting'); + REPORT_ONLY_UUID, url, iframe.src, 'iframe', 'reporting'); }, 'navigation CORP'); promise_test(async (t) => { @@ -152,9 +155,9 @@ promise_test(async (t) => { document.body.appendChild(iframe); await checkNavigationReportExistence( - 'endpoint', targetUrl, iframe.src, 'enforce'); + REPORT_UUID, targetUrl, iframe.src, 'enforce'); await checkNavigationReportExistence( - 'report-only-endpoint', targetUrl, iframe.src, 'reporting'); + REPORT_ONLY_UUID, targetUrl, iframe.src, 'reporting'); }, 'COEP violation on nested frame navigation'); promise_test(async (t) => { @@ -174,9 +177,9 @@ promise_test(async (t) => { document.body.appendChild(iframe); await checkNavigationReportExistence( - 'endpoint', targetUrl, iframe.src, 'enforce'); + REPORT_UUID, targetUrl, iframe.src, 'enforce'); await checkNavigationReportExistence( - 'report-only-endpoint', targetUrl, iframe.src, 'reporting'); + REPORT_ONLY_UUID, targetUrl, iframe.src, 'reporting'); }, 'Two COEP headers, split inside report-to value'); @@ -198,9 +201,9 @@ promise_test(async (t) => { worker.port.postMessage(script); await checkCorpReportExistence( - 'endpoint', targetUrl, WORKER_URL, 'iframe', 'enforce'); + REPORT_UUID, targetUrl, WORKER_URL, 'iframe', 'enforce'); await checkCorpReportExistence( - 'report-only-endpoint', targetUrl, WORKER_URL, 'iframe', 'reporting'); + REPORT_ONLY_UUID, targetUrl, WORKER_URL, 'iframe', 'reporting'); }, 'Shared worker fetch'); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html.headers deleted file mode 100644 index cf5938c6764..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -report-to: { "group": "endpoint", "max_age": 10886400, "endpoints": [{ "url": "/html/cross-origin-embedder-policy/resources/report.py?endpoint=endpoint" }] }, { "group": "report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/html/cross-origin-embedder-policy/resources/report.py?endpoint=report-only-endpoint" }] } diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html.sub.headers b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html.sub.headers new file mode 100644 index 00000000000..fe2f651dae1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html.sub.headers @@ -0,0 +1 @@ +Reporting-Endpoints: endpoint="https://{{host}}:{{ports[https][0]}}//html/cross-origin-embedder-policy/resources/report.py?key=4d8b6d86-c9a8-47c1-871b-111169a8f79c", report-only-endpoint="/html/cross-origin-embedder-policy/resources/report.py?key=5d7c1e33-ef88-43c2-9ca3-c67ff300b8c2" diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https.html index f5eaddbdd15..269698bc1ab 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https.html @@ -4,6 +4,7 @@ + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https.html new file mode 100644 index 00000000000..420190aad35 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https.html @@ -0,0 +1,76 @@ + + + Images on a page Cross-Origin-Embedder-Policy: require-corp should load the same from the cache or network, even with revalidation + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-worker-script-revalidation.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-worker-script-revalidation.html new file mode 100644 index 00000000000..74794967fb1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-worker-script-revalidation.html @@ -0,0 +1,25 @@ + +COEP and dedicated worker + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/common.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/common.js new file mode 100644 index 00000000000..8f038a72781 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/common.js @@ -0,0 +1,19 @@ +async function createIsolatedFrame(origin, headers) { + const parent = document.createElement('iframe'); + const parent_loaded = new Promise(r => parent.onload = () => { r(parent); }); + const error = new Promise(r => parent.onerror = r); + parent.src = origin + "/common/blank.html?pipe=" + headers; + parent.anonymous = false; + document.body.appendChild(parent); + return [parent_loaded, error]; +} + +async function IsCrossOriginIsolated(from_token) { + const reply_token = token(); + send(from_token, ` + send("${reply_token}", self.crossOriginIsolated); + `); + const reply = await receive(reply_token); + assert_true(reply.match(/true|false/) != null); + return reply == 'true'; +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/corp-image.py b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/corp-image.py index 29689c45d6a..e507846181d 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/corp-image.py +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/corp-image.py @@ -10,16 +10,20 @@ def main(request, response): response.headers.set(b'Access-Control-Allow-Methods', b'OPTIONS, GET, POST') response.headers.set(b'Access-Control-Allow-Headers', b'Content-Type') - response.headers.set(b"Cache-Control", b"max-age=3600"); # CORS preflight if request.method == u'OPTIONS': return u'' - if b'some-etag' == request.headers.get(b"If-None-Match", None): + if b'true' == request.GET.get(b'revalidate', None): + response.headers.set(b'Cache-Control', b'max-age=0, must-revalidate') + else: + response.headers.set(b'Cache-Control', b'max-age=3600'); + + if b'some-etag' == request.headers.get(b'If-None-Match', None): response.status = 304 return u'' - if request.GET.first(b"corp-cross-origin", default=b""): + if request.GET.get(b'corp-cross-origin', None): response.headers.set(b'Cross-Origin-Resource-Policy', b'cross-origin') response.headers.set(b'Etag', b'some-etag') diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-frame.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-frame.html deleted file mode 100644 index b79fe288b3b..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-frame.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-worker.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-worker.js deleted file mode 100644 index 9f1e3710af6..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-worker.js +++ /dev/null @@ -1,11 +0,0 @@ -// For DedicatedWorker and ServiceWorker -self.addEventListener('message', (e) => { - e.data.port.postMessage(self.crossOriginIsolated); -}); - -// For SharedWorker -self.addEventListener('connect', (e) => { - e.ports[0].onmessage = (ev) => { - ev.data.port.postMessage(self.crossOriginIsolated); - }; -}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/dedicated-worker-supporting-revalidation.py b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/dedicated-worker-supporting-revalidation.py new file mode 100755 index 00000000000..eef86d1c556 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/dedicated-worker-supporting-revalidation.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python + + +def main(request, response): + headers = [] + if request.headers.get(b'if-none-match', None): + status = 304, u"Not Modified" + return status, headers, u"" + else: + headers.append((b"Content-Type", b"text/javascript")) + headers.append((b"Cross-Origin-Embedder-Policy", b"require-corp")) + headers.append((b"Cache-Control", b"private, max-age=0, must-revalidate")) + headers.append((b"ETag", b"abcdef")) + status = 200, u"OK" + return status, headers, u"self.onmessage = (e) => { self.postMessage('LOADED'); };" diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/fetch-and-create-url.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/fetch-and-create-url.html new file mode 100644 index 00000000000..6b0f96221dc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/fetch-and-create-url.html @@ -0,0 +1,91 @@ + + +Fetch and create Blob + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/load-corp-images.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/load-corp-images.html index 1251b8c4707..288610046e6 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/load-corp-images.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/load-corp-images.html @@ -8,22 +8,26 @@ function remote(path) { return new URL(path, REMOTE_ORIGIN); } -const image_path = "/html/cross-origin-embedder-policy/resources/corp-image.py"; +let params = new URLSearchParams(location.search); +let token = params.get('token'); +let revalidate = params.get('revalidate'); + +let image_path = `/html/cross-origin-embedder-policy/resources/corp-image.py?token=${token}&revalidate=${revalidate}`; window.addEventListener("load", async () => { await new Promise(resolve => { let img = document.createElement("img"); img.src = remote(image_path); - img.onload = () => { window.parent.postMessage({loaded: true, src: img.src}, "*"); resolve(); }; - img.onerror = (e) => { window.parent.postMessage({loaded: false, src: img.src}, "*"); resolve(); }; + img.onload = () => { window.parent.postMessage({corp: false, loaded: true}, "*"); resolve(); }; + img.onerror = (e) => { window.parent.postMessage({corp: false, loaded: false}, "*"); resolve(); }; document.body.appendChild(img); }); await new Promise(resolve => { let img = document.createElement("img"); - img.src = remote(image_path + "?corp-cross-origin=1"); - img.onload = () => { window.parent.postMessage({loaded: true, src: img.src}, "*"); resolve(); }; - img.onerror = (e) => { window.parent.postMessage({loaded: false, src: img.src}, "*"); resolve(); }; + img.src = remote(image_path + "&corp-cross-origin=1"); + img.onload = () => { window.parent.postMessage({corp: true, loaded: true}, "*"); resolve(); }; + img.onerror = (e) => { window.parent.postMessage({corp: true, loaded: false}, "*"); resolve(); }; document.body.appendChild(img); }); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/report.py b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/report.py index 2fe40526ea9..100c642d6c7 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/report.py +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/report.py @@ -16,7 +16,7 @@ def main(request, response): } key = 0 if b'endpoint' in request.GET: - key = uuidMap[request.GET[b'endpoint']] + key = uuidMap.get(request.GET[b'endpoint'], 0) if b'key' in request.GET: key = request.GET[b'key'] diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/worker-support.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/worker-support.js new file mode 100644 index 00000000000..860ee6826c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/worker-support.js @@ -0,0 +1,81 @@ +// Configures `url` such that the response carries a `COEP: ${value}` header. +// +// `url` must be a `URL` instance. +function setCoep(url, value) { + url.searchParams + .set("pipe", `header(cross-origin-embedder-policy,${value})`); +} + +// Resolves the given `relativeUrl` relative to the current window's location. +// +// `options` can contain the following keys: +// +// - `coep`: value passed to `setCoep()`, if present. +// - `host`: overrides the host of the returned URL. +// +// Returns a `URL` instance. +function resolveUrl(relativeUrl, options) { + const url = new URL(relativeUrl, window.location); + + if (options !== undefined) { + const { coep, host } = options; + if (coep !== undefined) { + setCoep(url, coep); + } + if (host !== undefined) { + url.host = host; + } + } + + return url; +} + +// Adds an iframe loaded from `url` to the current document, waiting for it to +// load before returning. +// +// The returned iframe is removed from the document at the end of the test `t`. +async function withIframe(t, url) { + const frame = document.createElement("iframe"); + frame.src = url; + + t.add_cleanup(() => frame.remove()); + + const loadedPromise = new Promise(resolve => { + frame.addEventListener('load', resolve, {once: true}); + }); + document.body.append(frame); + await loadedPromise; + + return frame; +} + +// Asynchronously waits for a single "message" event on the given `target`. +function waitForMessage(target) { + return new Promise(resolve => { + target.addEventListener('message', resolve, {once: true}); + }); +} + +// Fetches `url` from a document with COEP `creatorCoep`, then serializes it +// and returns a URL pointing to the fetched body with the given `scheme`. +// +// - `creatorCoep` is passed to `setCoep()`. +// - `scheme` may be one of: "blob", "data" or "filesystem". +// +// The returned URL is valid until the end of the test `t`. +async function createLocalUrl(t, { url, creatorCoep, scheme }) { + const frameUrl = resolveUrl("resources/fetch-and-create-url.html", { + coep: creatorCoep, + }); + frameUrl.searchParams.set("url", url); + frameUrl.searchParams.set("scheme", scheme); + + const messagePromise = waitForMessage(window); + const frame = await withIframe(t, frameUrl); + + const evt = await messagePromise; + const message = evt.data; + assert_equals(message.error, undefined, "url creation error"); + + return message.url; +} diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https.html index 82b5e505af1..2558f2dd0b4 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https.html @@ -5,6 +5,7 @@ +

                                                                      Verify the Cross-Origin Embedder Policy for Shared Workers by performing a cross-domain "fetch" request for a resource that does not specify a COEP. Only @@ -13,51 +14,39 @@ this operation.

                                                                      diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-cross-origin.https.html new file mode 100644 index 00000000000..3f6256bcd28 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-cross-origin.https.html @@ -0,0 +1,44 @@ + +Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/direct-sockets/open-without-user-gesture.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-cross-origin.https.html.headers similarity index 100% rename from tests/wpt/web-platform-tests/direct-sockets/open-without-user-gesture.https.html.headers rename to tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-cross-origin.https.html.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-same-origin.https.html new file mode 100644 index 00000000000..66e7aaf88e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-same-origin.https.html @@ -0,0 +1,44 @@ + +Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/direct-sockets/remotePort-required.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-same-origin.https.html.headers similarity index 100% rename from tests/wpt/web-platform-tests/direct-sockets/remotePort-required.https.html.headers rename to tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-same-origin.https.html.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-same-site.https.html new file mode 100644 index 00000000000..abce6597901 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-same-site.https.html @@ -0,0 +1,44 @@ + +Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-same-site.https.html.headers similarity index 100% rename from tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html.headers rename to tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-with-same-site.https.html.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html deleted file mode 100644 index f6d975564f4..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html +++ /dev/null @@ -1,48 +0,0 @@ - -Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy - - - - - - diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-popup-opener-navigates.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-popup-opener-navigates.https.html new file mode 100644 index 00000000000..a6c63654a94 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-popup-opener-navigates.https.html @@ -0,0 +1,84 @@ + + + Cross-Origin-Opener-Policy: opener is lost because the opener navigates. + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-popup-opener-navigates.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-popup-opener-navigates.https.html.headers new file mode 100644 index 00000000000..46ad58d83bf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-popup-opener-navigates.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-origin diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-failures.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-failures.https.html new file mode 100644 index 00000000000..55b126ff379 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-failures.https.html @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-non-ascii.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-non-ascii.https.html new file mode 100644 index 00000000000..b5f20f88f4f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-non-ascii.https.html @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-non-ascii.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-non-ascii.https.html.headers new file mode 100644 index 00000000000..54e44a7113d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-non-ascii.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same%FForigin diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-repeated.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-repeated.https.html new file mode 100644 index 00000000000..a1430cbf572 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-repeated.https.html @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-repeated.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-repeated.https.html.headers new file mode 100644 index 00000000000..85c58be8a1c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-repeated.https.html.headers @@ -0,0 +1,2 @@ +Cross-Origin-Opener-Policy: same-origin +Cross-Origin-Opener-Policy: same-origin diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-successes.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-successes.https.html new file mode 100644 index 00000000000..8e055669ad8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing-successes.https.html @@ -0,0 +1,44 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing.https.html deleted file mode 100644 index 2839c381b80..00000000000 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing.https.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - -
                                                                      - diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html index 1f522f70e68..21e0875f41b 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html index d7686f23d37..89b0b4934ea 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html index 9a1dc11b417..fb3330365fb 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html index b54ff2f4955..21e0875f41b 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html index b2279094b17..89b0b4934ea 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html index 371aa41d011..fb3330365fb 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html index af14446257b..21e0875f41b 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html index ec463a17706..89b0b4934ea 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html index 80ed35424c9..fb3330365fb 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html index b03949e7a9f..099424790a5 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html @@ -1,26 +1,88 @@ + + + + + - + + + + + -
                                                                      + \ No newline at end of file + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html index 66b0a4afa7f..34699c8d084 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html @@ -1,26 +1,86 @@ + + + + + - + + + + + -
                                                                      + + - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html index d2f2783606e..29fb5cfa2df 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html @@ -1,26 +1,85 @@ + + + + + - + + + + + -
                                                                      + \ No newline at end of file + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html index a38376c7fcf..7d312565842 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html @@ -1,28 +1,88 @@ + + + + + - + + + + + -
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html index 4adb4130418..847f75665be 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html @@ -1,29 +1,87 @@ + + + + + - + + + + + -
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html index ad7c0e263ab..8158b9f4d5a 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html @@ -1,25 +1,87 @@ + + + + + - + + + + + -
                                                                      + \ No newline at end of file + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html index 8113189cc86..74ceeb290d4 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html @@ -1,25 +1,85 @@ + + + + + - + + + + + -
                                                                      + \ No newline at end of file + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/javascript-url.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/javascript-url.https.html index 4060d38b779..8ebb3ccd4a0 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/javascript-url.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/javascript-url.https.html @@ -2,13 +2,18 @@ Cross-Origin-Opener-Policy and a "javascript:" URL popup - - - - - + + + + + + + + + + @@ -26,8 +31,7 @@ observe this, each subtest uses the following procedure.

                                                                      childCOOP)
                                                                    • -

                                                                      Both popup windows inspect state and report back to the test context using -BroadcastChannels.

                                                                      +

                                                                      Both popup windows inspect state and report back to the test.

                                                                           .---- test ----.
                                                                      @@ -50,42 +54,11 @@ BroadcastChannels.

                                                                      diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-meta-http-equiv.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-meta-http-equiv.https.html index e36b5190aaf..157f7aef46a 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-meta-http-equiv.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-meta-http-equiv.https.html @@ -1,19 +1,24 @@ + + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html index acaef785b6e..6568ac3fdbf 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html @@ -8,40 +8,50 @@ + +
                                                                      + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html index b67db7e7066..438e4242848 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html index af7836f77ee..d1b6b60d7c8 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html index f72f8a59be2..bd1e6848c4b 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html index 5798851f686..caf4b173c28 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html index 1af0f7ca3ac..93ba9c9888c 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html index 6b6397c4869..31ac5694913 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html.headers new file mode 100644 index 00000000000..073ce7adfbd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: unsafe-none diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html index 66d720f7e92..18f87048c30 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html index 58ea328f0cf..d1b6b60d7c8 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html.headers new file mode 100644 index 00000000000..073ce7adfbd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: unsafe-none diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html index 6b5bf18bf43..31ac5694913 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html index 6000ec600f8..18f87048c30 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html index 2f9d6f15e23..d1b6b60d7c8 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html @@ -3,24 +3,56 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-with-structured-header.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-with-structured-header.https.html index a1b355f15b5..e337e69cc0c 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-with-structured-header.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-with-structured-header.https.html @@ -3,19 +3,31 @@ + + - -
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/report-to-both_coop-ro.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/report-to-both_coop-ro.https.html index 43da4b79b30..409628c15c3 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/report-to-both_coop-ro.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/report-to-both_coop-ro.https.html @@ -17,11 +17,6 @@ const directory = "/html/cross-origin-opener-policy"; const origin_opener = get_host_info().HTTPS_ORIGIN; const origin_openee = get_host_info().HTTPS_REMOTE_ORIGIN; -function reportToken() { - // Report endpoint name must start with lower case alphabet. - return token().replace(/./, 'a'); -} - let escapeComma = url => url.replace(/,/g, '\\,'); let genericSetup = async function(test) { diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-same-origin-allow-popups.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-same-origin-allow-popups.https.html index 764b4128ff7..b2ff818d562 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-same-origin-allow-popups.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-same-origin-allow-popups.https.html @@ -20,11 +20,6 @@ const cross_origin = { name: "Cross origin" }; -function reportToken() { - // Report endpoint name must start with lower case alphabet. - return token().replace(/./, 'a'); -} - // Tests the redirect interaction with COOP same-origin-allow-popups and // reporting: // 1 - open the opener document on origin same_origin wit COOP diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-unsafe-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-unsafe-none.https.html index ae94d6871a7..bd898563050 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-unsafe-none.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-unsafe-none.https.html @@ -20,11 +20,6 @@ const cross_origin = { name: "Cross origin" }; -function reportToken() { - // Report endpoint name must start with lower case alphabet. - return token().replace(/./, 'a'); -} - // Repeated call receive() to fetch all reports received within 1 second. async function fetchReportsByID(uuid){ let timeStart = new Date().getTime(); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html.sub.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html.sub.headers index 9e864109a1e..50c3045bb64 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html.sub.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html.sub.headers @@ -3,4 +3,4 @@ Cross-Origin-Opener-Policy-Report-Only: same-origin; report-to="coop-report-only Cross-Origin-Embedder-Policy: require-corp Cross-Origin-Embedder-Policy-Report-Only: require-corp Referrer-Policy: origin -report-to: { "group": "coop-report-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=47b45e17-51c5-4691-bdd5-8f343bbfcf42" }] }, { "group": "coop-report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=3eb3ad1d-872e-4ea8-8b40-0e98783a0683" }]} +Reporting-Endpoints: coop-report-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=47b45e17-51c5-4691-bdd5-8f343bbfcf42", coop-report-only-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=3eb3ad1d-872e-4ea8-8b40-0e98783a0683" \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html.sub.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html.sub.headers index 97104b6d6cf..04bc49906b5 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html.sub.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html.sub.headers @@ -1,3 +1,3 @@ Cross-Origin-Opener-Policy-Report-Only: same-origin; report-to="coop-report-only-endpoint" Referrer-Policy: origin -report-to: { "group": "coop-report-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=380ca360-d1ae-4329-b1dd-69cea49cd705" }] }, { "group": "coop-report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=cf9ac91d-6c5d-4489-a420-10be9402ef84" }]} +Reporting-Endpoints: coop-report-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=380ca360-d1ae-4329-b1dd-69cea49cd705", coop-report-only-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=cf9ac91d-6c5d-4489-a420-10be9402ef84" diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-opener.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-opener.https.html index 487a4665d79..893dfa20b86 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-opener.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-opener.https.html @@ -17,7 +17,7 @@ let escapeComma = url => url.replace(/,/g, '\\,'); promise_test(async t => { // The test window. - const this_window_token = token(); + const this_window_token = token(); // The "opener" window. const opener_token = token(); @@ -28,9 +28,9 @@ promise_test(async t => { const openee_url = same_origin + executor_path + `&uuid=${openee_token}`; // The "final" url the opener will navigate to. It has COOP and a reporter. - const final_report_token= token(); + const final_report_token = reportToken(); const final_token = token(); - const final_reportTo = reportToHeaders(final_report_token); + const final_reportTo = reportingEndpointsHeaders(final_report_token); const final_url = same_origin + executor_path + final_reportTo.header + final_reportTo.coopSameOriginHeader +`&uuid=${final_token}`; @@ -41,14 +41,13 @@ promise_test(async t => { // 2. The opener opens a window. send(opener_token, ` openee = window.open('${escapeComma(openee_url)}'); - send("${this_window_token}", "ACK 1"); `); // 3. Ensure the openee loads. send(openee_token, ` - send("${this_window_token}", "ACK 1"); + send("${this_window_token}", "ACK"); `); - assert_equals("ACK 1", await receive(this_window_token)); + assert_equals("ACK", await receive(this_window_token)); // 4. The opener navigates. send(opener_token, ` diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-popup.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-popup.https.html index ae91e7dc04b..b625b285cff 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-popup.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-popup.https.html @@ -21,11 +21,11 @@ promise_test( async t => { const coopToken= token(); await reportingTest(async resolve => { const noCOOPUrl = executor_path + - convertToWPTHeaderPipe(getReportToHeader(location.origin)) + + convertToWPTHeaderPipe(getReportingEndpointsHeader(location.origin)) + `|header(Cross-Origin-Opener-Policy,${encodeURIComponent(`unsafe-none; report-to="${popupReportEndpoint.name}"`)})` + `&uuid=${noCoopToken}`; const coopUrl = executor_path + - convertToWPTHeaderPipe(getReportToHeader(location.origin)) + + convertToWPTHeaderPipe(getReportingEndpointsHeader(location.origin)) + `|header(Cross-Origin-Opener-Policy,${encodeURIComponent(`same-origin; report-to="${redirectReportEndpoint.name}"`)})` + `&uuid=${coopToken}`; diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-popup.https.html.sub.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-popup.https.html.sub.headers index 795e7891cb1..a6a27c2d3e5 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-popup.https.html.sub.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-popup.https.html.sub.headers @@ -1,2 +1,2 @@ Cross-Origin-Opener-Policy: same-origin-allow-popups; report-to="coop-report-endpoint" -report-to: { "group": "coop-report-endpoint", "max_age": 10886400, "endpoints": [{ "url": "https://{{hosts[][www]}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=df3cde15-b00b-4a59-b6e2-498b67a6146e" }] }, { "group": "coop-report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "https://{{hosts[][www]}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=ebf3a415-7a74-42e1-92d1-e600b1bbe22e" }]} +Reporting-Endpoints: coop-report-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=df3cde15-b00b-4a59-b6e2-498b67a6146e", coop-report-only-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=ebf3a415-7a74-42e1-92d1-e600b1bbe22e" diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-allow-popups-report-to.https.html.sub.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-allow-popups-report-to.https.html.sub.headers index 50d1e34efc2..3e213a95a32 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-allow-popups-report-to.https.html.sub.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-allow-popups-report-to.https.html.sub.headers @@ -1,3 +1,3 @@ -report-to: { "group": "coop-report-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=6a739c25-0ec5-4832-b4a3-847281006857" }] }, { "group": "coop-report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=f91209ee-b3a3-474b-b337-d663533745fb" }]} +Reporting-Endpoints: coop-report-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=6a739c25-0ec5-4832-b4a3-847281006857", coop-report-only-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=f91209ee-b3a3-474b-b337-d663533745fb" Cross-Origin-Opener-Policy: same-origin-allow-popups; report-to="coop-report-endpoint" Referrer-Policy: origin diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-coep-report-to.https.html.sub.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-coep-report-to.https.html.sub.headers index a978bd3e007..0f78bdb2d09 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-coep-report-to.https.html.sub.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-coep-report-to.https.html.sub.headers @@ -1,4 +1,4 @@ -report-to: { "group": "coop-report-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=edbbace3-40ca-4640-8d50-dc6e52acc1da" }] }, { "group": "coop-report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=f65cf51a-ca6f-4028-a2c3-0c06183faa13" }]} +Reporting-Endpoints: coop-report-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=edbbace3-40ca-4640-8d50-dc6e52acc1da", coop-report-only-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=f65cf51a-ca6f-4028-a2c3-0c06183faa13" Cross-Origin-Opener-Policy: same-origin; report-to="coop-report-endpoint" Cross-Origin-Embedder-Policy: require-corp Referrer-Policy: origin diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-report-to.https.html.sub.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-report-to.https.html.sub.headers index 200360e3c97..79c851a86c6 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-report-to.https.html.sub.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-report-to.https.html.sub.headers @@ -1,3 +1,3 @@ -report-to: { "group": "coop-report-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=6aad9729-8642-4894-91d9-a4d44707cd4a" }] }, { "group": "coop-report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=69eb1838-6a03-4cda-97b0-c126ffcb9e8a" }]} +Reporting-Endpoints: coop-report-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=6aad9729-8642-4894-91d9-a4d44707cd4a", coop-report-only-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=69eb1838-6a03-4cda-97b0-c126ffcb9e8a" Cross-Origin-Opener-Policy: same-origin; report-to="coop-report-endpoint" Referrer-Policy: no-referrer diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-unsafe-none-report-to.https.html.sub.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-unsafe-none-report-to.https.html.sub.headers index f22298ef94c..f1f18d67080 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-unsafe-none-report-to.https.html.sub.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-unsafe-none-report-to.https.html.sub.headers @@ -1,2 +1,2 @@ -report-to: { "group": "coop-report-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=1f79b0d5-c2a2-4e0b-8e8c-651af2321964" }] }, { "group": "coop-report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=c50700c8-db1e-4224-b06f-4c6a95a5f4be" }]} +Reporting-Endpoints: coop-report-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=1f79b0d5-c2a2-4e0b-8e8c-651af2321964", coop-report-only-endpoint="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=c50700c8-db1e-4224-b06f-4c6a95a5f4be" Cross-Origin-Opener-Policy: unsafe-none; report-to="coop-report-endpoint" diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-redirect-with-same-origin-allow-popups.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-redirect-with-same-origin-allow-popups.https.html index b19cdd5a9c1..cd2f6b67b3d 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-redirect-with-same-origin-allow-popups.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-redirect-with-same-origin-allow-popups.https.html @@ -50,9 +50,9 @@ function redirect_test( popup_origin ) { // The "opener" window. This has COOP same-origin-allow-popups and a // reporter. - const opener_report_token= token(); + const opener_report_token = reportToken(); const opener_token = token(); - const opener_reportTo = reportToHeaders(opener_report_token); + const opener_reportTo = reportingEndpointsHeaders(opener_report_token); const opener_url = same_origin.host + executor_path + opener_reportTo.header + opener_reportTo.coopSameOriginAllowPopupsHeader + `&uuid=${opener_token}`; diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/reporting-common.js b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/reporting-common.js index 48d48aa3884..19f6410cbf8 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/reporting-common.js +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/reporting-common.js @@ -1,6 +1,12 @@ const executor_path = "/common/dispatcher/executor.html?pipe="; const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)'; +// Report endpoint keys must start with a lower case alphabet character. +// https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-header-structure-15#section-4.2.3.3 +const reportToken = () => { + return token().replace(/./, 'a'); +} + const isWPTSubEnabled = "{{GET[pipe]}}".includes("sub"); const getReportEndpointURL = (reportID) => @@ -117,7 +123,7 @@ function isObjectAsExpected(report, expectedReport) { async function checkForExpectedReport(expectedReport) { return new Promise( async (resolve, reject) => { - const polls = 5; + const polls = 20; const waitTime = 200; for (var i=0; i < polls; ++i) { pollReports(expectedReport.endpoint); @@ -180,8 +186,7 @@ function replaceTokensInReceivedReport(str) { return str.replace(/.{8}-.{4}-.{4}-.{4}-.{12}/g, `(uuid)`); } -// Run a test (such as coop_coep_test from ./common.js) then check that all -// expected reports are present. +// Run a test then check that all expected reports are present. async function reportingTest(testFunction, executorToken, expectedReports) { await new Promise(testFunction); expectedReports = Array.from( @@ -239,7 +244,7 @@ function navigationReportingTest(testName, host, coop, coep, coopRo, coepRo, promise_test(async t => { await reportingTest(async resolve => { const openee_headers = [ - getReportToHeader(host.origin), + getReportingEndpointsHeader(host.origin), ...getPolicyHeaders(coop, coep, coopRo, coepRo) ].map(convertToWPTHeaderPipe); const openee_url = host.origin + executor_path + @@ -386,6 +391,10 @@ const reportToHeaders = function(uuid) { // matching 'Reporting-Endpoints', 'Cross-Origin-Opener-Policy' and // 'Cross-Origin-Opener-Policy-Report-Only' headers. const reportingEndpointsHeaders = function (uuid) { + // Report endpoint keys must start with a lower case alphabet: + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-header-structure-15#section-4.2.3.3 + assert_true(uuid.match(/^[a-z].*/) != null, 'Use reportToken() instead.'); + const report_endpoint_url = dispatcher_path + `?uuid=${uuid}`; const reporting_endpoints_header = `${uuid}="${report_endpoint_url}"`; diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js index 42b901f25ed..a005cb8a205 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js @@ -1,3 +1,7 @@ +// To use the functions below, be sure to include the following files in your +// test: +// - "/common/get-host-info.sub.js" to get the different origin values. + const SAME_ORIGIN = {origin: get_host_info().HTTPS_ORIGIN, name: "SAME_ORIGIN"}; const SAME_SITE = {origin: get_host_info().HTTPS_REMOTE_ORIGIN, name: "SAME_SITE"}; const CROSS_ORIGIN = {origin: get_host_info().HTTPS_NOTSAMESITE_ORIGIN, name: "CROSS_ORIGIN"} @@ -38,6 +42,8 @@ function validate_results(callback, test, w, channelName, hasOpener, openerDOMAc } } +// Note: This function is deprecated and should not be used by new tests. +// Instead, use `dispatcher_url_test()`. function url_test(t, url, channelName, hasOpener, openerDOMAccess, callback) { if (callback === undefined) { callback = () => { t.done(); }; @@ -58,58 +64,23 @@ function url_test(t, url, channelName, hasOpener, openerDOMAccess, callback) { }); } -function percent_encode(objectOrString) { - if (typeof objectOrString === "object") { - return objectOrString.percentEncoded; - } - return encodeURIComponent(objectOrString); +// Similar to `url_test()` above except that this uses a dispatcher instead of +// BroadcastChannel (useful in cases where the context we are testing in is a +// third-party iframe that doesn't share a partition with the top-level +// site). +async function dispatcher_url_test(t, url, responseToken, iframeToken, hasOpener, openerDOMAccess, callback) { + + const w = window.open(url, responseToken); + + // Close the popup once the test is complete. + // The browsing context might be closed hence we'll have the iframe trigger + // the closure by sending it a 'close' message. + t.add_cleanup(async () => { + await send(iframeToken, "close"); + }); + + var payload = await receive(responseToken); + payload = JSON.parse(payload); + validate_results(callback, t, w, responseToken, hasOpener, openerDOMAccess, payload); } -function coop_coep_test(t, host, coop, coep, channelName, hasOpener, openerDOMAccess, callback) { - const coopPercentEncoded = percent_encode(coop); - url_test(t, `${host.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=${coopPercentEncoded}&coep=${coep}&channel=${encodeURIComponent(channelName)}`, channelName, hasOpener, openerDOMAccess, callback); -} - -function coop_test(t, host, coop, channelName, hasOpener, callback) { - coop_coep_test(t, host, coop, "", channelName, hasOpener, undefined /* openerDOMAccess */, callback); -} - -function run_coop_tests(documentCOOPValueTitle, testArray) { - for (const test of testArray) { - let coopName = typeof test[1] === "object" ? test[1].percentEncoded : test[1]; - async_test(t => { - coop_test(t, test[0], test[1], - `${documentCOOPValueTitle}_to_${test[0].name}_${coopName.replace(/ /g,"-")}`, - test[2], () => { t.done(); }); - }, `${documentCOOPValueTitle} document opening popup to ${test[0].origin} with COOP: ${format_value(coopName)}`); - } -} - -function run_coop_test_iframe (documentTitle, iframe_origin, popup_origin, popup_coop, expects_opener, expects_name) { - for (const popup_via of ["window_open", "anchor", "form_GET", "form_POST"]) { - const name = iframe_origin.name + "_iframe_opening_" + popup_origin.name + "_popup_via_" + popup_via + "_with_coop_" + popup_coop; - async_test(t => { - const frame = document.createElement("iframe"); - - // Close the popup and remove the frame once the test is - // complete. The browsing context might be closed hence use the - // broadcast channel to trigger the closure. - t.add_cleanup(() => { - frame.remove(); - bc.postMessage("close"); - }); - - const origin = CROSS_ORIGIN.origin; - const path = new URL("resources/iframe-popup.sub.html", window.location).pathname; - const bc = new BroadcastChannel(name); - frame.src = `${iframe_origin.origin}${path}?popup_origin=${popup_origin.origin}&popup_coop=${popup_coop}&channel=${name}&popup_via=${popup_via}`; - - bc.onmessage = t.step_func_done(event => { - const payload = event.data; - assert_equals(payload.opener, expects_opener, 'opener'); - assert_equals(payload.name, expects_name? name:"", 'name'); - }); - document.body.append(frame); - }, `${documentTitle} with ${iframe_origin.name} iframe opening popup via ${popup_via} a ${popup_origin.name} with COOP: ${format_value(popup_coop)}`); - } -} diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py index 22b77c8ebed..d8e3bf0d423 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py @@ -29,11 +29,10 @@ def main(request, response): # Collect relevant params to be visible to response JS params = {} - for key in (b"navHistory", b"avoidBackAndForth", b"navigate", b"channel"): + for key in (b"navHistory", b"avoidBackAndForth", b"navigate", b"channel", b"responseToken", b"iframeToken"): value = requestData.first(key, None) params[key.decode()] = value and value.decode() - # This uses an

                                                                      +

                                                                      Drag green box above to the gray canvas below. Canvas should turn green when you drop green box on it.

                                                                      +

                                                                      + Canvas +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/003.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/canvas/003.xhtml deleted file mode 100644 index a30ec22a564..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/003.xhtml +++ /dev/null @@ -1,35 +0,0 @@ - - - -Drag and drop from iframe: dropping block element onto canvas - - - - -

                                                                      -

                                                                      Drag green box above to the gray canvas below. Canvas should turn green when you drop green box on it.

                                                                      -

                                                                      - Canvas -

                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/005.html b/tests/wpt/web-platform-tests/html/editing/dnd/canvas/005.html new file mode 100644 index 00000000000..33ed630fe06 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/canvas/005.html @@ -0,0 +1,49 @@ + + + + + + + + +Drag and drop to iframe: dropping block element onto canvas + + + + +
                                                                      +

                                                                      Drag green box above to the gray canvas below. Canvas should turn green when you drop green box on it.

                                                                      +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/005.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/canvas/005.xhtml deleted file mode 100644 index 655b4ae74fe..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/005.xhtml +++ /dev/null @@ -1,26 +0,0 @@ - - - -Drag and drop to iframe: dropping block element onto canvas - - - - -
                                                                      -

                                                                      Drag green box above to the gray canvas below. Canvas should turn green when you drop green box on it.

                                                                      -

                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/007.html b/tests/wpt/web-platform-tests/html/editing/dnd/canvas/007.html new file mode 100644 index 00000000000..d0ff4f64bab --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/canvas/007.html @@ -0,0 +1,42 @@ + + + + + + + + +Drag and drop between iframes: dropping block element onto canvas + + + +

                                                                      +

                                                                      Drag green box above to the gray canvas below. Canvas should turn green when you drop green box on it.

                                                                      +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/007.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/canvas/007.xhtml deleted file mode 100644 index 33ff5e611a5..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/007.xhtml +++ /dev/null @@ -1,17 +0,0 @@ - - - -Drag and drop between iframes: dropping block element onto canvas - - - -

                                                                      -

                                                                      Drag green box above to the gray canvas below. Canvas should turn green when you drop green box on it.

                                                                      -

                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/helper-drag-me-green-box.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/canvas/helper-drag-me-green-box.xhtml index c6a8fca4c0f..91a9fa98085 100644 --- a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/helper-drag-me-green-box.xhtml +++ b/tests/wpt/web-platform-tests/html/editing/dnd/canvas/helper-drag-me-green-box.xhtml @@ -7,6 +7,11 @@ div {width:20px; height:20px; background-color:green;} +body + /* Center the div in this iframe since we know the iframe size (it's fixed + * in the parent page to 'width:300px; height:200px;') */ + {margin-top:90px; + margin-left:140px;} + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/001.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/001.html new file mode 100644 index 00000000000..dcc31664e75 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/001.html @@ -0,0 +1,51 @@ + + + + + + + + +Image drag and drop + + + + +

                                                                      PNG circle

                                                                      +

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/001.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/001.xhtml deleted file mode 100644 index ef7d17b59e2..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/001.xhtml +++ /dev/null @@ -1,32 +0,0 @@ - - - -Image drag and drop - - - - -

                                                                      PNG circle

                                                                      -

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/002.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/002.html new file mode 100644 index 00000000000..9756eb26da4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/002.html @@ -0,0 +1,51 @@ + + + + + + + + +dataURL image drag and drop + + + + +

                                                                      PNG circle

                                                                      +

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/002.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/002.xhtml deleted file mode 100644 index a7d79f20ebe..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/002.xhtml +++ /dev/null @@ -1,32 +0,0 @@ - - - -dataURL image drag and drop - - - - -

                                                                      PNG circle

                                                                      -

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/003.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/003.html new file mode 100644 index 00000000000..e2b3ac1a8dc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/003.html @@ -0,0 +1,31 @@ + + +Image drag and drop outside browser window + + + + +

                                                                      PNG circle

                                                                      +

                                                                      Drag circle above outside the window and then back inside and drop in the box below. It should be copied to the box once you drop it there.

                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/003.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/003.xhtml deleted file mode 100644 index a8c623b2bca..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/003.xhtml +++ /dev/null @@ -1,32 +0,0 @@ - - - -Image drag and drop outside browser window - - - - -

                                                                      PNG circle

                                                                      -

                                                                      Drag circle above outside the window and then back inside and drop in the box below. It should be copied to the box once you drop it there.

                                                                      -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/004.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/004.html new file mode 100644 index 00000000000..829608f537c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/004.html @@ -0,0 +1,53 @@ + + + + + + + + +Object with image drag and drop + + + + +

                                                                      PNG image

                                                                      +

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/004.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/004.xhtml deleted file mode 100644 index c7b39432d83..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/004.xhtml +++ /dev/null @@ -1,35 +0,0 @@ - - - -Object with image drag and drop - - - - -

                                                                      PNG image

                                                                      -

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/005.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/005.html new file mode 100644 index 00000000000..c625f44685d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/005.html @@ -0,0 +1,50 @@ + + + + + + + + +JPG image drag and drop + + + + +

                                                                      JPG circle

                                                                      +

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/005.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/005.xhtml deleted file mode 100644 index a57d0857571..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/005.xhtml +++ /dev/null @@ -1,32 +0,0 @@ - - - -JPG image drag and drop - - - - -

                                                                      JPG circle

                                                                      -

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/006.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/006.html new file mode 100644 index 00000000000..4a8b159f65f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/006.html @@ -0,0 +1,53 @@ + + + + + + + + +dataURL image drag and drop from iframe + + + + +

                                                                      +

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/006.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/006.xhtml deleted file mode 100644 index db8285feec9..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/006.xhtml +++ /dev/null @@ -1,34 +0,0 @@ - - - -dataURL image drag and drop from iframe - - - - -

                                                                      -

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/007.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/007.html new file mode 100644 index 00000000000..afacc9205cc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/007.html @@ -0,0 +1,37 @@ + + + + + + + + +dataURL image drag and drop to iframe + + + +

                                                                      PNG circle

                                                                      +

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/007.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/007.xhtml deleted file mode 100644 index 6443363abc2..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/007.xhtml +++ /dev/null @@ -1,17 +0,0 @@ - - - -dataURL image drag and drop to iframe - - - -

                                                                      PNG circle

                                                                      -

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      -

                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/008.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/008.html new file mode 100644 index 00000000000..2747c60ff6b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/008.html @@ -0,0 +1,39 @@ + + + + + + + + +dataURL image drag and drop between iframes + + + +

                                                                      +

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/008.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/008.xhtml deleted file mode 100644 index 09cbdae03cc..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/008.xhtml +++ /dev/null @@ -1,17 +0,0 @@ - - - -dataURL image drag and drop between iframes - - - -

                                                                      -

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      -

                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/009.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/009.html new file mode 100644 index 00000000000..ebb252ab0bc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/009.html @@ -0,0 +1,53 @@ + + + + + + + + +Image drag and drop from iframe + + + + +

                                                                      +

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/009.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/009.xhtml deleted file mode 100644 index 0bb3bce3b51..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/009.xhtml +++ /dev/null @@ -1,34 +0,0 @@ - - - -Image drag and drop from iframe - - - - -

                                                                      -

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/010.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/010.html new file mode 100644 index 00000000000..d41b36c261a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/010.html @@ -0,0 +1,39 @@ + + + + + + + + +Image drag and drop to iframe + + + +

                                                                      PNG circle

                                                                      +

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/010.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/010.xhtml deleted file mode 100644 index 6ff3a3d7ccb..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/010.xhtml +++ /dev/null @@ -1,19 +0,0 @@ - - - -Image drag and drop to iframe - - - -

                                                                      PNG circle

                                                                      -

                                                                      Drag circle above to the box below. It should be copied to the box once you drop it there.

                                                                      -

                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/015.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/015.html new file mode 100644 index 00000000000..ed1aed28bc6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/015.html @@ -0,0 +1,49 @@ + + + + + + + + +Dropping image on horizontal scrollbar of a scrollable block element + + + + +

                                                                      PNG green pixel

                                                                      +

                                                                      Drag little square above and drop it on scrollbar below. You should see word PASS when you drop it on scrollbar.

                                                                      +
                                                                      ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/015.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/015.xhtml deleted file mode 100644 index 9a8edfebd22..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/015.xhtml +++ /dev/null @@ -1,29 +0,0 @@ - - - -Dropping image on horizontal scrollbar of a scrollable block element - - - - -

                                                                      PNG green pixel

                                                                      -

                                                                      Drag little square above and drop it on scrollbar below. You should see word PASS when you drop it on scrollbar.

                                                                      -
                                                                      ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/016.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/016.html new file mode 100644 index 00000000000..1b02bf876be --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/016.html @@ -0,0 +1,48 @@ + + + + + + + + +Dropping image on vertical scrollbar of a scrollable block element + + + + +

                                                                      PNG green pixel

                                                                      +

                                                                      Drag little square above and drop it on scrollbar below. You should see word PASS when you drop it on scrollbar.

                                                                      +
                                                                      → → → → → → → → → → → → → → → → → → → →
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/016.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/016.xhtml deleted file mode 100644 index e44cd525f03..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/016.xhtml +++ /dev/null @@ -1,28 +0,0 @@ - - - -Dropping image on vertical scrollbar of a scrollable block element - - - - -

                                                                      PNG green pixel

                                                                      -

                                                                      Drag little square above and drop it on scrollbar below. You should see word PASS when you drop it on scrollbar.

                                                                      -
                                                                      → → → → → → → → → → → → → → → → → → → →
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/017.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/017.html new file mode 100644 index 00000000000..bbf85f04f83 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/017.html @@ -0,0 +1,50 @@ + + + + + + + + +Dropping image on horizontal page scrollbar + + + + +

                                                                      PNG green pixel

                                                                      +

                                                                      Drag little square above and drop it on vertical scrollbar. Word PASS should appear near scrollbar once you drop it.

                                                                      +
                                                                      ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/017.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/017.xhtml deleted file mode 100644 index f6cdd6006a0..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/017.xhtml +++ /dev/null @@ -1,30 +0,0 @@ - - - -Dropping image on horizontal page scrollbar - - - - -

                                                                      PNG green pixel

                                                                      -

                                                                      Drag little square above and drop it on vertical scrollbar. Word PASS should appear near scrollbar once you drop it.

                                                                      -
                                                                      ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/018.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/018.html new file mode 100644 index 00000000000..3fa61b07d73 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/018.html @@ -0,0 +1,49 @@ + + + + + + + + +Dropping image on vertical page scrollbar + + + + +

                                                                      PNG green pixel

                                                                      +

                                                                      Drag little square above and drop it on vertical scrollbar. Word PASS should appear near scrollbar once you drop it.

                                                                      +
                                                                      → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → →
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/018.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/018.xhtml deleted file mode 100644 index 7f38f9d8388..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/018.xhtml +++ /dev/null @@ -1,29 +0,0 @@ - - - -Dropping image on vertical page scrollbar - - - - -

                                                                      PNG green pixel

                                                                      -

                                                                      Drag little square above and drop it on vertical scrollbar. Word PASS should appear near scrollbar once you drop it.

                                                                      -
                                                                      → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → →
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/021.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/021.html new file mode 100644 index 00000000000..62476c16f54 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/021.html @@ -0,0 +1,49 @@ + + + + + + + + +Dropping image on horizontal iframe scrollbar + + + + +

                                                                      PNG green pixel

                                                                      +

                                                                      Drag little square above and drop it on horizontal scrollbar. Word PASS should appear once you drop it.

                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/021.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/021.xhtml deleted file mode 100644 index 239f9ccdc83..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/021.xhtml +++ /dev/null @@ -1,27 +0,0 @@ - - - -Dropping image on horizontal iframe scrollbar - - - - -

                                                                      PNG green pixel

                                                                      -

                                                                      Drag little square above and drop it on horizontal scrollbar. Word PASS should appear once you drop it.

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/023.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/023.html new file mode 100644 index 00000000000..4765d792f40 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/023.html @@ -0,0 +1,47 @@ + + + + + + + + +Dropping image on horizontal object scrollbar + + + + +

                                                                      PNG green pixel

                                                                      +

                                                                      Drag little square above and drop it on horizontal scrollbar. Word PASS should appear once you drop it.

                                                                      +XHTML document + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/023.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/023.xhtml deleted file mode 100644 index 0d9e3401e62..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/023.xhtml +++ /dev/null @@ -1,27 +0,0 @@ - - - -Dropping image on horizontal object scrollbar - - - - -

                                                                      PNG green pixel

                                                                      -

                                                                      Drag little square above and drop it on horizontal scrollbar. Word PASS should appear once you drop it.

                                                                      -XHTML document - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/024.html b/tests/wpt/web-platform-tests/html/editing/dnd/images/024.html new file mode 100644 index 00000000000..0e695cf1df1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/images/024.html @@ -0,0 +1,47 @@ + + + + + + + + +Dropping image on vertical object scrollbar + + + + +

                                                                      PNG green pixel

                                                                      +

                                                                      Drag little square above and drop it on vertical scrollbar. Word PASS should appear once you drop it.

                                                                      +XHTML document + + + diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/images/024.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/images/024.xhtml deleted file mode 100644 index 0c3a456064d..00000000000 --- a/tests/wpt/web-platform-tests/html/editing/dnd/images/024.xhtml +++ /dev/null @@ -1,27 +0,0 @@ - - - -Dropping image on vertical object scrollbar - - - - -

                                                                      PNG green pixel

                                                                      -

                                                                      Drag little square above and drop it on vertical scrollbar. Word PASS should appear once you drop it.

                                                                      -XHTML document - - diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/resources/test-helper.js b/tests/wpt/web-platform-tests/html/editing/dnd/resources/test-helper.js new file mode 100644 index 00000000000..fa9ec20c62b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/dnd/resources/test-helper.js @@ -0,0 +1,50 @@ +'use strict'; + +// Moves the pointer to the center of `element`. If `element` is contained within an `iframe`, use +// the `iframe` parameter to indicate which `iframe` contains `element`. This function +// returns a promise that will resolve once the pointer has been moved. + +const mouseMoveToCenter = (element, iframe = undefined) => { + let clientRect = element.getBoundingClientRect(); + let centerX = (clientRect.left + clientRect.right) / 2; + let centerY = (clientRect.top + clientRect.bottom) / 2; + if(iframe != undefined) { + clientRect = iframe.getBoundingClientRect(); + centerX += clientRect.left; + centerY += clientRect.top; + } + return new test_driver.Actions() + .pointerMove(Math.ceil(centerX), Math.ceil(centerY)) + .send(); +}; + +// The dragDropTest function can be used for tests which require the drag and drop movement. +// `dragElement` takes the element that needs to be dragged and `dropElement` is the element which +// you want to drop the `dragElement` on. `onDropCallback` is called on the onDrop handler and the +// test will only pass if this functions returns true. Also, if the `dropElement` is inside an +// iframe, use the optional `iframe` parameter to specify an iframe element that contains the +// `dropElement` to ensure that tests with an iframe pass. + +function dragDropTest(dragElement, dropElement, onDropCallBack, testDescription, iframe = undefined) { + promise_test((t) => new Promise(async (resolve, reject) => { + dropElement.addEventListener('drop', t.step_func((event) => { + if (onDropCallBack(event) == true) { + resolve(); + } else { + reject(); + } + })); + try { + await mouseMoveToCenter(dragElement); + await new test_driver.Actions() + .pointerDown() + .send(); + await mouseMoveToCenter(dropElement, iframe); + await new test_driver.Actions() + .pointerUp() + .send(); + } catch (e) { + reject(e); + } + }, testDescription)); +} diff --git a/tests/wpt/web-platform-tests/html/editing/editing-0/autocapitalization/autocapitalize.html b/tests/wpt/web-platform-tests/html/editing/editing-0/autocapitalization/autocapitalize.html index 392ada47bec..49ee14329c1 100644 --- a/tests/wpt/web-platform-tests/html/editing/editing-0/autocapitalization/autocapitalize.html +++ b/tests/wpt/web-platform-tests/html/editing/editing-0/autocapitalization/autocapitalize.html @@ -8,15 +8,15 @@ test(function() { assert_true('autocapitalize' in document.createElement('input')); -}, "Test that the autocapitalize is avaible on HTMLInputElement.") +}, "Test that the autocapitalize is available on HTMLInputElement.") test(function() { assert_true('autocapitalize' in document.createElement('textarea')); -}, "Test that the autocapitalize is avaible on HTMLTextAreaElement.") +}, "Test that the autocapitalize is available on HTMLTextAreaElement.") test(function() { assert_true('autocapitalize' in document.createElement('div')); -}, "Test that the autocapitalize is avaible on div.") +}, "Test that the autocapitalize is available on div.") test(function() { var elements = [ document.createElement('input'), diff --git a/tests/wpt/web-platform-tests/html/editing/editing-0/contenteditable/selection-in-contentEditable-at-turning-designMode-on-off.tentative.html b/tests/wpt/web-platform-tests/html/editing/editing-0/contenteditable/selection-in-contentEditable-at-turning-designMode-on-off.tentative.html index 9502196b845..4ef9d9003d8 100644 --- a/tests/wpt/web-platform-tests/html/editing/editing-0/contenteditable/selection-in-contentEditable-at-turning-designMode-on-off.tentative.html +++ b/tests/wpt/web-platform-tests/html/editing/editing-0/contenteditable/selection-in-contentEditable-at-turning-designMode-on-off.tentative.html @@ -1,6 +1,6 @@ -selection in contenteditable should not be changed when designMode is turned on/of +selection in contenteditable should not be changed when designMode is turned on/off
                                                                      diff --git a/tests/wpt/web-platform-tests/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable.html b/tests/wpt/web-platform-tests/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable.html index 0a12b8c4f51..2e51109fa7a 100644 --- a/tests/wpt/web-platform-tests/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable.html +++ b/tests/wpt/web-platform-tests/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable.html @@ -12,217 +12,47 @@
                                                                      - diff --git a/tests/wpt/web-platform-tests/html/editing/the-hidden-attribute/beforematch-element-fragment-navigation.html b/tests/wpt/web-platform-tests/html/editing/the-hidden-attribute/beforematch-element-fragment-navigation.html new file mode 100644 index 00000000000..812a55f3187 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/the-hidden-attribute/beforematch-element-fragment-navigation.html @@ -0,0 +1,200 @@ + + + + + + + +
                                                                      +
                                                                      +
                                                                      hello
                                                                      +
                                                                      +
                                                                      + +
                                                                      spacer
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/editing/the-hidden-attribute/hidden-idl.html b/tests/wpt/web-platform-tests/html/editing/the-hidden-attribute/hidden-idl.html new file mode 100644 index 00000000000..331b63f93fd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/the-hidden-attribute/hidden-idl.html @@ -0,0 +1,49 @@ + + + + + + +
                                                                      hello
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/editing/the-hidden-attribute/hidden-ua-stylesheet.html b/tests/wpt/web-platform-tests/html/editing/the-hidden-attribute/hidden-ua-stylesheet.html new file mode 100644 index 00000000000..913ecc037cf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/the-hidden-attribute/hidden-ua-stylesheet.html @@ -0,0 +1,65 @@ + + + + + + + +
                                                                      hello world
                                                                      + + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/iframe-domain-failure.sub.html b/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/iframe-domain-failure.sub.html index 9fea7038054..0cdb8b5f595 100644 --- a/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/iframe-domain-failure.sub.html +++ b/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/iframe-domain-failure.sub.html @@ -9,5 +9,6 @@ document.domain = "{{host}}"; parent.postMessage({name: "domain", value: document.domain}, "*"); parent.postMessage( {name: "crossOriginIsolated", value: self.crossOriginIsolated}, "*"); -parent.postMessage(new SharedArrayBuffer(10), "*"); +parent.postMessage( + {name: "hasSharedArrayBuffer", value: Boolean(self.SharedArrayBuffer)}, "*"); diff --git a/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.js b/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.js index 2917013ee25..e317b150cc9 100644 --- a/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.js +++ b/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.js @@ -1,4 +1,4 @@ -// META: script=/IndexedDB/support.js +// META: script=/IndexedDB/resources/support.js "use strict"; async_test(t => { diff --git a/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-failure.https.sub.html b/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-failure.https.sub.html index 2deff50d8dd..6fa196e094e 100644 --- a/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-failure.https.sub.html +++ b/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-failure.https.sub.html @@ -5,9 +5,7 @@ - -
                                                                      - + diff --git a/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/structured-cloning-error-stack-optional.sub.window.js b/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/structured-cloning-error-stack-optional.sub.window.js index 2fb2f7d2660..cbc6a73d518 100644 --- a/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/structured-cloning-error-stack-optional.sub.window.js +++ b/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/structured-cloning-error-stack-optional.sub.window.js @@ -37,6 +37,18 @@ stackTests(() => { }, 'web API-created DOMException'); function stackTests(errorFactory, description) { + test(t => { + const error = errorFactory(); + const originalStack = error.stack; + + if (!originalStack) { + return; + } + + const clonedError = structuredClone(error); + assert_equals(clonedError.stack, originalStack); + }, description + ' (structuredClone())'); + async_test(t => { const error = errorFactory(); const originalStack = error.stack; @@ -54,7 +66,7 @@ function stackTests(errorFactory, description) { worker.postMessage(error); }, description + ' (worker)'); - async_test(t => { + let iframeTest = (t, url) => { const thisTestId = token(); const error = errorFactory(); @@ -77,9 +89,18 @@ function stackTests(errorFactory, description) { iframe.contentWindow.postMessage({ error, testId: thisTestId }, "*"); }); - const crossSiteEchoIFrame = new URL('resources/echo-iframe.html', location.href); - crossSiteEchoIFrame.hostname = '{{hosts[alt][www1]}}'; - iframe.src = crossSiteEchoIFrame; + iframe.src = url; document.body.append(iframe); + } + + async_test(t => { + const crossSiteURL = new URL('resources/echo-iframe.html', location.href); + crossSiteURL.hostname = '{{hosts[alt][www1]}}'; + iframeTest(t, crossSiteURL); }, description + ' (cross-site iframe)'); + + async_test(t => { + const sameOriginURL = new URL('resources/echo-iframe.html', location.href); + iframeTest(t, sameOriginURL); + }, description + ' (same-origin iframe)') } diff --git a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/location.sub.html b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/location.sub.html index a5c131e2bec..1403cf18cd1 100644 --- a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/location.sub.html +++ b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/location.sub.html @@ -38,7 +38,8 @@ async_test(t => { frame.onload = t.step_func(() => { frame.contentWindow.location.search = "\u00FF"; frame.onload = t.step_func_done(() => { - assert_equals(frame.contentWindow.location.search, expected(actualEncoding)); + // location.search always uses UTF-8 + assert_equals(frame.contentWindow.location.search, expected("UTF-8")); }); }); }, "location.search"); diff --git a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/lone-surrogates.sub.html b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/lone-surrogates.sub.html new file mode 100644 index 00000000000..e47ab0f3106 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/lone-surrogates.sub.html @@ -0,0 +1,30 @@ + + + + + + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/infrastructure/urls/terminology-0/document-base-url-about-srcdoc.https.window.js b/tests/wpt/web-platform-tests/html/infrastructure/urls/terminology-0/document-base-url-about-srcdoc.https.window.js new file mode 100644 index 00000000000..b8fad36ccf8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/infrastructure/urls/terminology-0/document-base-url-about-srcdoc.https.window.js @@ -0,0 +1,27 @@ +// META: script=/common/get-host-info.sub.js + +// Load about:srcdoc in a sandboxed iframe. Check the document.baseURI is +// correct. +const runTest = (description, iframe_sandbox) => { + promise_test(async test => { + const iframe = document.createElement("iframe"); + iframe.sandbox = iframe_sandbox; + iframe.srcdoc = ` + + + + + + + +
                                                                      + item1 +
                                                                      +
                                                                      + item2 + item3 +
                                                                      +
                                                                      + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-on-focusgroup-root.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-on-focusgroup-root.html new file mode 100644 index 00000000000..3dd9cf2da57 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-on-focusgroup-root.html @@ -0,0 +1,30 @@ + + +HTML Test: focusgroup - Focus does not move when initially set on the focusgroup root. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-on-non-focusgroup-item.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-on-non-focusgroup-item.html new file mode 100644 index 00000000000..0ec78276646 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-on-non-focusgroup-item.html @@ -0,0 +1,33 @@ + + +HTML Test: focusgroup - Focus does not move when initially set a focusable element that isn't a focusgroup item. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + nonitem1 +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-only-one-item-and-wraps.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-only-one-item-and-wraps.html new file mode 100644 index 00000000000..475acdc7f1c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-only-one-item-and-wraps.html @@ -0,0 +1,29 @@ + + +HTML Test: focusgroup - Focus does not move when there is only one item, even though it wraps. + + + + + + + + + +
                                                                      + item1 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-only-one-item.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-only-one-item.html new file mode 100644 index 00000000000..f046769459a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-only-one-item.html @@ -0,0 +1,29 @@ + + +HTML Test: focusgroup - Focus does not move when there is only one item. + + + + + + + + + +
                                                                      + item1 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-outside-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-outside-focusgroup.html new file mode 100644 index 00000000000..78ee0dadeb0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-move-when-outside-focusgroup.html @@ -0,0 +1,31 @@ + + +HTML Test: focusgroup - Focus does not move when initially set on an element not included in the focusgroup. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      +out + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-wrap-when-not-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-wrap-when-not-supported.html new file mode 100644 index 00000000000..742daedfef0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/does-not-wrap-when-not-supported.html @@ -0,0 +1,30 @@ + + +HTML Test: focusgroup - Focus does not wrap when 'wrap' not specified. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/ascends-to-parent-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/ascends-to-parent-focusgroup.html new file mode 100644 index 00000000000..00ef3db90c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/ascends-to-parent-focusgroup.html @@ -0,0 +1,36 @@ + + +HTML Test: focusgroup - Focus ascends to parent focusgroup successfully. + + + + + + + + + +
                                                                      + item1 +
                                                                      +
                                                                      +
                                                                      + item3 + item4 +
                                                                      +
                                                                      +
                                                                      + item5 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/does-not-ascend-out-of-non-extending-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/does-not-ascend-out-of-non-extending-focusgroup.html new file mode 100644 index 00000000000..b00958719d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/does-not-ascend-out-of-non-extending-focusgroup.html @@ -0,0 +1,30 @@ + + +HTML Test: focusgroup - Focus does not ascend out of current focusgroup if it does not extend the parent focusgroup. + + + + + + + + + +
                                                                        +
                                                                      • +
                                                                          +
                                                                        • item2
                                                                        • +
                                                                        +
                                                                      • +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/does-not-move-when-axis-not-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/does-not-move-when-axis-not-supported.html new file mode 100644 index 00000000000..e671a258443 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/does-not-move-when-axis-not-supported.html @@ -0,0 +1,27 @@ + + +HTML Test: focusgroup - Focus does not move to previous focusgroup item when the axis of the arrow key pressed isn't supported. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/does-not-wrap-in-orthogonal-axis.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/does-not-wrap-in-orthogonal-axis.html new file mode 100644 index 00000000000..de09fa813c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/does-not-wrap-in-orthogonal-axis.html @@ -0,0 +1,28 @@ + + +HTML Test: focusgroup - Focus does not wrap in the arrow key pressed orthogonal axis. + + + + + + + + + +
                                                                      + item1 + item2 + item3 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/moves-when-only-current-axis-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/moves-when-only-current-axis-supported.html new file mode 100644 index 00000000000..12f79348669 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/moves-when-only-current-axis-supported.html @@ -0,0 +1,28 @@ + + +HTML Test: focusgroup - Focus moves to previous focusgroup item when only the axis of the arrow key pressed is supported. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/skips-focusgroup-that-extends-in-orthogonal-axis-complex-case.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/skips-focusgroup-that-extends-in-orthogonal-axis-complex-case.html new file mode 100644 index 00000000000..2fadddac272 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/skips-focusgroup-that-extends-in-orthogonal-axis-complex-case.html @@ -0,0 +1,38 @@ + + +HTML Test: focusgroup - Focus moves to previous item, skipping the focusgroup that extends in the orthogonal axis (complex case). + + + + + + + + + +
                                                                      + item1 +
                                                                      +
                                                                      +
                                                                      +
                                                                      + item3 + item4 +
                                                                      +
                                                                      +
                                                                      +
                                                                      + item5 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/skips-focusgroup-that-extends-in-orthogonal-axis.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/skips-focusgroup-that-extends-in-orthogonal-axis.html new file mode 100644 index 00000000000..44dace84614 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/skips-focusgroup-that-extends-in-orthogonal-axis.html @@ -0,0 +1,34 @@ + + +HTML Test: focusgroup - Focus moves to previous item, skipping the focusgroup that extends in the orthogonal axis. + + + + + + + + + +
                                                                      + item1 +
                                                                      +
                                                                      + item2 + item3 +
                                                                      +
                                                                      + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/wraps-in-axis.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/wraps-in-axis.html new file mode 100644 index 00000000000..956d3f64063 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/horizontal/wraps-in-axis.html @@ -0,0 +1,29 @@ + + +HTML Test: focusgroup - Focus wraps in the arrow key pressed axis. + + + + + + + + + +
                                                                      + item1 + item2 + item3 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/moves-to-previous-item-and-skips-focusable-item.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/moves-to-previous-item-and-skips-focusable-item.html new file mode 100644 index 00000000000..9bab38a24da --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/moves-to-previous-item-and-skips-focusable-item.html @@ -0,0 +1,32 @@ + + +HTML Test: focusgroup - Focus moves to previous item and skips non-focusable elements. + + + + + + + + + +
                                                                      + item1 + item2 + item3 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/moves-to-previous-item.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/moves-to-previous-item.html new file mode 100644 index 00000000000..228a4aad63f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/moves-to-previous-item.html @@ -0,0 +1,31 @@ + + +HTML Test: focusgroup - Focus moves to previous focusgroup item. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-empty-wrapping-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-empty-wrapping-focusgroup.html new file mode 100644 index 00000000000..fb0b66e30e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-empty-wrapping-focusgroup.html @@ -0,0 +1,37 @@ + + +HTML Test: focusgroup - Focus moves to previous item, skipping over an empty extending focusgroup that wraps on itself. + + + + + + + + + +
                                                                      + item1 +
                                                                      +
                                                                      + item2 + item3 +
                                                                      +
                                                                      + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-non-focusgroup-subtree.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-non-focusgroup-subtree.html new file mode 100644 index 00000000000..140950202b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-non-focusgroup-subtree.html @@ -0,0 +1,35 @@ + + +HTML Test: focusgroup - Focus moves to previous item, skipping over a subtree that isn't an extending focusgroup. + + + + + + + + + +
                                                                      + item1 +
                                                                      + item2 + item3 +
                                                                      + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-root-focusgroup-complex-case.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-root-focusgroup-complex-case.html new file mode 100644 index 00000000000..79731e7b2ac --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-root-focusgroup-complex-case.html @@ -0,0 +1,41 @@ + + +HTML Test: focusgroup - Focus moves to previous item and skips focusgroup root subtree (complex case). + + + + + + + + + +
                                                                      + item1 +
                                                                      +
                                                                      +
                                                                      +
                                                                      + item3 + item4 +
                                                                      +
                                                                      +
                                                                      +
                                                                      + item5 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-root-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-root-focusgroup.html new file mode 100644 index 00000000000..c40ce02b5d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/skips-root-focusgroup.html @@ -0,0 +1,37 @@ + + +HTML Test: focusgroup - Focus moves to previous item, skipping over a subtree that is a root focusgroup (unrelated to the one we're in). + + + + + + + + + +
                                                                      + item1 +
                                                                      +
                                                                      + item2 + item3 +
                                                                      +
                                                                      + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/ascends-to-parent-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/ascends-to-parent-focusgroup.html new file mode 100644 index 00000000000..b95f2c527bc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/ascends-to-parent-focusgroup.html @@ -0,0 +1,36 @@ + + +HTML Test: focusgroup - Focus ascends to parent focusgroup successfully. + + + + + + + + + +
                                                                      + item1 +
                                                                      +
                                                                      +
                                                                      + item3 + item4 +
                                                                      +
                                                                      +
                                                                      + item5 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/does-not-ascend-out-of-non-extending-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/does-not-ascend-out-of-non-extending-focusgroup.html new file mode 100644 index 00000000000..08dc4666033 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/does-not-ascend-out-of-non-extending-focusgroup.html @@ -0,0 +1,30 @@ + + +HTML Test: focusgroup - Focus does not ascend out of current focusgroup if it does not extend the parent focusgroup. + + + + + + + + + +
                                                                        +
                                                                      • +
                                                                          +
                                                                        • item2
                                                                        • +
                                                                        +
                                                                      • +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/does-not-move-when-axis-not-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/does-not-move-when-axis-not-supported.html new file mode 100644 index 00000000000..0cf6ad3be23 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/does-not-move-when-axis-not-supported.html @@ -0,0 +1,27 @@ + + +HTML Test: focusgroup - Focus does not move to previous focusgroup item when the axis of the arrow key pressed isn't supported. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/does-not-wrap-in-orthogonal-axis.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/does-not-wrap-in-orthogonal-axis.html new file mode 100644 index 00000000000..0ec4f022476 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/does-not-wrap-in-orthogonal-axis.html @@ -0,0 +1,28 @@ + + +HTML Test: focusgroup - Focus does not wrap in the arrow key pressed orthogonal axis. + + + + + + + + + +
                                                                      + item1 + item2 + item3 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/moves-when-only-current-axis-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/moves-when-only-current-axis-supported.html new file mode 100644 index 00000000000..ad46be76b29 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/moves-when-only-current-axis-supported.html @@ -0,0 +1,28 @@ + + +HTML Test: focusgroup - Focus moves to previous focusgroup item when only the axis of the arrow key pressed is supported. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/skips-focusgroup-that-extends-in-orthogonal-axis-complex-case.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/skips-focusgroup-that-extends-in-orthogonal-axis-complex-case.html new file mode 100644 index 00000000000..86ea79122cf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/skips-focusgroup-that-extends-in-orthogonal-axis-complex-case.html @@ -0,0 +1,38 @@ + + +HTML Test: focusgroup - Focus moves to previous item, skipping the focusgroup that extends in the orthogonal axis (complex case). + + + + + + + + + +
                                                                      + item1 +
                                                                      +
                                                                      +
                                                                      +
                                                                      + item3 + item4 +
                                                                      +
                                                                      +
                                                                      +
                                                                      + item5 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/skips-focusgroup-that-extends-in-orthogonal-axis.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/skips-focusgroup-that-extends-in-orthogonal-axis.html new file mode 100644 index 00000000000..960b8604b0d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/skips-focusgroup-that-extends-in-orthogonal-axis.html @@ -0,0 +1,34 @@ + + +HTML Test: focusgroup - Focus moves to previous item, skipping the focusgroup that extends in the orthogonal axis. + + + + + + + + + +
                                                                      + item1 +
                                                                      +
                                                                      + item2 + item3 +
                                                                      +
                                                                      + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/wraps-in-axis.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/wraps-in-axis.html new file mode 100644 index 00000000000..fdccee9742f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/vertical/wraps-in-axis.html @@ -0,0 +1,29 @@ + + +HTML Test: focusgroup - Focus wraps in the arrow key pressed axis. + + + + + + + + + +
                                                                      + item1 + item2 + item3 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/wraps-in-extending-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/wraps-in-extending-focusgroup.html new file mode 100644 index 00000000000..6727d93f75f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/wraps-in-extending-focusgroup.html @@ -0,0 +1,43 @@ + + +HTML Test: focusgroup - Focus wraps from first to last element when 'wrap' is specified (jumping into extending focusgroup). + + + + + + + + + +
                                                                      +
                                                                      + item1 +
                                                                      + item2 + item3 +
                                                                      +
                                                                      + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/wraps-successfully-complex-case.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/wraps-successfully-complex-case.html new file mode 100644 index 00000000000..11ebea349d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/wraps-successfully-complex-case.html @@ -0,0 +1,40 @@ + + +HTML Test: focusgroup - Focus wraps from first to last focusgroup item, even though there are non items in the way. + + + + + + + + + +
                                                                      +
                                                                      + nonitem1 + nonitem2 +
                                                                      + item1 + item2 + item3 +
                                                                      + nonitem3 + nonitem4 +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/wraps-successfully.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/wraps-successfully.html new file mode 100644 index 00000000000..19df794e19d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/backward-navigation/wraps-successfully.html @@ -0,0 +1,32 @@ + + +HTML Test: focusgroup - Focus wraps from first to last element when 'wrap' is specified. + + + + + + + + + +
                                                                      + item1 + item2 + item3 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-on-focusgroup-root.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-on-focusgroup-root.html new file mode 100644 index 00000000000..30c70ad3b3e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-on-focusgroup-root.html @@ -0,0 +1,30 @@ + + +HTML Test: focusgroup - Focus does not move when initially set on the focusgroup root. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-on-non-item.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-on-non-item.html new file mode 100644 index 00000000000..3afcd184c18 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-on-non-item.html @@ -0,0 +1,33 @@ + + +HTML Test: focusgroup - Focus does not move when initially set a focusable element that isn't a focusgroup item. + + + + + + + + + +
                                                                      +
                                                                      + nonitem1 +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-only-one-item-and-wraps.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-only-one-item-and-wraps.html new file mode 100644 index 00000000000..20cc5eb57da --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-only-one-item-and-wraps.html @@ -0,0 +1,29 @@ + + +HTML Test: focusgroup - Focus does not move when there is only one item, even though it wraps. + + + + + + + + + +
                                                                      + item1 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-only-one-item.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-only-one-item.html new file mode 100644 index 00000000000..0178494d873 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-only-one-item.html @@ -0,0 +1,29 @@ + + +HTML Test: focusgroup - Focus does not move when there is only one item. + + + + + + + + + +
                                                                      + item1 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-outside-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-outside-focusgroup.html new file mode 100644 index 00000000000..1c35805f804 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-move-when-outside-focusgroup.html @@ -0,0 +1,31 @@ + + +HTML Test: focusgroup - Focus does not move when initially set on an element not included in the focusgroup. + + + + + + + + + +out +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-wrap-in-focusgroup-with-no-items.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-wrap-in-focusgroup-with-no-items.html new file mode 100644 index 00000000000..602feed0013 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-wrap-in-focusgroup-with-no-items.html @@ -0,0 +1,35 @@ + + +HTML Test: focusgroup - Focus does not wrap in wrapping extending focusgroup that doesn't have focusgroup items. + + + + + + + + + +
                                                                      + item1 +
                                                                      + item2 + item3 +
                                                                      + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-wrap-when-not-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-wrap-when-not-supported.html new file mode 100644 index 00000000000..550a4ba8a19 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/does-not-wrap-when-not-supported.html @@ -0,0 +1,30 @@ + + +HTML Test: focusgroup - Focus does not wrap when not supported. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/descends-in-horizontal-inner-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/descends-in-horizontal-inner-focusgroup.html new file mode 100644 index 00000000000..3d0d7f0fa5d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/descends-in-horizontal-inner-focusgroup.html @@ -0,0 +1,30 @@ + + +HTML Test: focusgroup - Focus descends from vertical focusgroup into horizontal focusgroup. + + + + + + + + + +
                                                                      + item1 +
                                                                      + item2 +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/does-not-move-when-axis-not-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/does-not-move-when-axis-not-supported.html new file mode 100644 index 00000000000..ebf7238c543 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/does-not-move-when-axis-not-supported.html @@ -0,0 +1,27 @@ + + +HTML Test: focusgroup - Focus does not move to next focusgroup item when the axis of the arrow key pressed isn't supported. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/does-not-wrap-even-when-other-axis-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/does-not-wrap-even-when-other-axis-supported.html new file mode 100644 index 00000000000..19535e1df92 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/does-not-wrap-even-when-other-axis-supported.html @@ -0,0 +1,31 @@ + + +HTML Test: focusgroup - Does not wrap when the arrow keypress is supported but the focusgroup only wraps in the other axis. + + + + + + + + + +
                                                                      + item1 +
                                                                      + + item3 + item4 +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/moves-when-only-current-axis-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/moves-when-only-current-axis-supported.html new file mode 100644 index 00000000000..9ae9892c1da --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/moves-when-only-current-axis-supported.html @@ -0,0 +1,28 @@ + + +HTML Test: focusgroup - Focus moves to next focusgroup item when only the axis of the arrow key pressed is supported. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/skips-focusgroup-that-extends-in-orthogonal-axis.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/skips-focusgroup-that-extends-in-orthogonal-axis.html new file mode 100644 index 00000000000..05f82688958 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/skips-focusgroup-that-extends-in-orthogonal-axis.html @@ -0,0 +1,30 @@ + + +HTML Test: focusgroup - Focus moves to next item, skipping the focusgroup that extends in the orthogonal axis. + + + + + + + + + +
                                                                      +
                                                                      + item2 +
                                                                      + item3 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/wraps-and-skips-orthogonal-inner-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/wraps-and-skips-orthogonal-inner-focusgroup.html new file mode 100644 index 00000000000..af79ca24c62 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/wraps-and-skips-orthogonal-inner-focusgroup.html @@ -0,0 +1,32 @@ + + +HTML Test: focusgroup - Focus wraps and skips the orthogonal inner focusgroup. + + + + + + + + + +
                                                                      +
                                                                      + item1 + item2 +
                                                                      + item3 + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/wraps-in-appropriate-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/wraps-in-appropriate-focusgroup.html new file mode 100644 index 00000000000..80290c99185 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/wraps-in-appropriate-focusgroup.html @@ -0,0 +1,35 @@ + + +HTML Test: focusgroup - Focus wraps in the appropriate focusgroup. + + + + + + + + + +
                                                                      +
                                                                      + item1 +
                                                                      + + item3 + item4 +
                                                                      +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/wraps-in-inner-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/wraps-in-inner-focusgroup.html new file mode 100644 index 00000000000..ab33842340b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/horizontal/wraps-in-inner-focusgroup.html @@ -0,0 +1,33 @@ + + +HTML Test: focusgroup - Focus wraps in the inner focusgroup only since the outer focusgroup only wraps in the other axis. + + + + + + + + + +
                                                                      + item1 +
                                                                      + + item3 + item4 +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-inside-extending-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-inside-extending-focusgroup.html new file mode 100644 index 00000000000..bea7b959c54 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-inside-extending-focusgroup.html @@ -0,0 +1,34 @@ + + +HTML Test: focusgroup - Focus moves to next item inside an extending focusgroup. + + + + + + + + + +
                                                                      +
                                                                      + item2 + item3 +
                                                                      + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item-and-skips-non-focusable.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item-and-skips-non-focusable.html new file mode 100644 index 00000000000..a5d6e306eda --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item-and-skips-non-focusable.html @@ -0,0 +1,32 @@ + + +HTML Test: focusgroup - Focus moves to next item and skips non-focusable elements. + + + + + + + + + +
                                                                      + item1 + item2 + item3 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item-outside-extending-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item-outside-extending-focusgroup.html new file mode 100644 index 00000000000..f5a74ced5f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item-outside-extending-focusgroup.html @@ -0,0 +1,34 @@ + + +HTML Test: focusgroup - Focus moves to next item outside the extending focusgroup. + + + + + + + + + +
                                                                      +
                                                                      + item2 + item3 +
                                                                      + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item-within-descendants.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item-within-descendants.html new file mode 100644 index 00000000000..97355ec2da8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item-within-descendants.html @@ -0,0 +1,37 @@ + + +HTML Test: focusgroup - Focus moves to next item within its descendants. + + + + + + + + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      + item2 +
                                                                      +
                                                                      +
                                                                      + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item.html new file mode 100644 index 00000000000..747805d7b57 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/moves-to-next-item.html @@ -0,0 +1,31 @@ + + +HTML Test: focusgroup - Focus moves to next focusgroup item. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/descends-in-vertical-inner-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/descends-in-vertical-inner-focusgroup.html new file mode 100644 index 00000000000..4f6f8e94597 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/descends-in-vertical-inner-focusgroup.html @@ -0,0 +1,30 @@ + + +HTML Test: focusgroup - Focus descends from horizontal focusgroup into vertical focusgroup. + + + + + + + + + +
                                                                      + item1 +
                                                                      + item2 +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/does-not-move-when-axis-not-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/does-not-move-when-axis-not-supported.html new file mode 100644 index 00000000000..794f079418d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/does-not-move-when-axis-not-supported.html @@ -0,0 +1,27 @@ + + +HTML Test: focusgroup - Focus does not move to next focusgroup item when the axis of the arrow key pressed isn't supported. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/does-not-wrap-even-when-other-axis-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/does-not-wrap-even-when-other-axis-supported.html new file mode 100644 index 00000000000..f7b697e5c02 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/does-not-wrap-even-when-other-axis-supported.html @@ -0,0 +1,31 @@ + + +HTML Test: focusgroup - Does not wrap when the arrow keypress is supported but the focusgroup only wraps in the other axis. + + + + + + + + + +
                                                                      + item1 +
                                                                      + + item3 + item4 +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/moves-when-only-current-axis-supported.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/moves-when-only-current-axis-supported.html new file mode 100644 index 00000000000..b5b97cca674 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/moves-when-only-current-axis-supported.html @@ -0,0 +1,28 @@ + + +HTML Test: focusgroup - Focus moves to next focusgroup item when only the axis of the arrow key pressed is supported. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/skips-focusgroup-that-extends-in-orthogonal-axis.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/skips-focusgroup-that-extends-in-orthogonal-axis.html new file mode 100644 index 00000000000..4fe753126bf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/skips-focusgroup-that-extends-in-orthogonal-axis.html @@ -0,0 +1,30 @@ + + +HTML Test: focusgroup - Focus moves to next item, skipping the focusgroup that extends in the orthogonal axis. + + + + + + + + + +
                                                                      +
                                                                      + item2 +
                                                                      + item3 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/wraps-and-skips-orthogonal-inner-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/wraps-and-skips-orthogonal-inner-focusgroup.html new file mode 100644 index 00000000000..64a4b76ebf8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/wraps-and-skips-orthogonal-inner-focusgroup.html @@ -0,0 +1,32 @@ + + +HTML Test: focusgroup - Focus wraps and skips the orthogonal inner focusgroup. + + + + + + + + + +
                                                                      +
                                                                      + item1 + item2 +
                                                                      + item3 + item4 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/wraps-in-appropriate-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/wraps-in-appropriate-focusgroup.html new file mode 100644 index 00000000000..fa9c72b0bdf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/wraps-in-appropriate-focusgroup.html @@ -0,0 +1,35 @@ + + +HTML Test: focusgroup - Focus wraps in the appropriate focusgroup. + + + + + + + + + +
                                                                      +
                                                                      + item1 +
                                                                      + + item3 + item4 +
                                                                      +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/wraps-in-inner-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/wraps-in-inner-focusgroup.html new file mode 100644 index 00000000000..8fd44ba0f1d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/vertical/wraps-in-inner-focusgroup.html @@ -0,0 +1,33 @@ + + +HTML Test: focusgroup - Focus wraps in the inner focusgroup only since the outer focusgroup only wraps in the other axis. + + + + + + + + + +
                                                                      + item1 +
                                                                      + + item3 + item4 +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/wraps-and-goes-into-inner-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/wraps-and-goes-into-inner-focusgroup.html new file mode 100644 index 00000000000..ea9b1cbec51 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/wraps-and-goes-into-inner-focusgroup.html @@ -0,0 +1,34 @@ + + +HTML Test: focusgroup - Wraps and goes into inner focusgroup. + + + + + + + + + +
                                                                      +
                                                                      + item1 + item2 +
                                                                      + item3 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/wraps-successfully.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/wraps-successfully.html new file mode 100644 index 00000000000..5ad1cd8fe9e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/wraps-successfully.html @@ -0,0 +1,31 @@ + + +HTML Test: focusgroup - Focus wraps successfully from the last item to the first one. + + + + + + + + + +
                                                                      + item1 + item2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/wraps-to-parent-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/wraps-to-parent-focusgroup.html new file mode 100644 index 00000000000..afb9744b711 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/forward-navigation/wraps-to-parent-focusgroup.html @@ -0,0 +1,34 @@ + + +HTML Test: focusgroup - Focus wraps successfully from the last item inside an extending focusgroup to the first item of the parent focusgroup. + + + + + + + + + +
                                                                      + item1 +
                                                                      + item3 + item4 +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/col-flow-only.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/col-flow-only.html new file mode 100644 index 00000000000..a634412d530 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/col-flow-only.html @@ -0,0 +1,58 @@ + + +HTML Test: focusgroup - Validate that col-flow allows only vertical flowing. + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r2c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/col-wrap-and-row-flow.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/col-wrap-and-row-flow.html new file mode 100644 index 00000000000..b5f678a706f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/col-wrap-and-row-flow.html @@ -0,0 +1,60 @@ + + +HTML Test: focusgroup - Validate that we can col-wrap AND row-flow. + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r2c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/col-wrap-only.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/col-wrap-only.html new file mode 100644 index 00000000000..ff19b8778ea --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/col-wrap-only.html @@ -0,0 +1,58 @@ + + +HTML Test: focusgroup - Validate that col-wrap allows only vertical wrapping. + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r2c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/colspan.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/colspan.html new file mode 100644 index 00000000000..c9daeffaeb1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/colspan.html @@ -0,0 +1,93 @@ + + +HTML Test: focusgroup - Validate that we deal correctly with colspans. + + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c4
                                                                      r2c1r2c2r2c3r2c4
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/css-table-not-focusgroup.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/css-table-not-focusgroup.html new file mode 100644 index 00000000000..c0aea689aeb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/css-table-not-focusgroup.html @@ -0,0 +1,32 @@ + + +HTML Test: focusgroup - Validate that Focusgroup doesn't work on CSS table when the focusgroup attribute is not present. + + + + + + + + + +
                                                                      +
                                                                      +
                                                                      r1c1
                                                                      +
                                                                      r1c2
                                                                      +
                                                                      +
                                                                      +
                                                                      r2c1
                                                                      +
                                                                      r2c2
                                                                      +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/css-table.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/css-table.html new file mode 100644 index 00000000000..45e1e2c472c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/css-table.html @@ -0,0 +1,44 @@ + + +HTML Test: focusgroup - Validate that Focusgroup works with CSS tables too. + + + + + + + + + +
                                                                      +
                                                                      +
                                                                      r1c1
                                                                      +
                                                                      r1c2
                                                                      +
                                                                      +
                                                                      +
                                                                      r2c1
                                                                      +
                                                                      r2c2
                                                                      +
                                                                      +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/does-not-wrap-or-flow.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/does-not-wrap-or-flow.html new file mode 100644 index 00000000000..050dec3622a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/does-not-wrap-or-flow.html @@ -0,0 +1,56 @@ + + +HTML Test: focusgroup - Simple case that validated we don't wrap or flow when these values aren't provided. + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r2c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/empty-spaces.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/empty-spaces.html new file mode 100644 index 00000000000..90a09e1a940 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/empty-spaces.html @@ -0,0 +1,144 @@ + + +HTML Test: focusgroup - Validate that empty spaces are not troubling our expectations. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c3r1c4r1c5r1c6r1c7
                                                                      r2c3
                                                                      r3c1r3c2
                                                                      r4c1r4c6
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/flows-in-both-axes.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/flows-in-both-axes.html new file mode 100644 index 00000000000..86fc25456bf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/flows-in-both-axes.html @@ -0,0 +1,60 @@ + + +HTML Test: focusgroup - Validate that flow allows both horizontal and vertical flowing. + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r2c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/moves-across-table-sections.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/moves-across-table-sections.html new file mode 100644 index 00000000000..d7d1b55f459 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/moves-across-table-sections.html @@ -0,0 +1,97 @@ + + +HTML Test: focusgroup - Table with one or less row per section (head, 2 bodies and foot). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1
                                                                      r2c1
                                                                      r3c1
                                                                      r4c1
                                                                      r5c1
                                                                      r6c1
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/non-table.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/non-table.html new file mode 100644 index 00000000000..c02de186e65 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/non-table.html @@ -0,0 +1,26 @@ + + +HTML Test: focusgroup - Validate that Focusgroup doesn't work when not set on a table element + + + + + + + + + +
                                                                      + nonitem1 + nonitem2 +
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/relayout-before-navigation.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/relayout-before-navigation.html new file mode 100644 index 00000000000..d1fd0ce6ebb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/relayout-before-navigation.html @@ -0,0 +1,39 @@ + + +HTML Test: focusgroup - Relayout before navigating in a grid + + + + + + + + + + + + + + + + + + + +
                                                                      item1
                                                                      item2
                                                                      item3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/row-flow-only.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/row-flow-only.html new file mode 100644 index 00000000000..138b1b33d54 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/row-flow-only.html @@ -0,0 +1,58 @@ + + +HTML Test: focusgroup - Validate that row-flow allows only horizontal flowing. + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r2c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/row-wrap-and-col-flow.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/row-wrap-and-col-flow.html new file mode 100644 index 00000000000..8ed69e2e3e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/row-wrap-and-col-flow.html @@ -0,0 +1,60 @@ + + +HTML Test: focusgroup - Validate that we can row-wrap AND col-flow. + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r2c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/row-wrap-only.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/row-wrap-only.html new file mode 100644 index 00000000000..0154ee2125b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/row-wrap-only.html @@ -0,0 +1,58 @@ + + +HTML Test: focusgroup - Validate that row-wrap allows only horizontal wrapping. + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r2c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/rowspan.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/rowspan.html new file mode 100644 index 00000000000..81ab54ef8e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/rowspan.html @@ -0,0 +1,148 @@ + + +HTML Test: focusgroup - Validate that we deal correctly with rowspans. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r3c3
                                                                      r3c1r3c3
                                                                      r4c1r4c3
                                                                      r5c1r5c2r5c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/simple-case-with-non-focusable-cell-in-the-center.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/simple-case-with-non-focusable-cell-in-the-center.html new file mode 100644 index 00000000000..25d2900a9ff --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/simple-case-with-non-focusable-cell-in-the-center.html @@ -0,0 +1,65 @@ + + +HTML Test: focusgroup - Simple case with grid focusgroup, but with the cell R2C2 not focusable. + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r2c3
                                                                      r3c1r3c2r3c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/simple-case.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/simple-case.html new file mode 100644 index 00000000000..738895ce0b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/simple-case.html @@ -0,0 +1,60 @@ + + +HTML Test: focusgroup - Simple case with grid focusgroup + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r2c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/wraps-in-both-axes.html b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/wraps-in-both-axes.html new file mode 100644 index 00000000000..809ee536457 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/grid-navigation/wraps-in-both-axes.html @@ -0,0 +1,60 @@ + + +HTML Test: focusgroup - Validate that wrap allows both horizontal and vertical wrapping. + + + + + + + + + + + + + + + + + + + + +
                                                                      r1c1r1c2r1c3
                                                                      r2c1r2c2r2c3
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/resources/focusgroup-utils.js b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/resources/focusgroup-utils.js new file mode 100644 index 00000000000..9a1a14a3019 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/focusgroup/tentative/resources/focusgroup-utils.js @@ -0,0 +1,15 @@ +/* + Methods for testing the focusgroup feature. +*/ + +// https://w3c.github.io/webdriver/#keyboard-actions +const kArrowLeft = '\uE012'; +const kArrowUp = '\uE013'; +const kArrowRight = '\uE014'; +const kArrowDown = '\uE015'; + +// Set the focus on target and send the arrow key press event from it. +function focusAndKeyPress(target, key) { + target.focus(); + return test_driver.send_keys(target, key); +} diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/processing-model/focus-fixup-rule-one-no-dialogs.html b/tests/wpt/web-platform-tests/html/interaction/focus/processing-model/focus-fixup-rule-one-no-dialogs.html index 31b19193840..2413fe26673 100644 --- a/tests/wpt/web-platform-tests/html/interaction/focus/processing-model/focus-fixup-rule-one-no-dialogs.html +++ b/tests/wpt/web-platform-tests/html/interaction/focus/processing-model/focus-fixup-rule-one-no-dialogs.html @@ -31,7 +31,7 @@ test(() => { assert_not_equals(document.activeElement, button, "After disabling, the button must no longer be focused"); assert_equals(document.activeElement, document.body, "After disabling, the body must be focused"); -}, "Disabling the active element (making it expressly inert)"); +}, "Disabling the active element (making it inert)"); test(() => { const button = document.querySelector("#button2"); diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/processing-model/focusVisible.html b/tests/wpt/web-platform-tests/html/interaction/focus/processing-model/focusVisible.html new file mode 100644 index 00000000000..aa7e66fffe1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/processing-model/focusVisible.html @@ -0,0 +1,65 @@ + + +focus(options) - focusVisible + + + + + + + + + + +
                                                                      +
                                                                      +
                                                                      + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html new file mode 100644 index 00000000000..08a0913f42f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html b/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html index 00a5ff9a967..f3dc8f81718 100644 --- a/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html +++ b/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html @@ -102,6 +102,14 @@ function newImageInput() { } } +function newImgSource() { + return () => { + var elem = newElem("source")(); + elem.setAttribute("srcset", "/images/green-100x50.png"); + return elem; + } +} + /* * Array of tests. Each test consists of the following information: * @@ -160,16 +168,19 @@ const tests = [ [ newElem("marquee"), "hspace", "marginRight", true ], [ newElem("marquee"), "vspace", "marginTop", true ], [ newElem("marquee"), "vspace", "marginBottom", true ], + // is mapped to width if both are in . + [ newImgSource(), "width", "width", true, newElem("img"), newElem("picture") ], + // is mapped to height if both are in . + [ newImgSource(), "height", "height", true, newElem("img"), newElem("picture") ], ]; - function style(element) { return element.ownerDocument.defaultView.getComputedStyle(element); } const container = document.getElementById("container"); -for (let [ctor, attr, prop, zero_allowed] of tests) { +for (let [ctor, attr, prop, zero_allowed, mappedElemCtor, containerCtor] of tests) { let valid, invalid; if (zero_allowed) { valid = valid_values_with_0; @@ -178,31 +189,52 @@ for (let [ctor, attr, prop, zero_allowed] of tests) { valid = valid_values; invalid = invalid_values_with_0; } - for (let [value, result] of valid) { - let elem = ctor(); - test(function() { - this.add_cleanup(() => elem.remove()); - elem.setAttribute(attr, value); - assert_equals(elem.getAttribute(attr), value); - container.appendChild(elem); - assert_equals(style(elem)[prop], result); - }, `<${elem.localName} ${attr}="${value}"> mapping to ${prop}`); + + let elemContainer = null; + if (!!containerCtor) { + elemContainer = containerCtor(); + container.appendChild(elemContainer); + } else { + elemContainer = container; } - let default_elem = ctor(); - container.appendChild(default_elem); + let runTest = (value, expected) => { + let elem = ctor(); + let mappedElem = !!mappedElemCtor ? mappedElemCtor() : elem; + test(function() { + this.add_cleanup(() => { + elem.remove(); + if (!!mappedElemCtor) { + mappedElem.remove(); + } + }); + elem.setAttribute(attr, value); + assert_equals(elem.getAttribute(attr), value); + elemContainer.appendChild(elem); + if (!!mappedElemCtor) { + elemContainer.appendChild(mappedElem); + } + assert_equals(style(mappedElem)[prop], expected); + }, `<${elem.localName} ${attr}="${value}"> mapping to ` + + `<${mappedElem.localName}> ${prop} property`); + } + + for (let [value, result] of valid) { + runTest(value, result); + } + + let default_elem = !!mappedElemCtor ? mappedElemCtor() : ctor(); + elemContainer.appendChild(default_elem); let defaultVal = style(default_elem)[prop]; default_elem.remove(); for (let value of invalid) { - let elem = ctor(); - test(function() { - this.add_cleanup(() => elem.remove()); - elem.setAttribute(attr, value); - assert_equals(elem.getAttribute(attr), value); - container.appendChild(elem); - assert_equals(style(elem)[prop], defaultVal); - }, `<${elem.localName} ${attr}="${value}"> mapping to ${prop}`); + runTest(value, defaultVal); + } + + if (!!containerCtor) { + elemContainer.remove(); } } + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/datetime-dynamic-type-change-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/datetime-dynamic-type-change-ref.html new file mode 100644 index 00000000000..478b8db4858 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/datetime-dynamic-type-change-ref.html @@ -0,0 +1,2 @@ + + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/datetime-dynamic-type-change.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/datetime-dynamic-type-change.html new file mode 100644 index 00000000000..f8590ee5616 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/datetime-dynamic-type-change.html @@ -0,0 +1,9 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/input-line-height-computed.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/input-line-height-computed.html new file mode 100644 index 00000000000..1bee40359af --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/input-line-height-computed.html @@ -0,0 +1,32 @@ + + +used value and computed value of 'line-height' on input elements as text entry widgets + + + + + + +

                                                                      +

                                                                      +

                                                                      +

                                                                      +

                                                                      +

                                                                      + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/input-line-height-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/input-line-height-ref.html new file mode 100644 index 00000000000..abf50b87282 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/input-line-height-ref.html @@ -0,0 +1,12 @@ + +Reference for 'line-height' smaller than 'normal' on input elements as text entry widgets + +

                                                                      +

                                                                      +

                                                                      +

                                                                      +

                                                                      +

                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/input-line-height.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/input-line-height.html new file mode 100644 index 00000000000..bfcd3665be1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/input-line-height.html @@ -0,0 +1,13 @@ + +'line-height' smaller than 'normal' on input elements as text entry widgets + + +

                                                                      +

                                                                      +

                                                                      +

                                                                      +

                                                                      +

                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/phrasing-content-0/br-wbr-content/content-property.tentative.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/phrasing-content-0/br-wbr-content/content-property.tentative.html new file mode 100644 index 00000000000..d814c0a076d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/phrasing-content-0/br-wbr-content/content-property.tentative.html @@ -0,0 +1,18 @@ + + + + + + +

                                                                      Test passes if there is a square below.

                                                                      +

                                                                      xxxxxx
                                                                      xxxxxx
                                                                      xxxxxx

                                                                      +

                                                                      xxxxxx
                                                                      xxxxxx
                                                                      xxxxxx

                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/sections-and-headings/headings-styles.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/sections-and-headings/headings-styles.html new file mode 100644 index 00000000000..63e6a83e883 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/sections-and-headings/headings-styles.html @@ -0,0 +1,152 @@ + +default styles for h1..h6, hgroup, article, aside, nav, section + + + + + + +
                                                                      + +
                                                                      +

                                                                      +

                                                                      +

                                                                      +

                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + +
                                                                      +
                                                                      +

                                                                      +
                                                                      +

                                                                      +
                                                                      +

                                                                      +
                                                                      +

                                                                      +
                                                                      +

                                                                      +
                                                                      +

                                                                      +

                                                                      +

                                                                      +

                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + +
                                                                      +

                                                                      +
                                                                      +

                                                                      +
                                                                      +

                                                                      +
                                                                      +

                                                                      +
                                                                      +

                                                                      +
                                                                      +

                                                                      +

                                                                      +

                                                                      +

                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/absolute-fixed-in-legend-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/absolute-fixed-in-legend-ref.html new file mode 100644 index 00000000000..f82faee114d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/absolute-fixed-in-legend-ref.html @@ -0,0 +1,12 @@ + + + +
                                                                      legend
                                                                      +
                                                                      legend
                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/absolute-fixed-in-legend.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/absolute-fixed-in-legend.html new file mode 100644 index 00000000000..56d296977c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/absolute-fixed-in-legend.html @@ -0,0 +1,52 @@ + +Absolute/fixed-positioned boxes in LEGEND should be painted on the fieldset content + + + +
                                                                      + legend +
                                                                      content
                                                                      +
                                                                      + +
                                                                      + legend +
                                                                      content
                                                                      +
                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/empty-scrollable-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/empty-scrollable-ref.html new file mode 100644 index 00000000000..7fa15da174b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/empty-scrollable-ref.html @@ -0,0 +1,3 @@ + + +
                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/empty-scrollable.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/empty-scrollable.html new file mode 100644 index 00000000000..c968ed3f136 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/empty-scrollable.html @@ -0,0 +1,5 @@ + + + + +
                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-baseline-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-baseline-ref.html new file mode 100644 index 00000000000..ff583435a66 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-baseline-ref.html @@ -0,0 +1,14 @@ + + +
                                                                      + text line1
                                                                      line2
                                                                      +
                                                                      +
                                                                      + text line1
                                                                      line2
                                                                      +
                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-baseline.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-baseline.html new file mode 100644 index 00000000000..23f5ad76f3e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-baseline.html @@ -0,0 +1,16 @@ + + + + +
                                                                      + text
                                                                      line1
                                                                      line2
                                                                      +
                                                                      +
                                                                      + text
                                                                      line1
                                                                      line2
                                                                      +
                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-default-style.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-default-style.html index f07c84f406c..9a711383e6f 100644 --- a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-default-style.html +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-default-style.html @@ -11,7 +11,7 @@ margin-inline-start: 2px; margin-inline-end: 2px; */ - border: groove 2px ThreeDFace; + border: groove 2px; padding: 0.35em 0.75em 0.625em 0.75em; /* TODO replace above declarations with these when they are widely supported. padding-block-start: 0.35em; @@ -41,10 +41,6 @@ 'border-right-width', 'border-bottom-width', 'border-left-width', - 'border-top-color', - 'border-right-color', - 'border-bottom-color', - 'border-left-color', 'padding-top', 'padding-right', 'padding-bottom', diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-dynamic-baseline-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-dynamic-baseline-ref.html new file mode 100644 index 00000000000..c34096f2703 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-dynamic-baseline-ref.html @@ -0,0 +1,7 @@ + +baseline +
                                                                      +
                                                                      + line1
                                                                      line2 +
                                                                      +
                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-dynamic-baseline.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-dynamic-baseline.html new file mode 100644 index 00000000000..88aeed28c1a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-dynamic-baseline.html @@ -0,0 +1,13 @@ + + + +baseline +
                                                                      +
                                                                      + line1
                                                                      line2
                                                                      +
                                                                      +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/different-writing-modes.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/different-writing-modes.html new file mode 100644 index 00000000000..c697d4dbbf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/different-writing-modes.html @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/exceed-then-not-exceed.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/exceed-then-not-exceed.html new file mode 100644 index 00000000000..85a5b98ae55 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/exceed-then-not-exceed.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/frameset-visibility-hidden.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/frameset-visibility-hidden.html new file mode 100644 index 00000000000..b6c454b03fd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/frameset-visibility-hidden.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/large-cols-relsize.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/large-cols-relsize.html index 1bfb2b5404d..f056aa7e30b 100644 --- a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/large-cols-relsize.html +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/large-cols-relsize.html @@ -1,8 +1,21 @@ + + - + + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/large-rows-relsize.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/large-rows-relsize.html index 7fd29f6a9e7..c33cd44adf6 100644 --- a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/large-rows-relsize.html +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/large-rows-relsize.html @@ -1,8 +1,21 @@ + + - + + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/reference/different-writing-modes-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/reference/different-writing-modes-ref.html new file mode 100644 index 00000000000..9d5e5977f0b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/reference/different-writing-modes-ref.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/reference/empty-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/reference/empty-ref.html new file mode 100644 index 00000000000..0e76edd65b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/reference/empty-ref.html @@ -0,0 +1 @@ + diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html index 80fe4a85114..119523d250f 100644 --- a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html @@ -14,7 +14,6 @@ diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-intrinsic-width-height.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-intrinsic-width-height.html new file mode 100644 index 00000000000..ad5b69db21e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-intrinsic-width-height.html @@ -0,0 +1,41 @@ + + + + video element intrinsic width/height + + + + + + + + +
                                                                      + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub-ref.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub-ref.html index 2b2def5735a..2645ed459fe 100644 --- a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub-ref.html +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub-ref.html @@ -1,8 +1,3 @@ -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html index 7fb11f1e4cb..e39e2bc7646 100644 --- a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html @@ -10,6 +10,12 @@
                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html index b6c7f7b0daf..8d9b8cd5b4e 100644 --- a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html @@ -6,6 +6,12 @@ diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html index 43b9d7ae32c..865be7c883c 100644 --- a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html @@ -9,6 +9,12 @@
                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-option-element/select-multiple-covered-by-abspos-ref.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-option-element/select-multiple-covered-by-abspos-ref.html new file mode 100644 index 00000000000..3cb496ea1bc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-option-element/select-multiple-covered-by-abspos-ref.html @@ -0,0 +1,11 @@ + +Test reference + +
                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-option-element/select-multiple-covered-by-abspos.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-option-element/select-multiple-covered-by-abspos.html new file mode 100644 index 00000000000..ed290250dab --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-option-element/select-multiple-covered-by-abspos.html @@ -0,0 +1,19 @@ + + + + + + +Combobox selects are not stacking contexts by default + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bend-overlaps-content-001-ref.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bend-overlaps-content-001-ref.html new file mode 100644 index 00000000000..2f479dd72a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bend-overlaps-content-001-ref.html @@ -0,0 +1,32 @@ + + +Reference Case + + + + + +
                                                                      + + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bend-overlaps-content-001.tentative.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bend-overlaps-content-001.tentative.html new file mode 100644 index 00000000000..d99ca1956f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bend-overlaps-content-001.tentative.html @@ -0,0 +1,43 @@ + + +Test: padding-block-end on a textarea creates space that content can render into + + + + + + + + +
                                                                      + + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bstart-moves-content-001-ref.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bstart-moves-content-001-ref.html new file mode 100644 index 00000000000..5144f186604 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bstart-moves-content-001-ref.html @@ -0,0 +1,34 @@ + + +Reference Case + + + + + + +
                                                                      + + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bstart-moves-content-001.tentative.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bstart-moves-content-001.tentative.html new file mode 100644 index 00000000000..f4643af1328 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-bstart-moves-content-001.tentative.html @@ -0,0 +1,46 @@ + + +Test: padding-block-start on a textarea moves the textarea content over, potentially out of the textarea's scrollport + + + + + + + + +
                                                                      + + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-iend-overlaps-content-001-ref.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-iend-overlaps-content-001-ref.html new file mode 100644 index 00000000000..94473c08733 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-iend-overlaps-content-001-ref.html @@ -0,0 +1,32 @@ + + +Reference Case + + + + + +
                                                                      + + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-iend-overlaps-content-001.tentative.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-iend-overlaps-content-001.tentative.html new file mode 100644 index 00000000000..80cbbe3c1e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-iend-overlaps-content-001.tentative.html @@ -0,0 +1,37 @@ + + +Test: padding-inline-end on a textarea creates space that content can render into + + + + + + + + +
                                                                      + + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-istart-moves-content-001-ref.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-istart-moves-content-001-ref.html new file mode 100644 index 00000000000..eb88858b87a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-istart-moves-content-001-ref.html @@ -0,0 +1,34 @@ + + +Reference Case + + + + + + +
                                                                      + + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-istart-moves-content-001.tentative.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-istart-moves-content-001.tentative.html new file mode 100644 index 00000000000..f5abf84c122 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/the-textarea-element/textarea-padding-istart-moves-content-001.tentative.html @@ -0,0 +1,46 @@ + + +Test: padding-inline-start on a textarea moves the textarea content over, potentially out of the textarea's scrollport + + + + + + + + +
                                                                      + + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-animation-001.html b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-animation-001.html new file mode 100644 index 00000000000..7d7474e0a4b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-animation-001.html @@ -0,0 +1,23 @@ + + +compute the kind of widget: author origin and animation origin + + + + +

                                                                      PASS if the input field has a dark green background

                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-animation-002-ref.html b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-animation-002-ref.html new file mode 100644 index 00000000000..fab70234d2b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-animation-002-ref.html @@ -0,0 +1,3 @@ + + +

                                                                      PASS if the input field does not have a red background

                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-animation-002.html b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-animation-002.html new file mode 100644 index 00000000000..acca93eae7c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-animation-002.html @@ -0,0 +1,20 @@ + + +compute the kind of widget: animation origin only + + + + +

                                                                      PASS if the input field does not have a red background

                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-001-ref.html b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-001-ref.html new file mode 100644 index 00000000000..69726c6cd28 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-001-ref.html @@ -0,0 +1,7 @@ + + + + +

                                                                      PASS if the input field has a dark green background

                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-001.html b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-001.html new file mode 100644 index 00000000000..ec51cf9be52 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-001.html @@ -0,0 +1,21 @@ + + +compute the kind of widget: author origin and transition origin + + + + + +

                                                                      PASS if the input field has a dark green background

                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-002-ref.html b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-002-ref.html new file mode 100644 index 00000000000..febd6c55aa6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-002-ref.html @@ -0,0 +1,6 @@ + + + +

                                                                      PASS if the input field has a light green background

                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-002.html b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-002.html new file mode 100644 index 00000000000..b6c2a3dcadd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-002.html @@ -0,0 +1,19 @@ + + +compute the kind of widget: transition origin without author origin style before the transition + + + + +

                                                                      PASS if the input field has a light green background

                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-003.html b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-003.html new file mode 100644 index 00000000000..109617b7b78 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/appearance/appearance-transition-003.html @@ -0,0 +1,19 @@ + + +compute the kind of widget: transition origin without author origin style after the transition + + + + +

                                                                      PASS if the input field does not have a red background

                                                                      diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline-2-mismatch.html b/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline-2-mismatch.html new file mode 100644 index 00000000000..19930b947b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline-2-mismatch.html @@ -0,0 +1,2 @@ + + diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline-2.html b/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline-2.html new file mode 100644 index 00000000000..6e21c9e98e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline-2.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline-mismatch.html b/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline-mismatch.html new file mode 100644 index 00000000000..3d6495de662 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline-mismatch.html @@ -0,0 +1,2 @@ + + diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline.html b/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline.html new file mode 100644 index 00000000000..139893ed425 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/button-layout/input-type-button-newline.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/the-select-element/select-as-listbox-default-styles.tentative.html b/tests/wpt/web-platform-tests/html/rendering/widgets/the-select-element/select-as-listbox-default-styles.tentative.html new file mode 100644 index 00000000000..3e9b001f995 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/the-select-element/select-as-listbox-default-styles.tentative.html @@ -0,0 +1,113 @@ + +default styles for select as a listbox + + + + + + + + +
                                                                      + +
                                                                      + + + +
                                                                      + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/resources/common.js b/tests/wpt/web-platform-tests/html/resources/common.js index 63c1cc8522b..4f9ec54dde8 100644 --- a/tests/wpt/web-platform-tests/html/resources/common.js +++ b/tests/wpt/web-platform-tests/html/resources/common.js @@ -1,29 +1,54 @@ "use strict"; -var HTML5_ELEMENTS = [ 'a', 'abbr', 'address', 'area', 'article', 'aside', - 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', - 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', - 'command', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', - 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', - 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', - 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', - 'keygen', 'label', 'legend', 'li', 'link', 'map', 'mark', 'menu', - 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', - 'option', 'output', 'p', 'param', 'pre', 'progress', 'q', 'rp', 'rt', - 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', - 'span', 'strong', 'style', 'sub', 'table', 'tbody', 'td', 'textarea', - 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', - 'var', 'video', 'wbr' ]; +const HTML5_ELEMENTS = [ + 'a', 'abbr', 'address', 'area', 'article', 'aside', + 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', + 'body', 'br', 'button', 'canvas', 'caption', 'cite', + 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', + 'del', 'details', 'dfn', 'dialog', 'div', 'dl', + 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', + 'footer', 'form', 'h1', 'h2', 'h3', 'h4', + 'h5', 'h6', 'head', 'header', 'hr', 'html', + 'i', 'iframe', 'img', 'input', 'ins', 'kbd', + 'label', 'legend', 'li', 'link', 'main', 'map', + 'mark', 'menu', 'meta', 'meter', 'nav', 'noscript', + 'object', 'ol', 'optgroup', 'option', 'output', 'p', + 'param', 'pre', 'progress', 'q', 'rp', 'rt', + 'ruby', 's', 'samp', 'script', 'section', 'select', + 'slot', 'small', 'source', 'span', 'strong', 'style', + 'sub', 'sup', 'summary', 'table', 'tbody', 'td', + 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', + 'title', 'tr', 'track', 'u', 'ul', 'var', + 'video', 'wbr' +]; // only void (without end tag) HTML5 elements -var HTML5_VOID_ELEMENTS = [ 'area', 'base', 'br', 'col', 'command', 'embed', - 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', - 'track', 'wbr' ]; +var HTML5_VOID_ELEMENTS = [ + 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', + 'param', 'source', 'track', 'wbr' +]; // https://html.spec.whatwg.org/multipage/multipage/forms.html#form-associated-element var HTML5_FORM_ASSOCIATED_ELEMENTS = [ 'button', 'fieldset', 'input', 'object', 'output', 'select', 'textarea' ]; +const HTML5_SHADOW_ALLOWED_ELEMENTS = [ + 'article', 'aside', 'blockquote', 'body', 'div', 'footer', 'h1', 'h2', 'h3', + 'h4', 'h5', 'h6', 'header', 'main', 'nav', 'p', 'section', 'span' +]; + +const HTML5_SHADOW_DISALLOWED_ELEMENTS = + HTML5_ELEMENTS.filter(el => !HTML5_SHADOW_ALLOWED_ELEMENTS.includes(el)); + +// These are *deprecated/removed* HTML5 element names. +const HTML5_DEPRECATED_ELEMENTS = [ + 'acronym', 'applet', 'basefont', 'bgsound', 'big', 'blink', + 'center', 'command', 'content', 'dir', 'font', 'frame', + 'frameset', 'hgroup', 'image', 'isindex', 'keygen', 'marquee', + 'menuitem', 'nobr', 'noembed', 'noframes', 'plaintext', 'rb', + 'rtc', 'shadow', 'spacer', 'strike', 'tt', 'xmp' +]; + function newDocument() { var d = document.implementation.createDocument(); return d; diff --git a/tests/wpt/web-platform-tests/html/select/options-length-too-large.html b/tests/wpt/web-platform-tests/html/select/options-length-too-large.html new file mode 100644 index 00000000000..b47ccfccc90 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/select/options-length-too-large.html @@ -0,0 +1,45 @@ + + + + + + select options.length too large + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/disabled-elements/disabled-event-dispatch.tentative.html b/tests/wpt/web-platform-tests/html/semantics/disabled-elements/disabled-event-dispatch.tentative.html new file mode 100644 index 00000000000..1728adb11e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/disabled-elements/disabled-event-dispatch.tentative.html @@ -0,0 +1,61 @@ + + + + + + + + + + +
                                                                      + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html index 33049822c46..d21df46d306 100644 --- a/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html @@ -2,22 +2,12 @@ +

                                                                      Dominic Farolino

                                                                      + + + +

                                                                      Some text

                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/dynamic-render-blocking-style-element-does-not-block-script.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/dynamic-render-blocking-style-element-does-not-block-script.html new file mode 100644 index 00000000000..9a8c4b466b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/dynamic-render-blocking-style-element-does-not-block-script.html @@ -0,0 +1,21 @@ + +Script-created render-blocking style element is not script-blocking + + + + +

                                                                      Some text

                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/script-created-link-stylesheet-does-not-block-script.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/script-created-link-stylesheet-does-not-block-script.html new file mode 100644 index 00000000000..2c27bd32f94 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/script-created-link-stylesheet-does-not-block-script.html @@ -0,0 +1,20 @@ + +Script-created link stylesheet is not script-blocking + + + + +

                                                                      Some text

                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/script-created-style-element-does-not-block-script.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/script-created-style-element-does-not-block-script.html new file mode 100644 index 00000000000..f04c3f668fc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/script-created-style-element-does-not-block-script.html @@ -0,0 +1,20 @@ + +Script-created style element is not script-blocking + + + + +

                                                                      Some text

                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/style-element-media-match-block-script.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/style-element-media-match-block-script.html new file mode 100644 index 00000000000..17adfc1728f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/style-element-media-match-block-script.html @@ -0,0 +1,17 @@ + +Style element is script-blocking when media matches + + + + +

                                                                      Some text

                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/style-element-media-not-match-does-not-block-script.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/style-element-media-not-match-does-not-block-script.html new file mode 100644 index 00000000000..c05b6ed945d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/style-element-media-not-match-does-not-block-script.html @@ -0,0 +1,17 @@ + +Style element is not script-blocking when media doesn't match + + + + +

                                                                      Some text

                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/support/utils.js b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/support/utils.js new file mode 100644 index 00000000000..02d3a095cd1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/support/utils.js @@ -0,0 +1,20 @@ +function styleExistsInSheet(styleText, sheet) { + for (let rule of sheet.cssRules) { + if (styleText == rule.cssText) + return true; + if (rule instanceof CSSImportRule) { + if (rule.styleSheet && styleExistsInSheet(styleText, rule.styleSheet)) + return true; + } + } + return false; +} + +function styleExists(styleText) { + for (let sheet of document.styleSheets) { + if (styleExistsInSheet(styleText, sheet)) + return true; + } + return false; +} + diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html new file mode 100644 index 00000000000..136f4c371b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html @@ -0,0 +1,20 @@ + +Change color-scheme meta tag affecting normal descendant + + + + +
                                                                      +
                                                                      +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-style-element/style-load-after-mutate.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-style-element/style-load-after-mutate.html new file mode 100644 index 00000000000..901c5c1ac2c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-style-element/style-load-after-mutate.html @@ -0,0 +1,16 @@ + +The 'load' event on the style element should still fire after mutation + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-style-element/style_load_event.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-style-element/style_load_event.html index 9e19855baa6..d8526617912 100644 --- a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-style-element/style_load_event.html +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-style-element/style_load_event.html @@ -5,29 +5,24 @@ - -
                                                                      -
                                                                      - - function styleLoad() { - return new Promise((resolve) => { - document.getElementById('target').addEventListener('load', () => { - resolve(); - }); - }); - } + +
                                                                      Box
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-html.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-html.html new file mode 100644 index 00000000000..08085383377 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-html.html @@ -0,0 +1,10 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-img.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-img.html new file mode 100644 index 00000000000..7e9d713c0a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-img.html @@ -0,0 +1,10 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-js.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-js.html new file mode 100644 index 00000000000..c3b027563d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-js.html @@ -0,0 +1,11 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-mp4.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-mp4.html new file mode 100644 index 00000000000..fde560e5be9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-mp4.html @@ -0,0 +1,10 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-not-found.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-not-found.html new file mode 100644 index 00000000000..0b56b5eadc5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-not-found.html @@ -0,0 +1,10 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-type-only.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-type-only.html new file mode 100644 index 00000000000..90c9d3311c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/embedded-type-only.html @@ -0,0 +1,10 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/resources/common.js b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/resources/common.js new file mode 100644 index 00000000000..5bb9642a83a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/bfcache/resources/common.js @@ -0,0 +1,46 @@ +'use strict'; + +async function loadBfCacheTestHelperResources() { + await loadScript('/common/utils.js'); + await loadScript('/common/dispatcher/dispatcher.js'); + await loadScript( + '/html/browsers/browsing-the-web/back-forward-cache/resources/helper.sub.js'); +} +await loadBfCacheTestHelperResources(); + +// Runs BFCache tests for embed elements, specifically and . +// 1. Attaches the target element to first page. +// 2. Navigates away, then back via bfcache if this case is supported by the +// browser. +// @param {Object} testCase - The target element's attributes to test with. +export function runBfcacheTestForEmbeds(testCase) { + assert_implements(runBfcacheTest, '`runBfcacheTest()` is unavailable.'); + assert_implements(originSameOrigin, '`originSameOrigin` is unavailable.'); + + const tags = [ + {'name': 'embed', 'srcAttr': 'src'}, + {'name': 'object', 'srcAttr': 'data'}, + ]; + for (const tag of tags) { + runBfcacheTest( + { + targetOrigin: originSameOrigin, + shouldBeCached: true, + funcBeforeNavigation: (tag, attrs) => { + let e = document.createElement(tag.name); + // Only sets defined attributes to match the intended test behavior + // like embedded-type-only.html test. + if ('type' in attrs) { + e.type = attrs.type; + } + if ('src' in attrs) { + e[tag.srcAttr] = attrs.src; + } + document.body.append(e); + }, + argsBeforeNavigation: [tag, testCase] + }, + `Page with <${tag.name} ` + + `type=${testCase.type} ${tag.srcAttr}=${testCase.src}>`); + } +} diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference-test-data.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference-test-data.html index 735ba8cf086..1fb71431f7b 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference-test-data.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference-test-data.html @@ -54,7 +54,7 @@
                                                                      - +
                                                                      diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/load-events-networkState.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/load-events-networkState.html index c6eac703dd3..d163c0e5b9c 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/load-events-networkState.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/load-events-networkState.html @@ -5,6 +5,8 @@
                                                                      - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-from-document.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-from-document.html index 23e7104cab8..65d0f731149 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-from-document.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-from-document.html @@ -5,7 +5,7 @@
                                                                      - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/crashtests/track-element-src-aborted-load-onerror-crash.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/crashtests/track-element-src-aborted-load-onerror-crash.html new file mode 100644 index 00000000000..9db5ef07481 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/crashtests/track-element-src-aborted-load-onerror-crash.html @@ -0,0 +1,21 @@ + +HTMLTrackElement 'src' attribute changed, load pending, 'error' handler mutates + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-element-src-aborted-load.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-element-src-aborted-load.html new file mode 100644 index 00000000000..234e0873133 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-element-src-aborted-load.html @@ -0,0 +1,19 @@ + +HTMLTrackElement 'src' attribute changed, load pending + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-selection-metadata.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-selection-metadata.html index 1f7df3b6823..c4d88a35f0d 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-selection-metadata.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-selection-metadata.html @@ -8,26 +8,26 @@ - - \ No newline at end of file + + video.src = getVideoURI("/media/test"); +}); + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.getcontext.shared.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.getcontext.shared.html index 6381734c240..93c1603b695 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.getcontext.shared.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.getcontext.shared.html @@ -23,7 +23,7 @@ var ctx2 = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx2.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.type.extend.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.type.extend.html index fd699b72d41..1cb5e4869f9 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.type.extend.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.type.extend.html @@ -26,7 +26,7 @@ window.CanvasRenderingContext2D.prototype.fillRectGreen = function (x, y, w, h) }; ctx.fillStyle = '#f00'; ctx.fillRectGreen(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.type.replace.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.type.replace.html index 72defa8c684..47aa5bb8235 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.type.replace.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.type.replace.html @@ -27,7 +27,7 @@ window.CanvasRenderingContext2D.prototype.fillRect = function (x, y, w, h) }; ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-001.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-001.html new file mode 100644 index 00000000000..327c9f49d6a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-001.html @@ -0,0 +1,39 @@ + + +Canvas descendants focusability + + + + +
                                                                      + + +
                                                                      +
                                                                      + + +
                                                                      +
                                                                      +
                                                                      + + +
                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-002.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-002.html new file mode 100644 index 00000000000..aa607365d56 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-002.html @@ -0,0 +1,39 @@ + + +Canvas descendants focusability + + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-003.tentative.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-003.tentative.html new file mode 100644 index 00000000000..98d60cfe989 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-003.tentative.html @@ -0,0 +1,47 @@ + + +Canvas descendants focusability + + + + + +
                                                                      + + + + +
                                                                      +
                                                                      + + +
                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-004.tentative.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-004.tentative.html new file mode 100644 index 00000000000..5d8dfcd2f42 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-004.tentative.html @@ -0,0 +1,47 @@ + + +Canvas descendants focusability + + + + + +
                                                                      + +
                                                                      + +
                                                                      +
                                                                      + + +
                                                                      +
                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-005.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-005.html new file mode 100644 index 00000000000..f3bee6b06bc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/canvas-descendants-focusability-005.html @@ -0,0 +1,61 @@ + + +Canvas descendants focusability + + + + +
                                                                      + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.colour.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.colour.html index 4c9aa314db3..166732a57b3 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.colour.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.colour.html @@ -22,9 +22,8 @@ the actual blackness visible. var t = async_test("Initial state is transparent black"); _addTest(function(canvas, ctx) { -_assertPixel(canvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); +_assertPixel(canvas, 20,20, 0,0,0,0); }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.clip.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.clip.html index 6f8c5838ef8..ebf52bfa764 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.clip.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.clip.html @@ -25,9 +25,8 @@ ctx.clip(); canvas.width = 100; ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); +_assertPixel(canvas, 20,20, 0,255,0,255); }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.different.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.different.html index a2afaff4e1c..d55dd250c09 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.different.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.different.html @@ -21,11 +21,10 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 20,20, 255,0,0,255, "20,20", "255,0,0,255"); +_assertPixel(canvas, 20,20, 255,0,0,255); canvas.width = 50; -_assertPixel(canvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); +_assertPixel(canvas, 20,20, 0,0,0,0); }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.gradient.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.gradient.html index 6d9f6827afb..31b56ec8e9b 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.gradient.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.gradient.html @@ -28,9 +28,8 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.path.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.path.html index c0bb067faf0..3525377d2db 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.path.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.path.html @@ -24,9 +24,8 @@ ctx.rect(0, 0, 100, 50); canvas.width = 100; ctx.fillStyle = '#f00'; ctx.fill(); -_assertPixel(canvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); +_assertPixel(canvas, 20,20, 0,0,0,0); }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.pattern.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.pattern.html index 170ab9e193f..28f8306d96d 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.pattern.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.pattern.html @@ -28,9 +28,8 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = p; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(canvas, 50,25, 0,255,0,255); }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.same.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.same.html index 42966b11eda..1a0872ba2c0 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.same.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.same.html @@ -22,11 +22,10 @@ _addTest(function(canvas, ctx) { canvas.width = 100; ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50); -_assertPixel(canvas, 20,20, 255,0,0,255, "20,20", "255,0,0,255"); +_assertPixel(canvas, 20,20, 255,0,0,255); canvas.width = 100; -_assertPixel(canvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); +_assertPixel(canvas, 20,20, 0,0,0,0); }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.transform.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.transform.html index 661bbe6db32..36284ba4984 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.transform.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/initial.reset.transform.html @@ -24,9 +24,8 @@ ctx.scale(0.1, 0.1); canvas.width = 100; ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -_assertPixel(canvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); +_assertPixel(canvas, 20,20, 0,255,0,255); }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.dataURI.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.dataURI.html index 9230cf64180..93b560e82c4 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.dataURI.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.dataURI.html @@ -30,11 +30,10 @@ img.onload = t.step_func_done(function () { ctx.drawImage(img, 0, 0); canvas.toDataURL(); // should be permitted - _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + _assertPixel(canvas, 50,25, 0,255,0,255); }); img.src = data; }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.alpha.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.alpha.html index 7260c9dd0fd..daf278351d9 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.alpha.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.alpha.html @@ -34,7 +34,7 @@ if (!data.match(/^data:image\/jpeg[;,]/)) { img.onload = t.step_func_done(function () { ctx.drawImage(img, 0, 0); - _assertPixelApprox(canvas, 50,25, 63,127,63,255, "50,25", "63,127,63,255", 8); + _assertPixelApprox(canvas, 50,25, 63,127,63,255, 8); }); img.src = data; } @@ -42,4 +42,3 @@ if (!data.match(/^data:image\/jpeg[;,]/)) { }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.primarycolours.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.primarycolours.html index abf07bffd4b..750487bdeaf 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.primarycolours.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.primarycolours.html @@ -35,14 +35,13 @@ deferTest(); img.onload = t.step_func_done(function () { ctx.drawImage(img, 0, 0); - _assertPixelApprox(canvas, 12,20, 255,255,0,255, "12,20", "255,255,0,255", 8); - _assertPixelApprox(canvas, 50,20, 0,255,255,255, "50,20", "0,255,255,255", 8); - _assertPixelApprox(canvas, 87,20, 0,0,255,255, "87,20", "0,0,255,255", 8); - _assertPixelApprox(canvas, 50,45, 255,255,255,255, "50,45", "255,255,255,255", 8); + _assertPixelApprox(canvas, 12,20, 255,255,0,255, 8); + _assertPixelApprox(canvas, 50,20, 0,255,255,255, 8); + _assertPixelApprox(canvas, 87,20, 0,0,255,255, 8); + _assertPixelApprox(canvas, 50,45, 255,255,255,255, 8); }); img.src = data; }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.basic.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.basic.html index fd96cdd1820..dc5d8142441 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.basic.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.basic.html @@ -42,8 +42,8 @@ if (!data.match(/^data:image\/jpeg[;,]/)) { ctx.drawImage(img_hi, 0, 0, 50, 50, 0, 0, 50, 50); ctx.drawImage(img_lo, 0, 0, 50, 50, 50, 0, 50, 50); _assert(data_hi.length > data_lo.length, "data_hi.length > data_lo.length"); - _assertPixelApprox(canvas, 25,25, 0,0,255,255, "25,25", "0,0,255,255", 8); - _assertPixelApprox(canvas, 75,25, 0,0,255,255, "75,25", "0,0,255,255", 32); + _assertPixelApprox(canvas, 25,25, 0,0,255,255, 8); + _assertPixelApprox(canvas, 75,25, 0,0,255,255, 32); }); img_lo.src = data_lo; }; diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.html index d7a39f33684..dadea7c5b08 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.html @@ -35,14 +35,13 @@ img.onload = t.step_func_done(function () ctx.drawImage(img, 0, 25); // (The alpha values do not really survive float->int conversion, so just // do approximate comparisons) - _assertPixel(canvas, 12,40, 1,3,254,255, "12,40", "1,3,254,255"); - _assertPixelApprox(canvas, 37,40, 8,252,248,191, "37,40", "8,252,248,191", 2); - _assertPixelApprox(canvas, 62,40, 6,10,250,127, "62,40", "6,10,250,127", 4); - _assertPixelApprox(canvas, 87,40, 12,16,244,63, "87,40", "12,16,244,63", 8); + _assertPixel(canvas, 12,40, 1,3,254,255); + _assertPixelApprox(canvas, 37,40, 8,252,248,191, 2); + _assertPixelApprox(canvas, 62,40, 6,10,250,127, 4); + _assertPixelApprox(canvas, 87,40, 12,16,244,63, 8); }); img.src = canvas.toDataURL(); }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.primarycolours.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.primarycolours.html index 93adc945096..a13850d54e8 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.primarycolours.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.primarycolours.html @@ -35,14 +35,13 @@ deferTest(); img.onload = t.step_func_done(function () { ctx.drawImage(img, 0, 0); - _assertPixel(canvas, 12,20, 255,255,0,255, "12,20", "255,255,0,255"); - _assertPixel(canvas, 50,20, 0,255,255,255, "50,20", "0,255,255,255"); - _assertPixel(canvas, 87,20, 0,0,255,255, "87,20", "0,0,255,255"); - _assertPixel(canvas, 50,45, 255,255,255,255, "50,45", "255,255,255,255"); + _assertPixel(canvas, 12,20, 255,255,0,255); + _assertPixel(canvas, 50,20, 0,255,255,255); + _assertPixel(canvas, 87,20, 0,0,255,255); + _assertPixel(canvas, 50,45, 255,255,255,255); }); img.src = data; }); - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-hidden-attribute-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-hidden-attribute-ref.html new file mode 100644 index 00000000000..4b3d0feceb6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-hidden-attribute-ref.html @@ -0,0 +1,13 @@ + +The hidden global presentation attribute within the embed element + +This embed should be visible (green box): + + +These should not be visible (no red): + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-hidden-attribute.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-hidden-attribute.html new file mode 100644 index 00000000000..18d3897df9c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-hidden-attribute.html @@ -0,0 +1,20 @@ + +The hidden global presentation attribute within the embed element + + + +This embed should be visible (green box): + + +These should not be visible (no red): + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-initially-empty-is-updated-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-initially-empty-is-updated-ref.html new file mode 100644 index 00000000000..0484c397cd4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-initially-empty-is-updated-ref.html @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-initially-empty-is-updated.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-initially-empty-is-updated.html new file mode 100644 index 00000000000..818ec0362ef --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-initially-empty-is-updated.html @@ -0,0 +1,21 @@ + + +Iframe that doesn't load can be updated and rendered. + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigate_other_frame_popup.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigate_other_frame_popup.sub.html new file mode 100644 index 00000000000..19704b38a3f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigate_other_frame_popup.sub.html @@ -0,0 +1,64 @@ + + +Check that sandboxed iframe can not navigate other frame's popup + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/resources/empty.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/resources/empty.html new file mode 100644 index 00000000000..763b0739be6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/resources/empty.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/resources/hello-world.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/resources/hello-world.html new file mode 100644 index 00000000000..0d1111b48c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/resources/hello-world.html @@ -0,0 +1,11 @@ + + + + + + +
                                                                      Hello world!
                                                                      + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/resources/sandbox-top-navigation-helper.js b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/resources/sandbox-top-navigation-helper.js new file mode 100644 index 00000000000..7792c261309 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/resources/sandbox-top-navigation-helper.js @@ -0,0 +1,78 @@ +// To use this file, use the following imports: +// // META: script=/common/dispatcher/dispatcher.js +// // META: script=/common/get-host-info.sub.js +// // META: script=/common/utils.js +// // META: script=/resources/testdriver.js +// // META: script=/resources/testdriver-vendor.js +// // META: script=/resources/testharness.js +// // META: script=/resources/testharnessreport.js +// // META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// // META: script=./resources/sandbox-top-navigation-helper.js + +// Helper file that provides various functions to test top-level navigation +// with various frame and sandbox flag configurations. + +async function createNestedIframe(parent, origin, frame_sandbox, header_sandbox) +{ + let headers = []; + if (header_sandbox) { + headers.push([ + "Content-Security-Policy", + "sandbox allow-scripts " + header_sandbox + ]); + } + let iframe_attributes = {}; + if (frame_sandbox) { + iframe_attributes.sandbox = "allow-scripts " + frame_sandbox; + } + return parent.addIframe({ + origin: origin, + scripts: [ + '/resources/testdriver.js', + '/resources/testdriver-driver.js', + '/resources/testdriver-vendor.js' + ], + headers: headers, + }, iframe_attributes); +} + +async function attemptTopNavigation(iframe, should_succeed) { + let did_succeed; + try { + await iframe.executeScript(() => { + window.top.location.href = "https://google.com"; + }); + did_succeed = true; + } catch (e) { + did_succeed = false; + } + + assert_equals(did_succeed, should_succeed, + should_succeed ? + "The navigation should succeed." : + "The navigation should fail."); +} + +async function setupTest() { + const rcHelper = new RemoteContextHelper(); + return rcHelper.addWindow(/*config=*/ null, /*options=*/ {}); +} + +async function activate(iframe) { + return iframe.executeScript(async () => { + let b = document.createElement("button"); + document.body.appendChild(b); + + // Since test_driver.bless() does not play nicely with the remote context + // helper, this is a workaround to trigger user activation in the iframe. + // This adds a button to the iframe and then simulates hitting the 'tab' key + // twice. Once to focus on the button, and once to trigger user activation + // in the iframe (user activation is given to the frame that has focus when + // the tab key is pressed, not the frame that ends up getting focus). Note + // that this will result in both the parent and this frame getting user + // activation. Note that this currently only works for iframes nested 1 + // level deep. + test_driver.set_test_context(window.top); + return test_driver.send_keys(document.body, "\uE004\uE004"); + }); +} diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-inherit-to-blank-document-unsandboxed-frame.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-inherit-to-blank-document-unsandboxed-frame.html new file mode 100644 index 00000000000..0f35f287094 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-inherit-to-blank-document-unsandboxed-frame.html @@ -0,0 +1,87 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-inherit-to-blank-document-unsandboxed.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-inherit-to-blank-document-unsandboxed.html index f60ab0da30a..2c6f0bd6a71 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-inherit-to-blank-document-unsandboxed.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-inherit-to-blank-document-unsandboxed.html @@ -3,6 +3,7 @@ Content-Security-Policy: sandbox allow-scripts allow-popups allow-popups-to-escape-sandbox --> + @@ -38,27 +39,51 @@ test(test => { assert_equals(window.origin, 'null'); }, "Document is sandboxed via its CSP."); -test(test => { +promise_test(async test => { // The navigation will be canceled (204 no content). As a result, the // document in the popup must still be the initial empty document. - const w = window.open("common/blank.html?pipe=status(204)") + const w = window.open("/common/blank.html?pipe=status(204)"); - // The about:blank document is sandboxed, because it inherited CSP from its - // opener. However this is impossible to verify. There are cross-origin + // The initial empty document is sandboxed, because it inherited CSP from + // its opener. However this is impossible to verify. There are cross-origin // access restrictions and an about:blank document can't do much on its own. - assert_throws_dom("SecurityError", () => { w.origin }); + // We try to identify that the document is sandboxed by accessing a + // cross-origin restricted API. + assert_throws_dom( + "SecurityError", () => { w.origin }, + "Access before timeout throws"); + // Test after a 500ms timeout, delay after which we expect asynchronous + // navigations to be canceled. + await new Promise(r => setTimeout(r, 500) ); + + // The about:blank must still be sandboxed. + assert_throws_dom( + "SecurityError", () => { w.origin }, + "Access after timeout throws"); }, "The initial empty document inherit sandbox via CSP."); // Regression test for https://crbug.com/1190065 -test(test => { +promise_test(async test => { const w = window.open("about:blank"); // The about:blank document is sandboxed, because it inherited CSP from its // opener. However this is impossible to verify. There are cross-origin // access restrictions and an about:blank document can't do much on its own. - assert_throws_dom("SecurityError", () => { w.origin }); + // We try to identify that the document is sandboxed by accessing a + // cross-origin restricted API. + assert_throws_dom( + "SecurityError", () => { w.origin }, + "Access before timeout throws"); + // Test after a 500ms timeout, delay after which we expect asynchronous + // about:blank navigation to be completed. + await new Promise(r => setTimeout(r, 500) ); + + // The about:blank must still be sandboxed. + assert_throws_dom( + "SecurityError", () => { w.origin }, + "Access after timeout throws"); }, "The synchronous re-navigation to about:blank inherits sandbox via CSP"); async_test(test => { diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js new file mode 100644 index 00000000000..a9ea9e47232 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js @@ -0,0 +1,49 @@ +// META: title=Top-level navigation tests with cross origin & user activated child frames +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/resources/testharness.js +// META: script=/resources/testharnessreport.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/sandbox-top-navigation-helper.js + +'use strict'; + +/* ------------------------- USER ACTIVATION TESTS ------------------------- */ + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", "allow-top-navigation-by-user-activation", ""); + await activate(iframe_1); + + await attemptTopNavigation(iframe_1, true); +}, "Allow top with user activation + user activation"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", "allow-top-navigation-by-user-activation", ""); + + await attemptTopNavigation(iframe_1, false); +}, "allow-top-navigation-by-user-activation set but no sticky activation"); + +/* ---------------------- CROSS ORIGIN (A -> B) TESTS ---------------------- */ + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_REMOTE_ORIGIN", "allow-top-navigation", ""); + + await attemptTopNavigation(iframe_1, true); +}, "A cross-origin frame with frame sandbox flags can navigate top"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_REMOTE_ORIGIN", "", "allow-top-navigation"); + + await attemptTopNavigation(iframe_1, false); +}, "A cross-origin frame with delivered sandbox flags can not navigate top"); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child.tentative.sub.window.js b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child.tentative.sub.window.js new file mode 100644 index 00000000000..58133456970 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child.tentative.sub.window.js @@ -0,0 +1,58 @@ +// META: title=Top-level navigation tests with child frames +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/resources/testharness.js +// META: script=/resources/testharnessreport.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/sandbox-top-navigation-helper.js + +'use strict'; + +/* ----------------------- SAME ORIGIN (A -> A) TESTS ----------------------- */ + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", "", "allow-top-navigation allow-same-origin"); + + await attemptTopNavigation(iframe_1, true); +}, "A same-origin frame with delivered sandbox flags can navigate top"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", "allow-top-navigation allow-same-origin", ""); + + await attemptTopNavigation(iframe_1, true); +}, "A same-origin frame with frame sandbox flags can navigate top"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", "", ""); + + await attemptTopNavigation(iframe_1, true); +}, "A same-origin unsandboxed frame can navigate top"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", "", + "allow-top-navigation allow-top-navigation-by-user-activation allow-same-origin"); + + await attemptTopNavigation(iframe_1, true); +}, "A frame with both top navigation delivered sandbox flags uses the less \ + restrictive one"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", + "allow-top-navigation allow-top-navigation-by-user-activation", ""); + + await attemptTopNavigation(iframe_1, true); +}, "A frame with both top navigation frame sandbox flags uses the less \ + restrictive one"); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-escalate-privileges.tentative.sub.window.js b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-escalate-privileges.tentative.sub.window.js new file mode 100644 index 00000000000..999f056f334 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-escalate-privileges.tentative.sub.window.js @@ -0,0 +1,65 @@ +// META: title=Top-level navigation tests with frames that try to give themselves top-nav permission +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/resources/testharness.js +// META: script=/resources/testharnessreport.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/sandbox-top-navigation-helper.js + +'use strict'; + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_REMOTE_ORIGIN", "", ""); + const iframe_2 = await createNestedIframe(iframe_1, + "HTTP_REMOTE_ORIGIN", "allow-top-navigation", ""); + + await attemptTopNavigation(iframe_2, false); +}, "A cross origin unsandboxed frame can't escalate privileges in a child \ + frame"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_REMOTE_ORIGIN", "allow-top-navigation", ""); + const iframe_2 = await createNestedIframe(iframe_1, + "OTHER_ORIGIN", "", ""); + + await attemptTopNavigation(iframe_2, true); +}, "An unsandboxed grandchild inherits its parents ability to navigate top."); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", "", ""); + const iframe_2 = await createNestedIframe(iframe_1, + "HTTP_ORIGIN", "allow-top-navigation", ""); + + await attemptTopNavigation(iframe_2, true); +}, "A same-origin grandchild with frame allow-top can navigate top"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", "", ""); + const iframe_2 = await createNestedIframe(iframe_1, + "HTTP_ORIGIN", "", "allow-top-navigation"); + + await attemptTopNavigation(iframe_2, false); +}, "A sandboxed same-origin grandchild without allow-same-origin can't \ + escalate its own top-nav privileges"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", "", ""); + const iframe_2 = await createNestedIframe(iframe_1, + "HTTP_ORIGIN", "", "allow-same-origin allow-top-navigation"); + + await attemptTopNavigation(iframe_2, true); +}, "A sandboxed same-origin grandchild with allow-same-origin can \ + give itself top-nav privileges"); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-grandchild.tentative.sub.window.js b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-grandchild.tentative.sub.window.js new file mode 100644 index 00000000000..519efc94e51 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-grandchild.tentative.sub.window.js @@ -0,0 +1,52 @@ +// META: title=Top-level navigation tests with grandchild frames +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/resources/testharness.js +// META: script=/resources/testharnessreport.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/sandbox-top-navigation-helper.js + +'use strict'; + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", "", ""); + const iframe_2 = await createNestedIframe(iframe_1, + "HTTP_ORIGIN", "allow-scripts", ""); + + await attemptTopNavigation(iframe_2, false); +}, "A fully sandboxed same-origin grandchild can't navigate top"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_ORIGIN", "", ""); + const iframe_2 = await createNestedIframe(iframe_1, + "HTTP_ORIGIN", "", ""); + + await attemptTopNavigation(iframe_2, true); +}, "An unsandboxed same-origin grandchild can navigate top"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_REMOTE_ORIGIN", "", ""); + const iframe_2 = await createNestedIframe(iframe_1, + "HTTP_ORIGIN", "", ""); + + await attemptTopNavigation(iframe_2, true); +}, "A same-origin grandchild in a cross-origin parent can navigate top"); + +promise_test(async t => { + const main = await setupTest(); + const iframe_1 = await createNestedIframe(main, + "HTTP_REMOTE_ORIGIN", "", ""); + const iframe_2 = await createNestedIframe(iframe_1, + "HTTP_ORIGIN", "allow-top-navigation allow-same-origin", ""); + + await attemptTopNavigation(iframe_2, true); +}, "A same-origin sandboxed grandchild in a cross-origin parent can navigate top"); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html new file mode 100644 index 00000000000..cf26c28f085 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html @@ -0,0 +1,17 @@ +Verify srcdoc content loads when src is about:srcdoc#foo. + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html new file mode 100644 index 00000000000..452a984afbb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html @@ -0,0 +1,33 @@ +Verify that clearing srcdoc resets the iframe's content. + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/stash.py b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/stash.py index 231eeb492fc..24043808810 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/stash.py +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/stash.py @@ -1,8 +1,3 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - - def main(request, response): if request.method == u'POST': request.server.stash.put(request.GET[b"id"], request.body) diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation-on-popup.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation-on-popup.html index 0468278424f..9b9eae8a723 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation-on-popup.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation-on-popup.html @@ -4,7 +4,7 @@ + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/already-loaded-image-sync-width.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/already-loaded-image-sync-width.html new file mode 100644 index 00000000000..4a63bd7a7a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/already-loaded-image-sync-width.html @@ -0,0 +1,20 @@ + + +Image dimensions are available synchronously after changing src to an already-loaded image + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/delay-load-event-until-move-to-empty-source.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/delay-load-event-until-move-to-empty-source.html new file mode 100644 index 00000000000..7b61606c470 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/delay-load-event-until-move-to-empty-source.html @@ -0,0 +1,25 @@ + + +Inline image element blocks load until source is changed to empty source + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html index f6ae65708c6..bf65172bde2 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html @@ -39,7 +39,7 @@ onload = function() { var expected = {wide:resolve(img.dataset.wide), narrow:resolve(img.dataset.narrow)}; var current = iframe.className; var next = current === 'wide' ? 'narrow' : 'wide'; - var expect_change = expected[next].indexOf('broken.png') === -1 && !('noChange' in img.dataset); + var expect_change = expected[next].indexOf('undecodable.png') === -1 && !('noChange' in img.dataset); test(function() { assert_equals(img.currentSrc, expected[current]); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change-ref.html index ab18cd24e44..852a47687e3 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change-ref.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change-ref.html @@ -1,5 +1,6 @@ + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-param-url.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-param-url.html new file mode 100644 index 00000000000..5f1e54c4d91 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-param-url.html @@ -0,0 +1,41 @@ + + + +object element containing param element specifying a URL + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/beforeinput.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/beforeinput.tentative.html new file mode 100644 index 00000000000..7aa51a25230 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/beforeinput.tentative.html @@ -0,0 +1,58 @@ + + +Test the onbeforeinput attribute + + + + + + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow-weekmonth.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow-weekmonth.html new file mode 100644 index 00000000000..5a1478829fb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow-weekmonth.html @@ -0,0 +1,47 @@ + + +The constraint validation API Test: element.validity.rangeOverflow + + + + + + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html index 2f69407592e..98847e70ff8 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html @@ -43,37 +43,6 @@ {conditions: {max: "9999-01-01", value: "10000-01-01"}, expected: true, name: "[target] The value attribute is greater than max attribute(Year is 10000 should be valid)"} ] }, - { - tag: "input", - types: ["month"], - testData: [ - {conditions: {max: "", value: "2000-01"}, expected: false, name: "[target] The max attribute is not set"}, - {conditions: {max: "2000-01", value: ""}, expected: false, name: "[target] Value is empty string"}, - {conditions: {max: "2000/01", value: "2001-02"}, expected: false, name: "[target] The max attribute is an invalid month string"}, - {conditions: {max: "2000-01", value: "2000-1"}, expected: false, name: "[target] The value attribute is an invalid month string"}, - {conditions: {max: "987-01", value: "988-01"}, expected: false, name: "[target] The value is an invalid month string(year is three digits)"}, - {conditions: {max: "2000-01", value: "2000-13"}, expected: false, name: "[target] The value is an invalid month string(month is greater than 12)"}, - {conditions: {max: "2000-12", value: "2000-01"}, expected: false, name: "[target] The max attribute is greater than value attribute"}, - {conditions: {max: "2000-01", value: "2000-12"}, expected: true, name: "[target] The value attribute is greater than max attribute"}, - {conditions: {max: "9999-01", value: "10000-01"}, expected: true, name: "[target] The value attribute is greater than max attribute(Year is 10000 should be valid)"} - ] - }, - { - tag: "input", - types: ["week"], - testData: [ - {conditions: {max: "", value: "2000-W01"}, expected: false, name: "[target] The max attribute is not set"}, - {conditions: {max: "2000-W01", value: ""}, expected: false, name: "[target] Value is empty string"}, - {conditions: {max: "2000/W01", value: "2001-W02"}, expected: false, name: "[target] The max attribute is an invalid week string"}, - {conditions: {max: "2000-W01", value: "2000-W2"}, expected: false, name: "[target] The value attribute is an invalid week string"}, - {conditions: {max: "2000-W01", value: "2000-w02"}, expected: false, name: "[target] The value attribute is an invalid week string(w is in lowercase)"}, - {conditions: {max: "987-W01", value: "988-W01"}, expected: false, name: "[target] The value is an invalid week string(year is three digits)"}, - {conditions: {max: "2000-W01", value: "2000-W57"}, expected: false, name: "[target] The value is an invalid week string(week is too greater)"}, - {conditions: {max: "2000-W12", value: "2000-W01"}, expected: false, name: "[target] The max attribute is greater than value attribute"}, - {conditions: {max: "2000-W01", value: "2000-W12"}, expected: true, name: "[target] The value attribute is greater than max attribute"}, - {conditions: {max: "9999-W01", value: "10000-W01"}, expected: true, name: "[target] The value attribute is greater than max attribute(Year is 10000 should be valid)"} - ] - }, { tag: "input", types: ["time"], diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow-weekmonth.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow-weekmonth.html new file mode 100644 index 00000000000..9ddf2565c8c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow-weekmonth.html @@ -0,0 +1,47 @@ + + +The constraint validation API Test: element.validity.rangeUnderflow + + + + + + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html index c939a94c37e..c97af1b671c 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html @@ -44,37 +44,6 @@ {conditions: {min: "10000-01-01", value: "9999-01-01"}, expected: true, name: "[target] The value attribute is less than min attribute(Year is 10000 should be valid)"} ] }, - { - tag: "input", - types: ["month"], - testData: [ - {conditions: {min: "", value: "2000-01"}, expected: false, name: "[target] The min attribute is not set"}, - {conditions: {min: "2000-01", value: ""}, expected: false, name: "[target] Value is empty string"}, - {conditions: {min: "2001/01", value: "2000-02"}, expected: false, name: "[target] The min attribute is an invalid month string"}, - {conditions: {min: "2000-02", value: "2000-1"}, expected: false, name: "[target] The value attribute is an invalid month string"}, - {conditions: {min: "988-01", value: "987-01"}, expected: false, name: "[target] The value is an invalid month string(year is three digits)"}, - {conditions: {min: "2001-01", value: "2000-13"}, expected: false, name: "[target] The value is an invalid month string(month is less than 12)"}, - {conditions: {min: "2000-01", value: "2000-12"}, expected: false, name: "[target] The min attribute is less than value attribute"}, - {conditions: {min: "2001-01", value: "2000-12"}, expected: true, name: "[target] The value attribute is less than min attribute"}, - {conditions: {min: "10000-01", value: "2000-01"}, expected: true, name: "[target] The value attribute is less than min attribute(Year is 10000 should be valid)"} - ] - }, - { - tag: "input", - types: ["week"], - testData: [ - {conditions: {min: "", value: "2000-W01"}, expected: false, name: "[target] The min attribute is not set"}, - {conditions: {min: "2000-W01", value: ""}, expected: false, name: "[target] Value is empty string"}, - {conditions: {min: "2001/W02", value: "2000-W01"}, expected: false, name: "[target] The min attribute is an invalid week string"}, - {conditions: {min: "2001-W02", value: "2000-W1"}, expected: false, name: "[target] The value attribute is an invalid week string"}, - {conditions: {min: "2001-W02", value: "2000-w01"}, expected: false, name: "[target] The value attribute is an invalid week string(w is in lowercase)"}, - {conditions: {min: "988-W01", value: "987-W01"}, expected: false, name: "[target] The value is an invalid week string(year is three digits)"}, - {conditions: {min: "2001-W01", value: "2000-W57"}, expected: false, name: "[target] The value is an invalid week string(week is too greater)"}, - {conditions: {min: "2000-W01", value: "2000-W12"}, expected: false, name: "[target] The min attribute is less than value attribute"}, - {conditions: {min: "2000-W12", value: "2000-W01"}, expected: true, name: "[target] The value attribute is less than min attribute"}, - {conditions: {min: "10000-W01", value: "2000-W01"}, expected: true, name: "[target] The value attribute is less than min attribute(Year is 10000 should be valid)"} - ] - }, { tag: "input", types: ["time"], diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-weekmonth.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-weekmonth.html new file mode 100644 index 00000000000..3f47d391de1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-weekmonth.html @@ -0,0 +1,37 @@ + + +The constraint validation API Test: element.validity.valid + + + + + + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid.html index 03655ffd2f5..009b7a8e5dd 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid.html @@ -56,27 +56,6 @@ {conditions: {required: true, value: ""}, expected: false, expectedImmutable: true, name: "[target] validity.valid must be false if validity.valueMissing is true"} ] }, - { - tag: "input", - types: ["month"], - testData: [ - {conditions: {max: "2000-01", value: "2001-01"}, expected: false, name: "[target] validity.valid must be false if validity.rangeOverflow is true"}, - {conditions: {min: "2001-01", value: "2000-01"}, expected: false, name: "[target] validity.valid must be false if validity.rangeUnderflow is true"}, - // Step checks that "months since Jan 1970" is evenly divisible by `step` - {conditions: {step: 3, value: "2001-02"}, expected: false, name: "[target] validity.valid must be false if validity.stepMismatch is true"}, - {conditions: {required: true, value: ""}, expected: false, expectedImmutable: true, name: "[target] validity.valid must be false if validity.valueMissing is true"} - ] - }, - { - tag: "input", - types: ["week"], - testData: [ - {conditions: {max: "2000-W01", value: "2001-W01"}, expected: false, name: "[target] validity.valid must be false if validity.rangeOverflow is true"}, - {conditions: {min: "2001-W01", value: "2000-W01"}, expected: false, name: "[target] validity.valid must be false if validity.rangeUnderflow is true"}, - {conditions: {step: 2 * 1 * 604800000, value: "2001-W03"}, expected: false, name: "[target] validity.valid must be false if validity.stepMismatch is true"}, - {conditions: {required: true, value: ""}, expected: false, expectedImmutable: true, name: "[target] validity.valid must be false if validity.valueMissing is true"} - ] - }, { tag: "input", types: ["time"], diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-weekmonth.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-weekmonth.html new file mode 100644 index 00000000000..2078c2ec136 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-weekmonth.html @@ -0,0 +1,55 @@ + + + +The constraint validation API Test: element.validity.valueMissing + + + + + + +
                                                                      +
                                                                      + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html index 844493abe95..c586c6debe8 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html @@ -27,10 +27,6 @@ tag: "input", types: ["datetime-local"], testData: [ - // Note that several of these datetime strings use a ' ' separator, which - // is questionably spec-compliant. See: - // - crbug.com/521871 - // - https://github.com/whatwg/html/issues/2276 {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"}, {conditions: {required: true, value: "2000-12-10T12:00:00"}, expected: false, name: "[target] Valid local date and time string(2000-12-10T12:00:00)"}, {conditions: {required: true, value: "2000-12-10 12:00"}, expected: false, name: "[target] Valid local date and time string(2000-12-10 12:00)"}, @@ -59,36 +55,6 @@ {conditions: {required: true, value: ""}, expected: true, expectedImmutable: false, name: "[target] The value attribute is empty string"} ] }, - { - tag: "input", - types: ["month"], - testData: [ - {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"}, - {conditions: {required: true, value: "2000-12"}, expected: false, name: "[target] Valid month string(2000-12)"}, - {conditions: {required: true, value: "9999-01"}, expected: false, name: "[target] Valid month string(9999-01)"}, - {conditions: {required: true, value: 1234567}, expected: true, expectedImmutable: false, name: "[target] The value attribute is a number(1234567)"}, - {conditions: {required: true, value: new Date()}, expected: true, expectedImmutable: false, name: "[target] The value attribute is a Date object"}, - {conditions: {required: true, value: "2000-99"}, expected: true, expectedImmutable: false, name: "[target] Invalid month string(2000-99)"}, - {conditions: {required: true, value: "37-01"}, expected: true, expectedImmutable: false, name: "[target] Invalid month string(37-01)"}, - {conditions: {required: true, value: "2000/01"}, expected: true, expectedImmutable: false, name: "[target] Invalid month string(2000/01)"}, - {conditions: {required: true, value: ""}, expected: true, expectedImmutable: false, name: "[target] The value attribute is empty string"} - ] - }, - { - tag: "input", - types: ["week"], - testData: [ - {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"}, - {conditions: {required: true, value: "2000-W12"}, expected: false, name: "[target] Valid week string(2000-W12)"}, - {conditions: {required: true, value: "9999-W01"}, expected: false, name: "[target] Valid week string(9999-W01)"}, - {conditions: {required: true, value: 1234567}, expected: true, expectedImmutable: false, name: "[target] The value attribute is a number(1234567)"}, - {conditions: {required: true, value: new Date()}, expected: true, expectedImmutable: false, name: "[target] The value attribute is a Date object"}, - {conditions: {required: true, value: "2000-W99"}, expected: true, expectedImmutable: false, name: "[target] Invalid week string(2000-W99)"}, - {conditions: {required: true, value: "2000-W00"}, expected: true, expectedImmutable: false, name: "[target] invalid week string(2000-W00)"}, - {conditions: {required: true, value: "2000-w01"}, expected: true, expectedImmutable: false, name: "[target] invalid week string(2000-w01)"}, - {conditions: {required: true, value: ""}, expected: true, expectedImmutable: false, name: "[target] The value attribute is empty string"} - ] - }, { tag: "input", types: ["time"], diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html index ccd1cf09b90..c1abf76b656 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html @@ -41,8 +41,7 @@ }, //If an element is disabled, it is barred from constraint validation. //The willValidate attribute must be true if an element is mutable - //If the readonly attribute is specified on an INPUT element, the element is barred from constraint validation - //(with the assumption that the readonly attribute applies). + //If the readonly attribute is specified on an INPUT element, the element is barred from constraint validation. { tag: "input", types: ["text", "search", "tel", "url", "email", "password", "datetime-local", "date", "month", "week", "time"], @@ -53,14 +52,14 @@ {conditions: {disabled: false, readOnly: false}, expected: false, name: "[target] The willValidate attribute must be false if it has a datalist ancestor", ancestor: "datalist"}, ] }, - //In the following cases, the readonly attribute does not apply. + //In the following cases, the readonly attribute does not apply, however we should still bar the element from constraint validation. { tag: "input", types: ["color", "file", "submit"], testData: [ {conditions: {disabled: true}, expected: false, name: "[target] Must be barred from the constraint validation if it is disabled"}, {conditions: {disabled: false, readOnly: false}, expected: true, name: "[target] The willValidate attribute must be true if an element is mutable"}, - {conditions: {readOnly: true}, expected: true, name: "[target] Must be not barred from the constraint validation even if it is readonly"}, + {conditions: {readOnly: true}, expected: false, name: "[target] Must be barred from the constraint validation if it is readonly"}, {conditions: {disabled: false, readOnly: false}, expected: false, name: "[target] The willValidate attribute must be false if it has a datalist ancestor", ancestor: "datalist"}, ] }, diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/support/validator.js b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/support/validator.js index 48e56488e28..aa43b3a2f6a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/support/validator.js +++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/support/validator.js @@ -319,12 +319,6 @@ var validator = { }, data.name + " (in a form)"); }, - test_support_type: function(ctl, typ, testName) { - test(function () { - assert_equals(ctl.type, typ, "The " + typ + " type should be supported."); - }, testName); - }, - set_conditions: function(ctl, obj) { [ "checked", @@ -461,14 +455,6 @@ var validator = { } prefix = "[" + testee[i].tag.toUpperCase() + " in " + testee[i].types[typ].toUpperCase() + " status] "; - if (ele.type != testee[i].types[typ]) { - this.test_support_type( - ele, - testee[i].types[typ], - prefix + "The " + testee[i].types[typ] + " type must be supported." - ); - continue; - } for (var j = 0; j < testee[i].testData.length; j++) { testee[i].testData[j].name = testee[i].testData[j].name.replace(/\[.*\]\s/g, prefix); diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/SubmitEvent.window.js b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/SubmitEvent.window.js index 5f98fe05155..38218155154 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/SubmitEvent.window.js +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/SubmitEvent.window.js @@ -1,7 +1,7 @@ // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-submitevent-interface test(() => { - let button = document.createElement('button'); + assert_throws_js(TypeError, () => SubmitEvent(""), "Calling SubmitEvent constructor without 'new' must throw"); assert_throws_js(TypeError, () => { new SubmitEvent() }, '0 arguments'); assert_throws_js(TypeError, () => { new SubmitEvent('foo', { submitter: 'bar' }) }, 'Wrong type of submitter'); }, 'Failing SubmitEvent constructor'); diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/enctypes-helper.js b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/enctypes-helper.js index 53b76b01954..0f0d68163da 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/enctypes-helper.js +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/enctypes-helper.js @@ -1,3 +1,36 @@ +// This file exposes the `formSubmissionTemplate` function, which can be used +// to create tests for the form submission encoding of various enctypes: +// +// const urlencodedTest = formSubmissionTemplate( +// "application/x-www-form-urlencoded", +// (expected, _actualFormBody) => expected +// ); +// +// urlencodedTest({ +// name: "a", +// value: "b", +// expected: "a=b", +// formEncoding: "UTF-8", // optional +// description: "Simple urlencoded test" +// }); +// +// The above call to `urlencodedTest` tests the urlencoded form submission for a +// form whose entry list contains a single entry with name "a" and value "b", +// and it checks that the form payload matches the `expected` property after +// isomorphic-encoding. +// +// Since per the spec no normalization of the form entries should happen before +// the actual form encoding, each call to `urlencodedTest` will in fact add two +// tests: one submitting the entry as a form control (marked "normal form"), and +// one adding the entry through the `formdata` event (marked "formdata event"). +// Both cases are compared against the same expected value. +// +// Since multipart/form-data boundary strings can't be predicted ahead of time, +// the second parameter of `formSubmissionTemplate` allows transforming the +// expected value passed to each test. The second argument of that callback +// is the actual form body (isomorphic-decoded). When this callback is used, the +// `expected` property doesn't need to be a string. + (() => { // Using echo-content-escaped.py rather than // /fetch/api/resources/echo-content.py to work around WebKit not @@ -7,7 +40,7 @@ const IFRAME_NAME = "formtargetframe"; - // Undoes the escapes from /fetch/api/resources/echo-content.py + // Undoes the escapes from echo-content-escaped.py function unescape(str) { return str .replace(/\r\n?|\n/g, "\r\n") @@ -18,9 +51,12 @@ .replace(/\\\\/g, "\\"); } + // Tests the form submission of an entry list containing a single entry. + // // `expectedBuilder` is a function that takes in the actual form body // (necessary to get the multipart/form-data payload) and returns the form // body that should be expected. + // // If `testFormData` is false, the form entry will be submitted in for // controls. If it is true, it will submitted by modifying the entry list // during the `formdata` event. @@ -90,12 +126,25 @@ // This function returns a function to add individual form tests corresponding // to some enctype. - // `expectedBuilder` is a function that takes two parameters: `expected` (the - // `expected` value of a test) and `serialized` (the actual form body - // submitted by the browser), and returns the correct form body that should - // have been submitted. This is necessary in order to account for th + // `expectedBuilder` is an optional callback that takes two parameters: + // `expected` (the `expected` property passed to a test) and `actualFormBody` + // (the actual form body submitted by the browser, isomorphic-decoded). It + // must return the correct form body that should have been submitted, + // isomorphic-encoded. This is necessary in order to account for the // multipart/form-data boundary. - window.formSubmissionTemplate = (enctype, expectedBuilder) => { + // + // The returned function takes an object with the following properties: + // - `name`, the form entry's name. Must be a string. + // - `value`, the form entry's value, either a string or a `File` object. + // - `expected`, the expected form body. Usually a string, but it can be + // anything depending on `expectedBuilder`. + // - `formEncoding` (optional), the character encoding used for submitting the + // form. + // - `description`, used as part of the testharness test's description. + window.formSubmissionTemplate = ( + enctype, + expectedBuilder = (expected) => expected + ) => { function form({ name, value, diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-default-action.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-default-action.html new file mode 100644 index 00000000000..a14cfe7afa3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-default-action.html @@ -0,0 +1,108 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-preventdefault-click.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-preventdefault-click.html new file mode 100644 index 00000000000..68dc9c10a84 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-preventdefault-click.html @@ -0,0 +1,67 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-preventdefault.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-preventdefault.html new file mode 100644 index 00000000000..b63b78916c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-preventdefault.html @@ -0,0 +1,59 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html index aee1d41e3a1..00a46bfd432 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html @@ -4,6 +4,7 @@ + - + - +
                                                                      - +
                                                                      \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-not-displayed.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-not-displayed.tentative.html index 01d389c1850..7bc936e7dc4 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-not-displayed.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-not-displayed.tentative.html @@ -9,13 +9,13 @@ @@ -25,4 +25,4 @@ // removing an option from should revert back to its original display behavior selectMenu0Option.remove(); document.body.append(selectMenu0Option); - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-focusable.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-focusable.tentative.html index bcfc1b95652..a78b972a2a7 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-focusable.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-focusable.tentative.html @@ -46,4 +46,4 @@ promise_test(async t => { await test_driver.send_keys(selectMenu, KEY_CODE_MAP.Enter); assert_equals(selectMenu.value, "two"); }, "Validate + +
                                                                      + +
                                                                      + + +
                                                                      +
                                                                      +
                                                                      button
                                                                      +
                                                                      +
                                                                      + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup-position-with-zoom.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup-position-with-zoom.tentative.html index 55ffbce99cb..85d73d6a407 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup-position-with-zoom.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup-position-with-zoom.tentative.html @@ -1,6 +1,6 @@ -HTMLSelectMenuElement Test: popup position with zoom +HTMLSelectMenuElement Test: popover position with zoom @@ -23,7 +23,7 @@ zoom: 1.5; } - #selectMenu1-popup { + #selectMenu1-popover { zoom: 2; } @@ -41,46 +41,46 @@ zoom: 4; } - #selectMenu3-popup { + #selectMenu3-popover { zoom: 1.5; }
                                                                      Custom bottom left
                                                                      - +
                                                                      - +

                                                                      Custom top left
                                                                      - +
                                                                      - +
                                                                      Custom bottom right
                                                                      - +
                                                                      - +
                                                                      Custom top right
                                                                      - +
                                                                      - +
                                                                      \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup-position.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup-position.tentative.html index 559e3c9b9d8..d83015f4efd 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup-position.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup-position.tentative.html @@ -1,6 +1,6 @@ -HTMLSelectMenuElement Test: popup position +HTMLSelectMenuElement Test: popover position @@ -35,36 +35,36 @@ - +
                                                                      - +

                                                                      - +
                                                                      - +
                                                                      - +
                                                                      - +
                                                                      - +
                                                                      - +
                                                                      \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup.tentative.html index 6991c96bba5..74aa4f828c3 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup.tentative.html @@ -1,5 +1,5 @@ -HTMLSelectMenuElement Test: popup +HTMLSelectMenuElement Test: popover @@ -15,14 +15,14 @@ -
                                                                      +
                                                                      Custom button
                                                                      - +
                                                                      - - - + + +
                                                                      @@ -32,9 +32,9 @@
                                                                      - +
                                                                      - +
                                                                      diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-required-attribute.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-required-attribute.tentative.html index 25f9ca361a0..ea6d1b215d7 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-required-attribute.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-required-attribute.tentative.html @@ -58,4 +58,4 @@ test(() => { checkRequired(window.getComputedStyle(selectMenu2)); }, "Test required attribute"); - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-shadow-root-replacement.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-shadow-root-replacement.tentative.html deleted file mode 100644 index 1b7a752c1e3..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-shadow-root-replacement.tentative.html +++ /dev/null @@ -1,97 +0,0 @@ - -HTMLSelectMenuElement Test: shadow root replacement - - - - - - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-selectedOption.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-selectedOption.tentative.html index a2272b3087d..3ba7da6b5a2 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-selectedOption.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-selectedOption.tentative.html @@ -40,10 +40,10 @@
                                                                      Default custom selected-value text
                                                                      - +
                                                                      - +
                                                                      diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/cat.png b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/cat.png deleted file mode 100644 index 85dd7324815..00000000000 Binary files a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/cat.png and /dev/null differ diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-details-element/details-cq-crash.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-details-element/details-cq-crash.html new file mode 100644 index 00000000000..393e464c4cf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-details-element/details-cq-crash.html @@ -0,0 +1,16 @@ + + + + + +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-details-element/details-keyboard-activation.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-details-element/details-keyboard-activation.html new file mode 100644 index 00000000000..a5534e24d1c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-details-element/details-keyboard-activation.html @@ -0,0 +1,52 @@ + + +Details activation with space bar + + + + + + + + + +
                                                                      + Activate me with the Space key +

                                                                      Summary

                                                                      +
                                                                      +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-details-element/toggleEvent.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-details-element/toggleEvent.html index 4635ba27712..8ad60de5d9b 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-details-element/toggleEvent.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-details-element/toggleEvent.html @@ -32,7 +32,12 @@ Lorem ipsum

                                                                      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

                                                                      -
                                                                      + +
                                                                      Lorem ipsum

                                                                      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

                                                                      @@ -128,22 +133,20 @@ }); details8.removeAttribute('open'); // closes details8 - var toggleFiredOnDetails9 = false; - details9.ontoggle = t9.step_func_done(function(evt) { - if (toggleFiredOnDetails9) { + window.details9TogglePromise.then(t9.step_func(() => { + // The toggle event should be fired once when declaring details9 with open + // attribute. + details9.ontoggle = t9.step_func(() => { assert_unreached("toggle event fired twice on opened details element"); - } else { - toggleFiredOnDetails9 = true; - } - }); - // The toggle event should be fired once when declaring details9 with open - // attribute. - details9.open = true; // opens details9 - t9.step_timeout(function() { - assert_true(details9.open); - assert_true(toggleFiredOnDetails9); - t9.done(); - }, 0); + }); + // setting open=true on details9 should not fire another event since it is + // already open. + details9.open = true; + t9.step_timeout(() => { + assert_true(details9.open); + t9.done(); + }); + })); details10.ontoggle = t10.step_func_done(function(evt) { assert_unreached("toggle event fired on closed details element"); diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/default-color.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/default-color.html new file mode 100644 index 00000000000..5a6e6b21fb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/default-color.html @@ -0,0 +1,35 @@ + + +Test for dialog element colors + + + + + This is a dialog + + + This is a dialog + + + This is a dialog + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-cancel-events-closewatcher.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-cancel-events-closewatcher.tentative.html new file mode 100644 index 00000000000..5b1da9a2e37 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-cancel-events-closewatcher.tentative.html @@ -0,0 +1,55 @@ + + + + Test cancel event is fired when the dialog is closed by user interaction + + + + + + + + +

                                                                      Test cancel event is fired when the dialog is closed by user interaction

                                                                      + +

                                                                      Hello World

                                                                      + +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-cancel-preventDefault-closewatcher.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-cancel-preventDefault-closewatcher.tentative.html new file mode 100644 index 00000000000..ef99578ca97 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-cancel-preventDefault-closewatcher.tentative.html @@ -0,0 +1,55 @@ + + + + Test cancel event with preventDefault on cancel event for dialog element + + + + + + + + +

                                                                      Test cancel event with preventDefault on cancel event for dialog element

                                                                      + +

                                                                      Hello World

                                                                      + +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-delegatesfocus.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-delegatesfocus.html deleted file mode 100644 index 0263e5632f9..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-delegatesfocus.html +++ /dev/null @@ -1,53 +0,0 @@ - - -dialog focusing delegation with autofocus plus delegatesFocus inside the dialog - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-double-nested.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-double-nested.html new file mode 100644 index 00000000000..2cd63eb796b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow-double-nested.html @@ -0,0 +1,53 @@ + + +dialog focusing delegation: with two nested shadow trees + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html index 7f52189d9ff..e9ea15516e2 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html @@ -1,62 +1,256 @@ +dialog focus delegation - - - + + - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + + +
                                                                      + +
                                                                      + +
                                                                      + - - -It's my dialog. - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-show-modal-inert-crash.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal-inert-crash.html similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-show-modal-inert-crash.html rename to tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal-inert-crash.html diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html index 32f308235eb..c511631f9fb 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html @@ -62,10 +62,12 @@ test(function(){ assert_false(d1.open); assert_false(d1.hasAttribute("open")); + assert_equals(getComputedStyle(d1).display, "none"); d1.showModal(); this.add_cleanup(function() { d1.close(); }); assert_true(d1.open); assert_equals(d1.getAttribute("open"), ""); + assert_equals(getComputedStyle(d1).display, "block"); assert_equals(document.activeElement, b1); }); @@ -169,4 +171,18 @@ d11.close(); assert_equals(topElement(), d10); }, "when opening multiple dialogs, the most recently opened is rendered on top"); + + test(function() { + assert_false(d11.open); + d11.parentNode.removeChild(d11); + assert_throws_dom("INVALID_STATE_ERR", () => d11.showModal()); + + const doc = document.implementation.createHTMLDocument(); + doc.body.appendChild(d11); + this.add_cleanup(() => document.body.append(d11)); + assert_false(d11.open); + d11.showModal(); + assert_true(d11.open); + this.add_cleanup(() => d11.close()); + }, "Although the document is not attached to any pages, showModal() should execute as normal."); diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/focus-after-close.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/focus-after-close.html index 7061c34e4e4..d66d45527a7 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/focus-after-close.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/focus-after-close.html @@ -160,13 +160,17 @@ function test_move_to_shadow_host(showModal) { } // Test moving the focus doesn't scroll the viewport -function test_move_focus_dont_scroll_viewport(showModal) { +async function test_move_focus_dont_scroll_viewport(showModal) { const outViewPortButton = document.createElement("button"); outViewPortButton.style.top = (window.innerHeight + 10).toString() + "px"; outViewPortButton.style.position = "absolute"; document.body.appendChild(outViewPortButton); - outViewPortButton.focus(); + await new Promise(resolve => { + document.addEventListener("scroll", () => step_timeout(resolve, 0)); + outViewPortButton.focus(); + }); + // Since the outViewPortButton is focused, so the viewport should be // scrolled to it assert_true(document.documentElement.scrollTop > 0 ); @@ -217,9 +221,9 @@ test(() => { test_move_to_shadow_host(false); }, "Focus should be moved to the shadow DOM host if the previouly focused element is a shadow DOM node"); -test(() => { - test_move_focus_dont_scroll_viewport(true); - test_move_focus_dont_scroll_viewport(false); +promise_test(async () => { + await test_move_focus_dont_scroll_viewport(true); + await test_move_focus_dont_scroll_viewport(false); }, "Focus should not scroll if the previously focused element is outside the viewport"); diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames.html index 12fa96abc2d..2ccc1332857 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-frames.html @@ -37,7 +37,11 @@ promise_test(async () => { let focusedElement = null; element.addEventListener('focus', function() { focusedElement = element; }, false); element.focus(); - assert_equals(focusedElement === element, expectFocus, element.id); + if (expectFocus) { + assert_equals(focusedElement, element, element.id); + } else { + assert_not_equals(focusedElement, element, element.id); + } } // Opening a modal dialog in frame1. It blocks other nodes in its document. @@ -46,7 +50,7 @@ promise_test(async () => { testFocus(frame1.querySelector('.target'), false); const iframe = frame1.querySelector('#iframe1').contentDocument; - testFocus(iframe.querySelector('.target'), false); + testFocus(iframe.querySelector('.target'), true); // Even a modal dialog in the iframe is blocked by the modal dialog in the parent frame1. iframe.querySelector('dialog').showModal(); diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-svg-hittest.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-svg-hittest.html new file mode 100644 index 00000000000..579aca77755 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-svg-hittest.html @@ -0,0 +1,68 @@ + + +Hit-testing with SVG made inert by modal dialog + + + + + + + + + +
                                                                      + + + +
                                                                      + +Content behind the open modal dialog should not be clickable + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html index ea7d46f98db..1a509f7f365 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html @@ -4,9 +4,8 @@ + but only in its document, not in the parent browsing context, + nor in nested browsing contexts.">
                                                                      (main document: outer text) @@ -103,30 +102,30 @@ promise_test(async function() { checkSelection(window, "(main document: dialog)"); checkSelection(innerIframeWindow, "(inner iframe: outer text)(inner iframe: dialog)"); - checkSelection(outerIframeWindow, ""); -}, "Modal dialog in the main document marks outer nodes as inert. All contents of the outer iframe are also marked as inert."); + checkSelection(outerIframeWindow, "(outer iframe: outer text)(outer iframe: dialog)"); +}, "Modal dialog in the main document marks outer nodes as inert. Contents of the outer iframe aren't marked as inert."); promise_test(async function() { showModals(this, [innerIframeWindow, window]); checkSelection(window, "(main document: dialog)"); checkSelection(innerIframeWindow, "(inner iframe: dialog)"); - checkSelection(outerIframeWindow, ""); -}, "Modal dialogs in the main document and inner iframe mark outer nodes as inert. All contents of the outer iframe are also marked as inert."); + checkSelection(outerIframeWindow, "(outer iframe: outer text)(outer iframe: dialog)"); +}, "Modal dialogs in the main document and inner iframe mark outer nodes as inert. Contents of the outer iframe aren't marked as inert."); promise_test(async function() { showModals(this, [outerIframeWindow, window]); checkSelection(window, "(main document: dialog)"); checkSelection(innerIframeWindow, "(inner iframe: outer text)(inner iframe: dialog)"); - checkSelection(outerIframeWindow, ""); -}, "Modal dialogs in the main document and outer iframe mark outer nodes as inert. All contents of the outer iframe are also marked as inert."); + checkSelection(outerIframeWindow, "(outer iframe: dialog)"); +}, "Modal dialogs in the main document and outer iframe mark outer nodes as inert. Contents of the outer iframe aren't marked as inert."); promise_test(async function() { showModals(this, [innerIframeWindow, outerIframeWindow, window]); checkSelection(window, "(main document: dialog)"); checkSelection(innerIframeWindow, "(inner iframe: dialog)"); - checkSelection(outerIframeWindow, ""); -}, "Modal dialogs in the main document and both iframes mark outer nodes as inert. All contents of the outer iframe are also marked as inert."); + checkSelection(outerIframeWindow, "(outer iframe: dialog)"); +}, "Modal dialogs in the main document and both iframes mark outer nodes as inert. Contents of the outer iframe aren't marked as inert."); diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-blocks-mouse-events.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-blocks-mouse-events.html index 75eb451f583..f6c0ec0ccb8 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-blocks-mouse-events.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-blocks-mouse-events.html @@ -47,7 +47,9 @@ promise_test(async () => { async function clickOn(element) { const rect = element.getBoundingClientRect(); const actions = new test_driver.Actions() - .pointerMove(rect.left + rect.width / 2, rect.top + rect.height / 2) + .pointerMove( + Math.floor(rect.left + rect.width / 2), + Math.floor(rect.top + rect.height / 2)) .pointerDown() .pointerUp() .pointerMove(0, 0); diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-iframe-ref.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-iframe-ref.html new file mode 100644 index 00000000000..b6c52b7d7df --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-iframe-ref.html @@ -0,0 +1,2 @@ + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-iframe.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-iframe.html new file mode 100644 index 00000000000..f6440583fb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-iframe.html @@ -0,0 +1,18 @@ + +Modal dialog inside iframe should not generate box + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-object-ref.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-object-ref.html new file mode 100644 index 00000000000..38e15c1d79d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-object-ref.html @@ -0,0 +1,2 @@ + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-object.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-object.html new file mode 100644 index 00000000000..728748a7ee3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-object.html @@ -0,0 +1,17 @@ + +Modal dialog inside object should not generate box + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer-ref.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer-ref.html index 65886154df3..c837503cafb 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer-ref.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer-ref.html @@ -12,13 +12,7 @@ div { -

                                                                      Bug 103477: Make -NodeRenderingContext::parentRenderer and nextRenderer top layer aware -

                                                                      The test passes if you see a green square near the top and green rectangle in the center of the viewport. +

                                                                      The test passes if you see a green square near the top of the viewport.

                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer.html index 09490519fd7..75727b42f04 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer.html @@ -1,6 +1,7 @@ +Modal dialog inside replaced renderer should not generate box -

                                                                      Bug 103477: Make -NodeRenderingContext::parentRenderer and nextRenderer top layer aware -

                                                                      The test passes if you see a green square near the top and green rectangle in the center of the viewport. +

                                                                      The test passes if you see a green square near the top of the viewport.

                                                                      diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column-ref.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column-ref.html index 38b628c3092..0310d1ba243 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column-ref.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column-ref.html @@ -9,12 +9,6 @@ dialog { -

                                                                      Bug 103477: Make -NodeRenderingContext::parentRenderer and nextRenderer top layer aware -

                                                                      The test passes if you see a green rectangle in the center of the viewport. -

                                                                      - +

                                                                      The test passes if you see no green rectangle. diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column.html index 89ee6977716..3d72826b963 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column.html @@ -1,6 +1,7 @@ +Modal dialog inside display: table-column should not generate box -

                                                                      Bug 103477: Make -NodeRenderingContext::parentRenderer and nextRenderer top layer aware -

                                                                      The test passes if you see a green rectangle in the center of the viewport. +

                                                                      The test passes if you see no green rectangle.

                                                                      diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-selection.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-selection.html new file mode 100644 index 00000000000..0242080268f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-selection.html @@ -0,0 +1,68 @@ + + +Content selection in modal dialog + + + + + + + +123456789A + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/multiple-centered-dialogs.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/multiple-centered-dialogs.html index f9a62c5503c..70bb3810e2b 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/multiple-centered-dialogs.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/multiple-centered-dialogs.html @@ -28,14 +28,32 @@ dialog { - - - -This is a popup - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-anchor-nesting.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-anchor-nesting.tentative.html deleted file mode 100644 index 64b8fc694c7..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-anchor-nesting.tentative.html +++ /dev/null @@ -1,61 +0,0 @@ - - -Popup anchor nesting - - - - - - - - - - - - -This is popup 1 - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-basic.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-basic.tentative.html deleted file mode 100644 index 0b1d99099e5..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-basic.tentative.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - -This is a popup -This is another popup, with an unused "open" attribute - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-not-keyboard-focusable.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-not-keyboard-focusable.tentative.html deleted file mode 100644 index a8a8b60b387..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-not-keyboard-focusable.tentative.html +++ /dev/null @@ -1,44 +0,0 @@ - - -Popup keyboard focus behaviors - - - - - - - - - - -

                                                                      This is a popup without a focusable element

                                                                      -
                                                                      - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-removal-2.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-removal-2.tentative.html deleted file mode 100644 index e35b7ea739a..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-removal-2.tentative.html +++ /dev/null @@ -1,28 +0,0 @@ - - -Popup document removal behavior - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-removal.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-removal.tentative.html deleted file mode 100644 index 6ef89d933ca..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-removal.tentative.html +++ /dev/null @@ -1,27 +0,0 @@ - - -Popup document removal behavior - - - - - -Popup - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-focus.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-focus.tentative.html deleted file mode 100644 index bb8d679a35b..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-focus.tentative.html +++ /dev/null @@ -1,145 +0,0 @@ - - -Popup focus behaviors - - - - - - -

                                                                      This is a popup

                                                                      - -
                                                                      - - -

                                                                      This is a popup

                                                                      -
                                                                      - - - - -

                                                                      This is a popup

                                                                      - -
                                                                      - - -

                                                                      This is a popup

                                                                      - -
                                                                      - - -

                                                                      This is a popup with autofocus on a tabindex=0 element

                                                                      - -
                                                                      - - -

                                                                      This is a popup

                                                                      - - -
                                                                      - - -

                                                                      This is a popup

                                                                      - - -
                                                                      - - -

                                                                      This is a popup

                                                                      - - -
                                                                      - - -

                                                                      This is a popup

                                                                      - - -
                                                                      - - -

                                                                      This is a popup

                                                                      - - -
                                                                      - - - - -

                                                                      This is a popup

                                                                      - -
                                                                      - - -

                                                                      This is a popup

                                                                      - - - - - -
                                                                      - - -

                                                                      This is a popup

                                                                      - - - - - -
                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-hidden-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-hidden-display-ref.tentative.html deleted file mode 100644 index e7cb73c2b08..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-hidden-display-ref.tentative.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - -No popup should be displayed here.

                                                                      diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-hidden-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-hidden-display.tentative.html deleted file mode 100644 index b313f06f664..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-hidden-display.tentative.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -No popup should be displayed here.

                                                                      - -This content should be hidden - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen-2.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen-2.tentative.html deleted file mode 100644 index 7852b567e4c..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen-2.tentative.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - Outer popup - - Inner popup - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen-display-ref.tentative.html deleted file mode 100644 index db1a3f2b044..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen-display-ref.tentative.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - -

                                                                      This is a popup, which should be open upon load
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen-display.tentative.html deleted file mode 100644 index 64589e5267a..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen-display.tentative.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - -This is a popup, which should be open upon load -This is a second popup with initiallyopen, which should NOT be open upon load - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen.tentative.html deleted file mode 100644 index 1313124fac5..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-initiallyopen.tentative.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - -This is a popup, which should be open upon load - -This is a second popup with initiallyopen, which should NOT be open upon load -Also not visible - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-inside-display-none.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-inside-display-none.tentative.html deleted file mode 100644 index 0b9fcc5427c..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-inside-display-none.tentative.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - -No popup should be displayed here.

                                                                      - -

                                                                      - This content should be hidden -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-invoking-attribute.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-invoking-attribute.tentative.html deleted file mode 100644 index 1ff60fd7f9b..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-invoking-attribute.tentative.html +++ /dev/null @@ -1,40 +0,0 @@ - - -Popup invoking attribute - - - - - - - - - -

                                                                      This is popup #1

                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-light-dismiss-on-scroll.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-light-dismiss-on-scroll.tentative.html deleted file mode 100644 index 4f14dd7ae77..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-light-dismiss-on-scroll.tentative.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -Popup light dismiss on scroll - - - - - -
                                                                      - Scroll me

                                                                      - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt - ut labore et dolore magna aliqua. Enim ut sem viverra aliquet eget sit amet tellus. Massa - sed elementum tempus egestas sed sed risus pretium. Felis bibendum ut tristique et egestas - quis. Tortor dignissim convallis aenean et. Eu mi bibendum neque egestas congue quisque -
                                                                      - -This is popup 1
                                                                      -This is popup 2 - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-light-dismiss.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-light-dismiss.tentative.html deleted file mode 100644 index e0012587fd2..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-light-dismiss.tentative.html +++ /dev/null @@ -1,189 +0,0 @@ - - -Popup light dismiss behavior - - - - - - - - - -Outside all popups - - Inside popup 1 - - - - Inside popup 2 - - - -Inside popup 3 - - -Inside popup 6 -
                                                                      - Bottom of popup6 -
                                                                      - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-display-ref.tentative.html deleted file mode 100644 index 622a077c7c1..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-display-ref.tentative.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - -
                                                                      This is a popup
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-display.tentative.html deleted file mode 100644 index 792cc09d071..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-display.tentative.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -This is a popup - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-overflow-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-overflow-display-ref.tentative.html deleted file mode 100644 index dcf59982d05..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-overflow-display-ref.tentative.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - -This is popup 1
                                                                      -This is popup 2
                                                                      -This is popup 3 - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-overflow-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-overflow-display.tentative.html deleted file mode 100644 index ebe95d8544d..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-open-overflow-display.tentative.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -
                                                                      - This is popup 1
                                                                      - This is popup 2
                                                                      - This is popup 3 -
                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-shadow-dom.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-shadow-dom.tentative.html deleted file mode 100644 index 99a6523dab3..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-shadow-dom.tentative.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - -
                                                                      - - - - -
                                                                      - - - - -
                                                                      - - -

                                                                      Popup 1

                                                                      - -
                                                                      - - - -
                                                                      - - - - -
                                                                      - - - - - Popup 2 -
                                                                      - - - - -
                                                                      - - -

                                                                      This should not get hidden when popup2 opens.

                                                                      - - - -
                                                                      -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking-context-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking-context-ref.tentative.html deleted file mode 100644 index a90890bb4e1..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking-context-ref.tentative.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking-context.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking-context.tentative.html deleted file mode 100644 index 74cdcadd236..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking-context.tentative.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - Inside popup -
                                                                      z-index 2 -
                                                                      z-index 3
                                                                      -
                                                                      z-index 1
                                                                      -
                                                                      -
                                                                      Outside
                                                                      - Bottom of popup -
                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking.tentative.html deleted file mode 100644 index 88e93505631..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking.tentative.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -

                                                                      This is popup #1

                                                                      - - -
                                                                      -

                                                                      This is popup #2

                                                                      - -
                                                                      -

                                                                      This is popup #3

                                                                      -

                                                                      This is popup #4

                                                                      - - -This is a dialog - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-summary-element/anchor-without-link.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-summary-element/anchor-without-link.html new file mode 100644 index 00000000000..edaf786b256 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-summary-element/anchor-without-link.html @@ -0,0 +1,40 @@ + + +summary element: clicking on anchor without link + + + + + + +
                                                                      + Details +

                                                                      Text

                                                                      +
                                                                      + +
                                                                      + Details +

                                                                      Text

                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-summary-element/summary-untrusted-key-event.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-summary-element/summary-untrusted-key-event.html new file mode 100644 index 00000000000..21b66d52e7b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-summary-element/summary-untrusted-key-event.html @@ -0,0 +1,104 @@ + + + +Summary + + + + +
                                                                      +
                                                                      + Summary + Details +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/interfaces.html b/tests/wpt/web-platform-tests/html/semantics/interfaces.html index 9cb7f5eaef1..dc7b600e0a0 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interfaces.html +++ b/tests/wpt/web-platform-tests/html/semantics/interfaces.html @@ -17,6 +17,8 @@ function do_test(local_name, iface, variant) { if (variant === "useNS") { // Use createElementNS here to preserve the case of local_name. e = document.createElementNS("http://www.w3.org/1999/xhtml", local_name); + } else if (variant === "useParser") { + e = new DOMParser().parseFromString("<" + local_name + ">", "text/html").querySelector(local_name); } else { e = document.createElement(local_name); } @@ -31,17 +33,42 @@ function do_test(local_name, iface, variant) { "Element " + local_name + " should implement Element."); assert_true(e instanceof Node, "Element " + local_name + " should implement Node."); - }, "Interfaces for " + local_name); + }, "Interfaces for " + local_name + ": " + variant); +} + +// Some elements have weird parser behavior / insertion modes and would be +// skipped by the parser, so skip those. +function should_do_parser_test(local_name) { + return ![ + "foo-BAR", + "tbody", + "td", + "tfoot", + "th", + "thead", + "tr", + "Ã¥-bar", + "caption", + "col", + "colgroup", + "frame", + "image", + "frameset", + ].includes(local_name) } elements.forEach(function(a) { do_test(a[0], a[1], "useNS"); + if (should_do_parser_test(a[0])) { + do_test(a[0], a[1], "useParser"); + } + // Only run the createElement variant if the input is all-lowercase, because createElement // case-folds to lowercase. Custom elements are required to use all-lowercase to implement // HTMLElement, otherwise they use HTMLUnknownElement per spec. Example: "foo-BAR". if (a[0] === a[0].toLowerCase()) { - do_test(a[0].toUpperCase(), a[1]); + do_test(a[0].toUpperCase(), a[1], "createElement"); } }) diff --git a/tests/wpt/web-platform-tests/html/semantics/links/hyperlink-auditing/headers.optional.html b/tests/wpt/web-platform-tests/html/semantics/links/hyperlink-auditing/headers.optional.html new file mode 100644 index 00000000000..dd524fa5fae --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/links/hyperlink-auditing/headers.optional.html @@ -0,0 +1,55 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/links/hyperlink-auditing/resources/stash-headers.py b/tests/wpt/web-platform-tests/html/semantics/links/hyperlink-auditing/resources/stash-headers.py new file mode 100644 index 00000000000..a0d4a388120 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/links/hyperlink-auditing/resources/stash-headers.py @@ -0,0 +1,27 @@ +import json +from wptserve.utils import isomorphic_decode + +def main(request, response): + key = request.GET[b"id"] + + if request.method == "POST": + content_type = request.headers.get(b"content-type", b"no content-type header") + ping_from = request.headers.get(b"ping-from", b"no ping-from header") + ping_to = request.headers.get(b"ping-to", b"no ping-to header") + + value = json.dumps({ + 'content-type': isomorphic_decode(content_type), + 'ping-from': isomorphic_decode(ping_from), + 'ping-to': isomorphic_decode(ping_to) + }) + request.server.stash.put(key, value) + + return (204, [], "") + + elif request.method == "GET": + value = request.server.stash.take(key) + if value is None: + value = "\"no headers yet\"" + return (200, [("Content-Type", "application/json")], str(value)) + + return (405, [], "") diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-ref.tentative.html new file mode 100644 index 00000000000..a04d2dd5ac1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-ref.tentative.html @@ -0,0 +1,26 @@ + + + + +

                                                                      There should be a green box attached to the right side of each orange box.

                                                                      +
                                                                      +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display.tentative.html new file mode 100644 index 00000000000..03b486d745d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display.tentative.html @@ -0,0 +1,62 @@ + + + + + + +

                                                                      There should be a green box attached to the right side of each orange box.

                                                                      + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-idl-property.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-idl-property.tentative.html new file mode 100644 index 00000000000..5064bb99ca1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-idl-property.tentative.html @@ -0,0 +1,16 @@ + + + + + + + + +
                                                                      This is a popover
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-nesting.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-nesting.tentative.html new file mode 100644 index 00000000000..7490d75dc09 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-nesting.tentative.html @@ -0,0 +1,55 @@ + + +Popover anchor nesting + + + + + + + + + + + + + +
                                                                      This is popover 1
                                                                      + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-display-ref.tentative.html new file mode 100644 index 00000000000..477a97c12cc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-display-ref.tentative.html @@ -0,0 +1,26 @@ + + + +
                                                                      +
                                                                      This is a popover
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-cleanup.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-cleanup.tentative.html new file mode 100644 index 00000000000..ee1239e05f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-cleanup.tentative.html @@ -0,0 +1,98 @@ + + + + + + + + + + + + + +I am a dialog + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-display.tentative.html new file mode 100644 index 00000000000..5a59a9556da --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-display.tentative.html @@ -0,0 +1,57 @@ + + + + + + + +
                                                                      This is a popover
                                                                      +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-finishes-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-finishes-ref.tentative.html new file mode 100644 index 00000000000..d8334f985ed --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-finishes-ref.tentative.html @@ -0,0 +1,16 @@ + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-finishes.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-finishes.tentative.html new file mode 100644 index 00000000000..79e0b4dcbf6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-hide-finishes.tentative.html @@ -0,0 +1,56 @@ + + + + + + + +
                                                                      This is a popover
                                                                      +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-show-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-show-display.tentative.html new file mode 100644 index 00000000000..f78d8e1236f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animated-show-display.tentative.html @@ -0,0 +1,52 @@ + + + + + + + +
                                                                      This is a popover
                                                                      +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animation-corner-cases.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animation-corner-cases.tentative.html new file mode 100644 index 00000000000..a61917ca8b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-animation-corner-cases.tentative.html @@ -0,0 +1,220 @@ + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-appearance-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-appearance-ref.tentative.html new file mode 100644 index 00000000000..7ceca94559b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-appearance-ref.tentative.html @@ -0,0 +1,18 @@ + + +Popover element appearance + + + + +

                                                                      There should be four popovers with similar appearance.

                                                                      +
                                                                      Blank
                                                                      +
                                                                      Auto
                                                                      +
                                                                      Manual
                                                                      +
                                                                      Invalid
                                                                      diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-appearance.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-appearance.tentative.html new file mode 100644 index 00000000000..5c2c8d1b11e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-appearance.tentative.html @@ -0,0 +1,25 @@ + + +Popover element appearance + + + + + + +

                                                                      There should be four popovers with similar appearance.

                                                                      +
                                                                      Blank +
                                                                      Auto
                                                                      +
                                                                      +
                                                                      Manual
                                                                      + +
                                                                      Invalid
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.tentative.html new file mode 100644 index 00000000000..23aaf75d71d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.tentative.html @@ -0,0 +1,412 @@ + + + + + + + + + + + + +
                                                                      +
                                                                      Pop up
                                                                      +
                                                                      Pop up
                                                                      +
                                                                      Pop up
                                                                      +
                                                                      Pop up
                                                                      +
                                                                      Different element type
                                                                      +
                                                                      Different element type
                                                                      + + + Dialog with popover attribute + Dialog with popover=manual +
                                                                      Invalid popover value - defaults to popover=manual
                                                                      +
                                                                      Invalid popover value - defaults to popover=manual
                                                                      +
                                                                      Invalid popover value - defaults to popover=manual
                                                                      +
                                                                      + +
                                                                      +
                                                                      Not a popover
                                                                      + Dialog without popover attribute +
                                                                      + +
                                                                      Animated popover
                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-backdrop-appearance-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-backdrop-appearance-ref.tentative.html new file mode 100644 index 00000000000..bf2b16c3f5d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-backdrop-appearance-ref.tentative.html @@ -0,0 +1,45 @@ + + +Popover ::backdrop pseudo element appearance + + + +

                                                                      Test for [popover]::backdrop presence and stacking order. The test passes + if there are 3 stacked boxes, with the brightest green on top.

                                                                      +
                                                                      Bottom +
                                                                      Middle +
                                                                      Top
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      Bottom
                                                                      +
                                                                      +
                                                                      Middle
                                                                      +
                                                                      +
                                                                      Top
                                                                      diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-backdrop-appearance.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-backdrop-appearance.tentative.html new file mode 100644 index 00000000000..24e42989ca6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-backdrop-appearance.tentative.html @@ -0,0 +1,46 @@ + + +Popover ::backdrop pseudo element appearance + + + + + +

                                                                      Test for [popover]::backdrop presence and stacking order. The test passes + if there are 3 stacked boxes, with the brightest green on top.

                                                                      +
                                                                      Bottom +
                                                                      Middle +
                                                                      Top
                                                                      +
                                                                      +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen-2.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen-2.tentative.html new file mode 100644 index 00000000000..4ed78609f5c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen-2.tentative.html @@ -0,0 +1,24 @@ + + + + + + + +
                                                                      + Outer popover +
                                                                      + Inner popover +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen-display-ref.tentative.html new file mode 100644 index 00000000000..8973616308b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen-display-ref.tentative.html @@ -0,0 +1,6 @@ + + + + + +
                                                                      This is a popover, which should be open upon load
                                                                      diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen-display.tentative.html new file mode 100644 index 00000000000..d624289a27a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen-display.tentative.html @@ -0,0 +1,14 @@ + + + + + + +
                                                                      This is a popover, which should be open upon load
                                                                      +
                                                                      This is a second popover with defaultopen, which should NOT be open upon load
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen.tentative.html new file mode 100644 index 00000000000..daf12f7ff5a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-defaultopen.tentative.html @@ -0,0 +1,44 @@ + + + + + + + +
                                                                      This is a popover, which should be open upon load
                                                                      + +
                                                                      This is a second popover with defaultopen, which should NOT be open upon load
                                                                      +
                                                                      Also not visible
                                                                      + +
                                                                      This is a manual popover with defaultopen, which should be open upon load
                                                                      +
                                                                      This is a manual popover with defaultopen, which should be open upon load
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-dialog-appearance-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-dialog-appearance-ref.tentative.html new file mode 100644 index 00000000000..12efbb6b1e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-dialog-appearance-ref.tentative.html @@ -0,0 +1,33 @@ + + +Dialog-Popover appearance + + +

                                                                      Both dialogs should have the same shades of background.

                                                                      +

                                                                      The popover should have a completely-transparent ::backdrop.

                                                                      +This is a modal dialog +This is a dialog popover + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-dialog-appearance.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-dialog-appearance.tentative.html new file mode 100644 index 00000000000..9707ac0e934 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-dialog-appearance.tentative.html @@ -0,0 +1,26 @@ + + +Dialog-Popover appearance + + + + +

                                                                      Both dialogs should have the same shades of background.

                                                                      +

                                                                      The popover should have a completely-transparent ::backdrop.

                                                                      +This is a modal dialog +This is a dialog popover + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-dialog-crash.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-dialog-crash.tentative.html new file mode 100644 index 00000000000..76f51b8a5ed --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-dialog-crash.tentative.html @@ -0,0 +1,25 @@ + + + +Dialog-Popover crash + + + + + + + +

                                                                      This test passes if it does not crash.

                                                                      +This is a modal dialog +
                                                                      This is a popover
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-document-open.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-document-open.tentative.html new file mode 100644 index 00000000000..429fd89d3ba --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-document-open.tentative.html @@ -0,0 +1,29 @@ + + + + + + + +
                                                                      Popover
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html new file mode 100644 index 00000000000..2f530d1adea --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html @@ -0,0 +1,78 @@ + + +Popover events + + + + + + +
                                                                      Popover
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-focus.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-focus.tentative.html new file mode 100644 index 00000000000..10c91bcebba --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-focus.tentative.html @@ -0,0 +1,268 @@ + + +Popover focus behaviors + + + + + + + + + + +
                                                                      +

                                                                      This is a popover

                                                                      + +
                                                                      + +
                                                                      +

                                                                      This is a popover

                                                                      +
                                                                      + +
                                                                      + +
                                                                      +

                                                                      This is a popover

                                                                      + +
                                                                      + +
                                                                      +

                                                                      This is a popover

                                                                      + +
                                                                      + +
                                                                      +

                                                                      This is a popover with autofocus on a tabindex=0 element

                                                                      + +
                                                                      + +
                                                                      +

                                                                      This is a popover

                                                                      + + +
                                                                      + +
                                                                      +

                                                                      This is a popover

                                                                      + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-hidden-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-hidden-display-ref.tentative.html new file mode 100644 index 00000000000..2dc0d558b63 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-hidden-display-ref.tentative.html @@ -0,0 +1,19 @@ + + + + + + +
                                                                      This content should be visible and green
                                                                      +
                                                                      This content should be visible and green
                                                                      +
                                                                      This content should be visible and green
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-hidden-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-hidden-display.tentative.html new file mode 100644 index 00000000000..b77566fdfc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-hidden-display.tentative.html @@ -0,0 +1,38 @@ + + + + + + + +
                                                                      This content should be visible and green
                                                                      +
                                                                      This content should be visible and green
                                                                      +
                                                                      This content should be visible and green
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-inside-display-none-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-inside-display-none-ref.tentative.html new file mode 100644 index 00000000000..3d58e4ca095 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-inside-display-none-ref.tentative.html @@ -0,0 +1,5 @@ + + + + +No popover should be displayed here.

                                                                      diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-inside-display-none.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-inside-display-none.tentative.html new file mode 100644 index 00000000000..b36f1bbffd2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-inside-display-none.tentative.html @@ -0,0 +1,18 @@ + + + + + + +No popover should be displayed here.

                                                                      + +

                                                                      +
                                                                      This content should be hidden
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-invoking-attribute.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-invoking-attribute.tentative.html new file mode 100644 index 00000000000..affe201b69a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-invoking-attribute.tentative.html @@ -0,0 +1,211 @@ + + +Popover invoking attribute + + + + + + + + + + + + + + + +
                                                                      This is popover #1
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-light-dismiss-on-scroll.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-light-dismiss-on-scroll.tentative.html new file mode 100644 index 00000000000..7a09712d814 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-light-dismiss-on-scroll.tentative.html @@ -0,0 +1,63 @@ + + + +Popover should *not* light dismiss on scroll + + + + + + +
                                                                      + Scroll me

                                                                      + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt + ut labore et dolore magna aliqua. Enim ut sem viverra aliquet eget sit amet tellus. Massa + sed elementum tempus egestas sed sed risus pretium. Felis bibendum ut tristique et egestas + quis. Tortor dignissim convallis aenean et. Eu mi bibendum neque egestas congue quisque +
                                                                      + +
                                                                      + This is popover 1 +
                                                                      + This is popover 2 +
                                                                      +
                                                                      + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-light-dismiss.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-light-dismiss.tentative.html new file mode 100644 index 00000000000..2581ca6fdee --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-light-dismiss.tentative.html @@ -0,0 +1,529 @@ + + +Popover light dismiss behavior + + + + + + + + + + + + + +Outside all popovers +
                                                                      + Inside popover 1 + + Inside popover 1 after button +
                                                                      +
                                                                      + Inside popover 2 +
                                                                      + + + + + +
                                                                      Inside popover 3
                                                                      + + + + +
                                                                      Inside popover 6 +
                                                                      + Bottom of popover6 +
                                                                      + + + + + + + + + +
                                                                      + + Inside popover 8 after button +
                                                                      + + + +
                                                                      + + Inside popover 9 after button +
                                                                      + + + + + +
                                                                      Popover 1 +
                                                                      Anchor + +

                                                                      Popover 4

                                                                      +
                                                                      +
                                                                      +
                                                                      Popover 2 + +
                                                                      +
                                                                      Popover 3 + +
                                                                      + + + + +
                                                                      Popover 1 +
                                                                      Popover 2 +
                                                                      Popover 3
                                                                      +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-manual-crash.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-manual-crash.tentative.html new file mode 100644 index 00000000000..d721f7c731e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-manual-crash.tentative.html @@ -0,0 +1,31 @@ + + + +Popover=manual crash test + + + + + + + + + +

                                                                      This test passes if it does not crash.

                                                                      +
                                                                      Auto1 +
                                                                      Auto2
                                                                      +
                                                                      +
                                                                      Manual
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-not-keyboard-focusable.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-not-keyboard-focusable.tentative.html new file mode 100644 index 00000000000..815ae04ebb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-not-keyboard-focusable.tentative.html @@ -0,0 +1,47 @@ + + +Popover keyboard focus behaviors + + + + + + + + + +
                                                                      +

                                                                      This is a popover without a focusable element

                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-display-ref.tentative.html new file mode 100644 index 00000000000..144b81e6457 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-display-ref.tentative.html @@ -0,0 +1,20 @@ + + + + + +
                                                                      +
                                                                      This is a popover
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-display.tentative.html new file mode 100644 index 00000000000..56e63d0f375 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-display.tentative.html @@ -0,0 +1,26 @@ + + + + + + +
                                                                      This is a popover
                                                                      +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-overflow-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-overflow-display-ref.tentative.html new file mode 100644 index 00000000000..0d14050e85e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-overflow-display-ref.tentative.html @@ -0,0 +1,22 @@ + + + + +
                                                                      This is popover 1
                                                                      +
                                                                      This is popover 2
                                                                      +
                                                                      This is popover 3
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-overflow-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-overflow-display.tentative.html new file mode 100644 index 00000000000..cae628a13f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-open-overflow-display.tentative.html @@ -0,0 +1,36 @@ + + + + + + +
                                                                      +
                                                                      This is popover 1
                                                                      +
                                                                      This is popover 2
                                                                      +
                                                                      This is popover 3
                                                                      +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-removal-2.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-removal-2.tentative.html new file mode 100644 index 00000000000..b7b185d58d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-removal-2.tentative.html @@ -0,0 +1,28 @@ + + +Popover document removal behavior + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-removal.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-removal.tentative.html new file mode 100644 index 00000000000..aeed3b678db --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-removal.tentative.html @@ -0,0 +1,27 @@ + + +Popover document removal behavior + + + + + +
                                                                      Popover
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-shadow-dom.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-shadow-dom.tentative.html new file mode 100644 index 00000000000..72bbe1e8933 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-shadow-dom.tentative.html @@ -0,0 +1,168 @@ + + + + + + + + + + +
                                                                      + + + + +
                                                                      + + + + +
                                                                      + +
                                                                      +

                                                                      Popover 1

                                                                      + +
                                                                      + + + +
                                                                      + + + + +
                                                                      + + + + +
                                                                      Popover 2
                                                                      +
                                                                      + + + + +
                                                                      + +
                                                                      +

                                                                      This should not get hidden when popover2 opens.

                                                                      + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-show-event.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-show-event.tentative.html new file mode 100644 index 00000000000..69996bd65da --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-show-event.tentative.html @@ -0,0 +1,29 @@ + + +Popover show event + + + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-stacking-context-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-stacking-context-ref.tentative.html new file mode 100644 index 00000000000..4d4ca6973f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-stacking-context-ref.tentative.html @@ -0,0 +1,29 @@ + + + + + +
                                                                      + Inside popover +
                                                                      z-index 2 +
                                                                      z-index 3
                                                                      +
                                                                      z-index 1
                                                                      +
                                                                      +
                                                                      Outside
                                                                      + Bottom of popover +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-stacking-context.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-stacking-context.tentative.html new file mode 100644 index 00000000000..b5d0d651d3e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-stacking-context.tentative.html @@ -0,0 +1,34 @@ + + + + + + +
                                                                      + Inside popover +
                                                                      z-index 2 +
                                                                      z-index 3
                                                                      +
                                                                      z-index 1
                                                                      +
                                                                      +
                                                                      Outside
                                                                      + Bottom of popover +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-stacking.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-stacking.tentative.html new file mode 100644 index 00000000000..dc07c1c2084 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-stacking.tentative.html @@ -0,0 +1,172 @@ + + + + + + + + + +
                                                                      +

                                                                      Direct DOM children

                                                                      +

                                                                      Ancestor popover

                                                                      +

                                                                      Child popover

                                                                      +
                                                                      +
                                                                      + +
                                                                      +

                                                                      Grandchildren

                                                                      +

                                                                      Ancestor popover

                                                                      +
                                                                      +
                                                                      +

                                                                      Child popover

                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + +
                                                                      +

                                                                      popovertoggletarget attribute relationship

                                                                      +

                                                                      Ancestor popover

                                                                      + +
                                                                      +

                                                                      Child popover

                                                                      +
                                                                      + +
                                                                      +

                                                                      nested popovertoggletarget attribute relationship

                                                                      +

                                                                      Ancestor popover

                                                                      +
                                                                      +
                                                                      + +
                                                                      +
                                                                      +
                                                                      +

                                                                      Child popover

                                                                      +
                                                                      + +
                                                                      +

                                                                      anchor attribute relationship

                                                                      +

                                                                      Ancestor popover

                                                                      +

                                                                      Child popover

                                                                      +
                                                                      + +
                                                                      +

                                                                      indirect anchor attribute relationship

                                                                      +
                                                                      +

                                                                      Ancestor popover

                                                                      +
                                                                      +
                                                                      + Anchor +
                                                                      +
                                                                      +
                                                                      +

                                                                      Child popover

                                                                      +
                                                                      + + + +

                                                                      This is popover #1

                                                                      + + +
                                                                      +

                                                                      This is popover #2

                                                                      + +
                                                                      +

                                                                      This is popover #3

                                                                      +

                                                                      This is popover #4

                                                                      + + +This is a dialog + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-top-layer-interactions.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-top-layer-interactions.tentative.html new file mode 100644 index 00000000000..bdc550b423e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-top-layer-interactions.tentative.html @@ -0,0 +1,94 @@ + + +Interactions between top layer element types + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.tentative.html new file mode 100644 index 00000000000..615c5a818c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.tentative.html @@ -0,0 +1,39 @@ + + + + + + + +
                                                                      +
                                                                      Popover
                                                                      +
                                                                      Async
                                                                      +
                                                                      Async
                                                                      + +
                                                                      diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-styles.css b/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-styles.css new file mode 100644 index 00000000000..df683c3c64f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-styles.css @@ -0,0 +1,17 @@ +.fake-popover { + position: fixed; + inset: 0; + width: fit-content; + height: fit-content; + margin: auto; + border: solid; + padding: 0.25em; + overflow: auto; + color: CanvasText; + background-color: Canvas; +} +.fake-popover-backdrop { + position: fixed; + inset:0; + pointer-events: none !important; +} diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js b/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js new file mode 100644 index 00000000000..8f66dc08449 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js @@ -0,0 +1,43 @@ +function waitForRender() { + return new Promise(resolve => requestAnimationFrame(() => requestAnimationFrame(resolve))); +} +async function clickOn(element) { + const actions = new test_driver.Actions(); + await waitForRender(); + await actions.pointerMove(0, 0, {origin: element}) + .pointerDown({button: actions.ButtonType.LEFT}) + .pointerUp({button: actions.ButtonType.LEFT}) + .send(); + await waitForRender(); +} +async function sendTab() { + await waitForRender(); + await new test_driver.send_keys(document.body,'\uE004'); // Tab + await waitForRender(); +} +async function sendEscape() { + await waitForRender(); + await new test_driver.send_keys(document.body,'\uE00C'); // Escape + await waitForRender(); +} +function isElementVisible(el) { + return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length); +} +async function finishAnimations(popover) { + popover.getAnimations({subtree: true}).forEach(animation => animation.finish()); + await waitForRender(); +} +let mouseOverStarted; +function mouseOver(element) { + mouseOverStarted = performance.now(); + return (new test_driver.Actions()) + .pointerMove(0, 0, {origin: element}) + .send(); +} +function msSinceMouseOver() { + return performance.now() - mouseOverStarted; +} +async function waitForHoverTime(hoverWaitTimeMs) { + await new Promise(resolve => step_timeout(resolve,hoverWaitTimeMs)); + await waitForRender(); +}; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/README.md b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/README.md new file mode 100644 index 00000000000..ac5c91c9a2e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/README.md @@ -0,0 +1,7 @@ +The tests in this directory is intended for Chromium's DeferAllScript +experiment https://crbug.com/1339112, containing scenarios that would be +affected by DeferAllScript, to monitor the behavior on Chromium and other +browsers. + +The same set of expectations (when async/defer scripts are evaluated) should +already be covered somewhere in WPT. diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/async-script-2.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/async-script-2.html new file mode 100644 index 00000000000..f7377d847ad --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/async-script-2.html @@ -0,0 +1,40 @@ + +Async Script Execution Order + + + + + + + + + + + + + +
                                                                      End
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/async-script.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/async-script.html new file mode 100644 index 00000000000..dea7f987bfa --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/async-script.html @@ -0,0 +1,22 @@ + +Async Script Execution Order + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script-xml.xhtml b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script-xml.xhtml new file mode 100644 index 00000000000..9d02ff39f51 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script-xml.xhtml @@ -0,0 +1,40 @@ + + + + Defer Script Execution Order + + + + + +
                                                                      + + + + + + + + +
                                                                      End
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script.html new file mode 100644 index 00000000000..62c3a74014f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script.html @@ -0,0 +1,37 @@ + +Defer Script Execution Order + + + + + + + + + + + + + + + +
                                                                      End
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/document-write.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/document-write.html new file mode 100644 index 00000000000..63e251bae5c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/document-write.html @@ -0,0 +1,67 @@ + +DeferAllScript: document.write() + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/async-script-1.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/async-script-1.js new file mode 100644 index 00000000000..267f324aa65 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/async-script-1.js @@ -0,0 +1 @@ +logScript("Async1"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-1.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-1.js new file mode 100644 index 00000000000..1a0524f4fbd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-1.js @@ -0,0 +1 @@ +logScript("Defer1"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-2.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-2.js new file mode 100644 index 00000000000..d644e37f182 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-2.js @@ -0,0 +1 @@ +logScript("Defer2"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write-close.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write-close.js new file mode 100644 index 00000000000..80703d5c0ef --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write-close.js @@ -0,0 +1,3 @@ +document.open(); +document.write(``); +document.close(); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write.js new file mode 100644 index 00000000000..178c374df69 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write.js @@ -0,0 +1,2 @@ +document.open(); +document.write(``); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-close.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-close.js new file mode 100644 index 00000000000..7cdde0d78ff --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-close.js @@ -0,0 +1,2 @@ +document.write(``); +document.close(); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-iframe.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-iframe.sub.html new file mode 100644 index 00000000000..e3022e3bf1f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-iframe.sub.html @@ -0,0 +1,14 @@ + + + + + + + + +
                                                                      End
                                                                      + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write.js new file mode 100644 index 00000000000..413a9bc6210 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write.js @@ -0,0 +1 @@ +document.write(``); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/helper.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/helper.js new file mode 100644 index 00000000000..89c6d1e8282 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/helper.js @@ -0,0 +1,17 @@ +window.result = []; +function log(msg) { + window.result.push(msg); +} +function checkIfReachedBodyEnd() { + const endelement = document.getElementById("bodyend"); + // `
                                                                      End
                                                                      ` is needed at the end of HTML. + if (endelement && endelement.textContent === "End") { + log("EndOfBody"); + endelement.textContent = "Detected"; + } +} +function logScript(msg) { + checkIfReachedBodyEnd(); + log(msg); +} +document.addEventListener("DOMContentLoaded", function() { logScript("DOMContentLoaded"); }); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-1.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-1.js new file mode 100644 index 00000000000..726b56346e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-1.js @@ -0,0 +1 @@ +logScript("Sync1"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-2.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-2.js new file mode 100644 index 00000000000..ba2edfbf270 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-2.js @@ -0,0 +1 @@ +logScript("Sync2"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/support/async-script.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/support/async-script.html new file mode 100644 index 00000000000..d513bafe4f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/defer-script/support/async-script.html @@ -0,0 +1,44 @@ + +Child Async Script Execution Order + + + + + + + + + + + + + +
                                                                      End
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-sharedworker.html deleted file mode 100644 index 9bfe5a1f312..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-sharedworker.html +++ /dev/null @@ -1,10 +0,0 @@ - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker-setup.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker-setup.js deleted file mode 100644 index 88fc22ba7f7..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker-setup.js +++ /dev/null @@ -1,4 +0,0 @@ -importScripts("/resources/testharness.js"); -importScripts("module/evaluation-order-setup.mjs"); -importScripts("module/evaluation-order-1-nothrow-worker.mjs"); -importScripts("module/evaluation-order-1-nothrow.mjs"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker.html deleted file mode 100644 index 4ddfb61d507..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker.html +++ /dev/null @@ -1,10 +0,0 @@ - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow.html deleted file mode 100644 index b08372efd71..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow.html +++ /dev/null @@ -1,19 +0,0 @@ - -Testing evaluation order - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-sharedworker.html deleted file mode 100644 index 0ad18a8fba8..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-sharedworker.html +++ /dev/null @@ -1,10 +0,0 @@ - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker-setup.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker-setup.js deleted file mode 100644 index 5ac90a2388a..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker-setup.js +++ /dev/null @@ -1,4 +0,0 @@ -importScripts("/resources/testharness.js"); -importScripts("module/evaluation-order-setup.mjs"); -importScripts("evaluation-order-1-worker.js"); -importScripts("module/evaluation-order-1.mjs"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker.html deleted file mode 100644 index 7760e087c2d..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker.html +++ /dev/null @@ -1,10 +0,0 @@ - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker.js deleted file mode 100644 index b583bf1ca62..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker.js +++ /dev/null @@ -1,9 +0,0 @@ -globalThis.expectedLog = [ - "step-1-1", "step-1-2", - "global-error", "error", - "microtask", -]; - -globalThis.test_load.step_timeout(() => globalThis.testDone(), 0); - -done(); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1.html deleted file mode 100644 index 7bf7132081e..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1.html +++ /dev/null @@ -1,19 +0,0 @@ - -Testing evaluation order - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/029.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/029.html deleted file mode 100644 index 33548e566ac..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/029.html +++ /dev/null @@ -1,53 +0,0 @@ - - - scheduler: javascript: URL in HREF - - - - - - -
                                                                      FAILED (This TC requires JavaScript enabled)
                                                                      -

                                                                      - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/080.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/080.html deleted file mode 100644 index bd983355a1f..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/080.html +++ /dev/null @@ -1,30 +0,0 @@ - - - scheduler: IFRAMEs added with DOM (appendChild), javascript: URL - - - - - - -
                                                                      FAILED (This TC requires JavaScript enabled)
                                                                      -
                                                                      - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-nothrow-importScripts.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-nothrow-importScripts.any.js new file mode 100644 index 00000000000..bacfc9fd04b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-nothrow-importScripts.any.js @@ -0,0 +1,11 @@ +// META: global=dedicatedworker,sharedworker +// META: script=./resources/evaluation-order-setup.js + +// Spec: https://html.spec.whatwg.org/C/#run-a-classic-script +// called from https://html.spec.whatwg.org/C/#import-scripts-into-worker-global-scope +setupTest("importScripts() queueing a microtask then throwing an exception", [ + "body", + "microtask", +]); + +importScripts('./resources/evaluation-order-1-nothrow.js'); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-nothrow-static-import.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-nothrow-static-import.any.js new file mode 100644 index 00000000000..006eab7a7e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-nothrow-static-import.any.js @@ -0,0 +1,5 @@ +// META: global=dedicatedworker-module,sharedworker-module +// META: script=./resources/evaluation-order-setup.js + +import './resources/evaluation-order-1-nothrow-setup.js'; +import './resources/evaluation-order-1-nothrow.js'; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-throw-importScripts.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-throw-importScripts.any.js new file mode 100644 index 00000000000..0b42ea1e501 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-throw-importScripts.any.js @@ -0,0 +1,22 @@ +// META: global=dedicatedworker,sharedworker +// META: script=./resources/evaluation-order-setup.js + +// Spec: https://html.spec.whatwg.org/C/#run-a-classic-script +// called from https://html.spec.whatwg.org/C/#import-scripts-into-worker-global-scope +setupTest("importScripts() queueing a microtask then throwing an exception", [ + // Step 6 of #run-a-classic-script. + "body", + + // Step 7.1.1 ("Clean up after running script") is no-op because JavaScript + // execution context stack is still non-empty immediately after + // importScripts() as the outer script is still executing. + + // Step 7.1.2 (Rethrowing an exception) causes worker onerror. + "global-error", + + // Microtask checkpoint is performed later, perhaps + // "Clean up after running script" after the outer script is finished. + "microtask", +]); + +importScripts('./resources/evaluation-order-1-throw.js'); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-throw-static-import.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-throw-static-import.any.js new file mode 100644 index 00000000000..f6cc427c719 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-throw-static-import.any.js @@ -0,0 +1,5 @@ +// META: global=dedicatedworker-module,sharedworker-module +// META: script=./resources/evaluation-order-setup.js + +import './resources/evaluation-order-1-throw-setup.js'; +import './resources/evaluation-order-1-throw.js'; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1.html new file mode 100644 index 00000000000..4800ef81bc0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1.html @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-2.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-2.any.js new file mode 100644 index 00000000000..bbc64748235 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-2.any.js @@ -0,0 +1,5 @@ +// META: global=dedicatedworker-module,sharedworker-module +// META: script=./resources/evaluation-order-setup.js + +import './resources/evaluation-order-2-setup.js'; +import './resources/evaluation-order-2.1.mjs'; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-2.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-2.html new file mode 100644 index 00000000000..e55c2ecbed4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-2.html @@ -0,0 +1,8 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-3.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-3.any.js new file mode 100644 index 00000000000..19e94714e5d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-3.any.js @@ -0,0 +1,5 @@ +// META: global=dedicatedworker-module,sharedworker-module +// META: script=./resources/evaluation-order-setup.js + +import './resources/evaluation-order-3-setup.js'; +import './resources/evaluation-order-3.1.mjs'; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-3.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-3.html new file mode 100644 index 00000000000..ef351acd288 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-3.html @@ -0,0 +1,8 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-4.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-4.html new file mode 100644 index 00000000000..f27678439df --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-4.html @@ -0,0 +1,18 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-nothrow-setup.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-nothrow-setup.js new file mode 100644 index 00000000000..1b42e995937 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-nothrow-setup.js @@ -0,0 +1,5 @@ +// Spec: https://html.spec.whatwg.org/C/#run-a-module-script +setupTest("Module script queueing a microtask", [ + "body", // Step 6. + "microtask", // "Clean up after running script" at Step 8. +]); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-nothrow.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-nothrow.js new file mode 100644 index 00000000000..e19d9b1b137 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-nothrow.js @@ -0,0 +1,2 @@ +queueMicrotask(() => globalThis.log.push("microtask")); +globalThis.log.push("body"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-throw-setup.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-throw-setup.js new file mode 100644 index 00000000000..651a494e530 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-throw-setup.js @@ -0,0 +1,10 @@ +// Spec: https://html.spec.whatwg.org/C/#run-a-module-script +setupTest("Module script queueing a microtask then throwing an exception", [ + "body", // Step 6. + "microtask", // "Clean up after running script" at Step 8. + "global-error", // "Clean up after running script" at Step 8, because + // `evaluationPromise` is synchronously rejected and the rejection is + // processed in the microtask checkpoint here (See also Step 7). + // As `evaluationPromise` is rejected after the microtask queued during + // evaluation, "global-error" occurs after "microtask". +]); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-throw.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-throw.js new file mode 100644 index 00000000000..2451df1c155 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-1-throw.js @@ -0,0 +1,4 @@ +queueMicrotask(() => globalThis.log.push("microtask")); +globalThis.log.push("body"); + +throw new Error("error"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-2-setup.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-2-setup.js new file mode 100644 index 00000000000..46f7354538a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-2-setup.js @@ -0,0 +1,10 @@ +// Spec: https://html.spec.whatwg.org/C/#run-a-module-script +setupTest("Module script queueing a microtask then throwing an exception", [ + "step-2.2-1", "step-2.2-2", // Step 6. + "microtask-2.2", // "Clean up after running script" at Step 8. + "global-error", // "Clean up after running script" at Step 8, + // because `evaluationPromise` is synchronously rejected and the rejection + // is processed in the microtask checkpoint here (See also Step 7). + // As `evaluationPromise` is rejected after the microtask queued during + // evaluation, "global-error" occurs after "microtask". +]); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2.1.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-2.1.mjs similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2.1.mjs rename to tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-2.1.mjs diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2.2.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-2.2.mjs similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2.2.mjs rename to tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-2.2.mjs diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-3-setup.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-3-setup.js new file mode 100644 index 00000000000..edc046910e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-3-setup.js @@ -0,0 +1,7 @@ +setupTest("Module script queueing a microtask then throwing an exception", [ + "step-3.1-1", "step-3.1-2", "step-3.1-3", + "microtask-3.1", + "step-3.2-1", "step-3.2-2", + "microtask-3.2", + "import-catch", "error", +]); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3.1.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-3.1.mjs similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3.1.mjs rename to tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-3.1.mjs diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3.2.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-3.2.mjs similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3.2.mjs rename to tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-3.2.mjs diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4.1.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-4.1.mjs similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4.1.mjs rename to tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-4.1.mjs diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4.2.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-4.2.mjs similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4.2.mjs rename to tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-4.2.mjs diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-setup.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-setup.js new file mode 100644 index 00000000000..d2e28935c43 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/resources/evaluation-order-setup.js @@ -0,0 +1,30 @@ +globalThis.setup({allow_uncaught_exception: true}); + +// Must be called after previous tests are completed. +globalThis.setupTest = (description, expectedLog) => { + globalThis.log = []; + globalThis.onerror = message => { + globalThis.log.push("global-error"); + return true; + }; + globalThis.onunhandledrejection = + () => globalThis.log.push('unhandled-promise-rejection'); + + globalThis.unreachable = () => globalThis.log.push("unreachable"); + + globalThis.test_load = async_test(description); + globalThis.testDone = globalThis.test_load.step_func_done(() => { + assert_array_equals(globalThis.log, expectedLog); + }); + + if (!('Window' in globalThis && globalThis instanceof Window)) { + // In workers, there are no + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/basic.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/basic.any.js new file mode 100644 index 00000000000..82cb3b215db --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/basic.any.js @@ -0,0 +1,32 @@ +// META: global=window,dedicatedworker,sharedworker +// META: script=ticker.js + +promise_test(async t => { + const getCount = ticker(1000); + + const importP = import(""); + await promise_rejects_js(t, TypeError, importP, 'import() should reject'); + + assert_less_than(getCount(), 1000); +}, "import() should not drain the microtask queue if it fails during specifier resolution"); + +promise_test(async t => { + // Use Date.now() to ensure that the module is not in the module map + const specifier = "./empty-module.js?" + Date.now(); + + await import(specifier); + + const getCount = ticker(1000); + await import(specifier); + assert_less_than(getCount(), 1000); +}, "import() should not drain the microtask queue when loading an already loaded module"); + +promise_test(async t => { + // Use Date.now() to ensure that the module is not in the module map + const specifier = "./empty-module.js?" + Date.now(); + + const getCount = ticker(1e7); + await import(specifier); + assert_equals(getCount(), 1e7); +}, "import() should drain the microtask queue when fetching a new module"); + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/css-import-in-worker.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/css-import-in-worker.any.js new file mode 100644 index 00000000000..bd6f5d092f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/css-import-in-worker.any.js @@ -0,0 +1,14 @@ +// META: global=dedicatedworker,sharedworker +// META: script=ticker.js + +promise_test(async t => { + // Use Date.now() to ensure that the module is not in the module map + const specifier = "./empty-module.css?" + Date.now(); + + const getCount = ticker(1000); + + const importP = import(specifier, { assert: { type: "css" } }); + await promise_rejects_js(t, TypeError, importP, 'import() should reject'); + + assert_less_than(getCount(), 1000); +}, "import() should not drain the microtask queue if it fails because of the 'type: css' assertion in a worker"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/empty-module.css b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/empty-module.css new file mode 100644 index 00000000000..108e7649bdd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/empty-module.css @@ -0,0 +1,4 @@ +/* +This file is empty, because all it matters is if the +dynamic import that loads it fails or succedes. +*/ diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/empty-module.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/empty-module.js new file mode 100644 index 00000000000..108e7649bdd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/empty-module.js @@ -0,0 +1,4 @@ +/* +This file is empty, because all it matters is if the +dynamic import that loads it fails or succedes. +*/ diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/serviceworker.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/serviceworker.any.js new file mode 100644 index 00000000000..4c75cab1b65 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/serviceworker.any.js @@ -0,0 +1,14 @@ +// META: global=serviceworker +// META: script=ticker.js + +promise_test(async t => { + // Use Date.now() to ensure that the module is not in the module map + const specifier = "./empty-module.js?" + Date.now(); + + const getCount = ticker(1000); + + const importP = import(specifier); + await promise_rejects_js(t, TypeError, importP, 'import() should reject'); + + assert_less_than(getCount(), 1000); +}, "import() should not drain the microtask queue if it fails because it's used in a ServiceWorker"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/ticker.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/ticker.js new file mode 100644 index 00000000000..42619b6e700 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/ticker.js @@ -0,0 +1,13 @@ +globalThis.ticker = function ticker(max) { + let i = 0; + let stop = false; + Promise.resolve().then(function loop() { + if (stop || i >= max) return; + i++; + Promise.resolve().then(loop); + }); + return () => { + stop = true; + return i; + }; +}; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/with-import-assertions.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/with-import-assertions.any.js new file mode 100644 index 00000000000..f67ba9a1ae4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/with-import-assertions.any.js @@ -0,0 +1,15 @@ +// META: global=window,dedicatedworker,sharedworker +// META: script=ticker.js + +promise_test(async t => { + // Use Date.now() to ensure that the module is not in the module map + const specifier = "./empty-module.js?" + Date.now(); + + const getCount = ticker(1000); + + const importP = import(specifier, { assert: { type: "" } }); + await promise_rejects_js(t, TypeError, importP, 'import() should reject'); + + assert_less_than(getCount(), 1000); +}, "import() should not drain the microtask queue if it fails while validating the 'type' assertion"); + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/worklet-ref.https.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/worklet-ref.https.html new file mode 100644 index 00000000000..6c598aee393 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/worklet-ref.https.html @@ -0,0 +1,10 @@ + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/worklet.https.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/worklet.https.html new file mode 100644 index 00000000000..5cd59f86dc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/worklet.https.html @@ -0,0 +1,43 @@ + + + + + + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-sharedworker.html deleted file mode 100644 index 77ece9e4922..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-sharedworker.html +++ /dev/null @@ -1,10 +0,0 @@ - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker-setup.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker-setup.mjs deleted file mode 100644 index 24cccd486be..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker-setup.mjs +++ /dev/null @@ -1,6 +0,0 @@ -import "/resources/testharness.js"; -import "./evaluation-order-setup.mjs"; - -import "./evaluation-order-1-nothrow-worker.mjs"; - -import "./evaluation-order-1-nothrow.mjs"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker.html deleted file mode 100644 index 1b7ea09ebdd..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker.html +++ /dev/null @@ -1,10 +0,0 @@ - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker.mjs deleted file mode 100644 index 4d3cf31a79c..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker.mjs +++ /dev/null @@ -1,7 +0,0 @@ -globalThis.expectedLog = [ - "step-1-1", "step-1-2", - "microtask", -]; - -globalThis.test_load.step_timeout(() => globalThis.testDone(), 0); -done(); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow.html deleted file mode 100644 index 080f5ac3bda..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow.html +++ /dev/null @@ -1,19 +0,0 @@ - -Testing evaluation order - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow.mjs deleted file mode 100644 index c1d35beb3e6..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow.mjs +++ /dev/null @@ -1,3 +0,0 @@ -globalThis.log.push("step-1-1"); -queueMicrotask(() => globalThis.log.push("microtask")); -globalThis.log.push("step-1-2"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-sharedworker.html deleted file mode 100644 index cc7f0302bfc..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-sharedworker.html +++ /dev/null @@ -1,10 +0,0 @@ - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker-setup.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker-setup.mjs deleted file mode 100644 index 3971461d2ee..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker-setup.mjs +++ /dev/null @@ -1,6 +0,0 @@ -import "/resources/testharness.js"; -import "./evaluation-order-setup.mjs"; - -import "./evaluation-order-1-worker.mjs"; - -import "./evaluation-order-1.mjs"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker.html deleted file mode 100644 index 0325bb2a30d..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker.html +++ /dev/null @@ -1,10 +0,0 @@ - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker.mjs deleted file mode 100644 index 9be87c72227..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker.mjs +++ /dev/null @@ -1,9 +0,0 @@ -globalThis.expectedLog = [ - "step-1-1", "step-1-2", - "microtask", - "global-error", "error", -]; - -globalThis.test_load.step_timeout(() => globalThis.testDone(), 0); - -done(); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1.html deleted file mode 100644 index 728aded3301..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1.html +++ /dev/null @@ -1,20 +0,0 @@ - -Testing evaluation order - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1.mjs deleted file mode 100644 index 7a437266351..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1.mjs +++ /dev/null @@ -1,5 +0,0 @@ -globalThis.log.push("step-1-1"); -queueMicrotask(() => log.push("microtask")); -globalThis.log.push("step-1-2"); - -throw new Error("error"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-sharedworker.html deleted file mode 100644 index 06456390021..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-sharedworker.html +++ /dev/null @@ -1,10 +0,0 @@ - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker-setup.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker-setup.mjs deleted file mode 100644 index 0cfdca65f08..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker-setup.mjs +++ /dev/null @@ -1,6 +0,0 @@ -import "/resources/testharness.js"; -import "./evaluation-order-setup.mjs"; - -import "./evaluation-order-2-import-worker.mjs"; - -import "./evaluation-order-2.1.mjs"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker.html deleted file mode 100644 index 83070191af9..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker.html +++ /dev/null @@ -1,10 +0,0 @@ - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker.mjs deleted file mode 100644 index 3d9c9bb7497..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker.mjs +++ /dev/null @@ -1,7 +0,0 @@ -globalThis.expectedLog = [ - "step-2.2-1", "step-2.2-2", - "microtask-2.2", - "global-error", "error", -]; - -done(); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import.html deleted file mode 100644 index 1db333cb1cd..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import.html +++ /dev/null @@ -1,20 +0,0 @@ - -Testing evaluation order - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-sharedworker.html deleted file mode 100644 index cd1f5edfa22..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-sharedworker.html +++ /dev/null @@ -1,11 +0,0 @@ - - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker-setup.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker-setup.mjs deleted file mode 100644 index f202cff96a7..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker-setup.mjs +++ /dev/null @@ -1,6 +0,0 @@ -import "/resources/testharness.js"; -import "./evaluation-order-setup.mjs"; - -import "./evaluation-order-3-dynamic-worker.mjs"; - -import "./evaluation-order-3.1.mjs"; \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker.html deleted file mode 100644 index 49731bd4822..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker.html +++ /dev/null @@ -1,11 +0,0 @@ - - -Testing evaluation order - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker.mjs deleted file mode 100644 index 79dabab10b3..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker.mjs +++ /dev/null @@ -1,8 +0,0 @@ -globalThis.expectedLog = [ - "step-3.1-1", "step-3.1-2", "step-3.1-3", - "microtask-3.1", - "step-3.2-1", "step-3.2-2", - "microtask-3.2", - "import-catch", "error", -]; -done(); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic.html deleted file mode 100644 index 6306c0b5cf2..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic.html +++ /dev/null @@ -1,19 +0,0 @@ - -Testing evaluation order - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4-tla.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4-tla.html deleted file mode 100644 index da07faf42d6..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4-tla.html +++ /dev/null @@ -1,33 +0,0 @@ - -Testing evaluation order - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-setup.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-setup.mjs deleted file mode 100644 index d3f22e9ee0f..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-setup.mjs +++ /dev/null @@ -1,19 +0,0 @@ -globalThis.setup({allow_uncaught_exception: true}); - -globalThis.log = []; - -globalThis.addEventListener("error", - event => globalThis.log.push("global-error", event.error.message)); -globalThis.addEventListener("onunhandledrejection", - event => globalThis.log.push('unhandled-promise-rejection')); -globalThis.addEventListener("load", - event => globalThis.log.push("global-load")); - -globalThis.unreachable = function() { - globalThis.log.push("unreachable"); -} - -globalThis.test_load = async_test("Test evaluation order of modules"); -globalThis.testDone = globalThis.test_load.step_func_done(() => { - assert_array_equals(globalThis.log, globalThis.expectedLog); -}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-object.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-object.any.js new file mode 100644 index 00000000000..494e1681023 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-object.any.js @@ -0,0 +1,20 @@ +// META: global=dedicatedworker-module,sharedworker-module,serviceworker-module + +test(() => { + assert_equals(typeof import.meta, "object"); + assert_not_equals(import.meta, null); +}, "import.meta is an object"); + +test(() => { + import.meta.newProperty = 1; + assert_true(Object.isExtensible(import.meta)); +}, "import.meta is extensible"); + +test(() => { + for (const name of Reflect.ownKeys(import.meta)) { + const desc = Object.getOwnPropertyDescriptor(import.meta, name); + assert_equals(desc.writable, true); + assert_equals(desc.enumerable, true); + assert_equals(desc.configurable, true); + } +}, "import.meta's properties are writable, configurable, and enumerable"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-resolve-importmap.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-resolve-importmap.html new file mode 100644 index 00000000000..214b9bb59c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-resolve-importmap.html @@ -0,0 +1,57 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-resolve-multiple-scripts.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-resolve-multiple-scripts.html new file mode 100644 index 00000000000..d2e0f185e0b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-resolve-multiple-scripts.html @@ -0,0 +1,39 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-resolve.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-resolve.any.js new file mode 100644 index 00000000000..5b8a84efaf9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-resolve.any.js @@ -0,0 +1,77 @@ +// META: global=dedicatedworker-module,sharedworker-module,serviceworker-module + +import { importMetaOnRootModule, importMetaOnDependentModule } + from "./import-meta-root.js"; + +test(() => { + assert_equals(typeof import.meta.resolve, "function"); + assert_equals(import.meta.resolve.name, "resolve"); + assert_equals(import.meta.resolve.length, 1); + assert_equals(Object.getPrototypeOf(import.meta.resolve), Function.prototype); +}, "import.meta.resolve is a function with the right properties"); + +test(() => { + assert_false(isConstructor(import.meta.resolve)); + + assert_throws_js(TypeError, () => new import.meta.resolve("./x")); +}, "import.meta.resolve is not a constructor"); + +test(() => { + // See also tests in ./import-meta-resolve-importmap.html. + + assert_equals(import.meta.resolve({ toString() { return "./x"; } }), resolveURL("x")); + assert_throws_js(TypeError, () => import.meta.resolve(Symbol("./x")), + "symbol"); + assert_throws_js(TypeError, () => import.meta.resolve(), + "no argument (which is treated like \"undefined\")"); +}, "import.meta.resolve ToString()s its argument"); + +test(() => { + assert_equals(import.meta.resolve("./x"), resolveURL("x"), + "current module import.meta"); + assert_equals(importMetaOnRootModule.resolve("./x"), resolveURL("x"), + "sibling module import.meta"); + assert_equals(importMetaOnDependentModule.resolve("./x"), resolveURL("x"), + "dependency module import.meta"); +}, "Relative URL-like specifier resolution"); + +test(() => { + assert_equals(import.meta.resolve("https://example.com/"), "https://example.com/", + "current module import.meta"); + assert_equals(importMetaOnRootModule.resolve("https://example.com/"), "https://example.com/", + "sibling module import.meta"); + assert_equals(importMetaOnDependentModule.resolve("https://example.com/"), "https://example.com/", + "dependency module import.meta"); +}, "Absolute URL-like specifier resolution"); + +test(() => { + const invalidSpecifiers = [ + "https://eggplant:b/c", + "pumpkins.js", + ".tomato", + "..zuccini.mjs", + ".\\yam.es" + ]; + + for (const specifier of invalidSpecifiers) { + assert_throws_js(TypeError, () => import.meta.resolve(specifier), specifier); + } +}, "Invalid module specifiers"); + +test(() => { + const { resolve } = import.meta; + assert_equals(resolve("https://example.com/"), "https://example.com/", "current module import.meta"); +}, "Works fine with no this value"); + +function resolveURL(urlRelativeToThisTest) { + return (new URL(urlRelativeToThisTest, location.href)).href; +} + +function isConstructor(o) { + try { + new (new Proxy(o, { construct: () => ({}) })); + return true; + } catch { + return false; + } +} diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.any.js index 82982b4d93c..61d96f35af3 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.any.js +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.any.js @@ -15,26 +15,6 @@ test(() => { base + "/import-meta-dependent.js"); }, "import.meta.url in a dependent external script"); -test(() => { - assert_equals(typeof importMetaOnRootModule, "object"); - assert_not_equals(importMetaOnRootModule, null); -}, "import.meta is an object"); - -test(() => { - importMetaOnRootModule.newProperty = 1; - assert_true(Object.isExtensible(importMetaOnRootModule)); -}, "import.meta is extensible"); - -test(() => { - const names = new Set(Reflect.ownKeys(importMetaOnRootModule)); - for (const name of names) { - var desc = Object.getOwnPropertyDescriptor(importMetaOnRootModule, name); - assert_equals(desc.writable, true); - assert_equals(desc.enumerable, true); - assert_equals(desc.configurable, true); - } -}, "import.meta's properties are writable, configurable, and enumerable"); - import { importMetaOnRootModule as hashedImportMetaOnRootModule1, importMetaOnDependentModule as hashedImportMetaOnDependentModule1 } diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/export-1.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/export-1.mjs new file mode 100644 index 00000000000..aef22247d75 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/export-1.mjs @@ -0,0 +1 @@ +export default 1; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/export-2.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/export-2.mjs new file mode 100644 index 00000000000..842e368a0a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/export-2.mjs @@ -0,0 +1 @@ +export default 2; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/export-import-meta.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/export-import-meta.mjs new file mode 100644 index 00000000000..488ca74c935 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/export-import-meta.mjs @@ -0,0 +1,2 @@ +export const url = import.meta.url; +export const resolve = import.meta.resolve; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/store-import-meta.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/store-import-meta.html new file mode 100644 index 00000000000..c9751da408b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/store-import-meta.html @@ -0,0 +1,5 @@ + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/README.md b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/README.md index eff0df1844c..f95e0a63a32 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/README.md +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/README.md @@ -6,7 +6,7 @@ Use $ tools/generate.py ``` -to generate test HTML files. +to generate test HTML files (except for tests in subdirectories). Background: diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/README.md b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/README.md new file mode 100644 index 00000000000..dcf5597e2da --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/README.md @@ -0,0 +1,6 @@ +The tests in this directory checks side effects (other than script +evaluation/event firing, which is covered by the tests in the parent directory) +caused by scripts moved between Documents. + +The tests assume that script loading is not canceled when moved between +documents (which is not explicitly specified as of Jan 2022). diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-1.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-1.html new file mode 100644 index 00000000000..5c8acd470eb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-1.html @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-2.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-2.html new file mode 100644 index 00000000000..3399a8c001f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-2.html @@ -0,0 +1,14 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-iframe.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-iframe.html new file mode 100644 index 00000000000..38a9a215419 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-iframe.html @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/helper.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/helper.js new file mode 100644 index 00000000000..331cf79bf0b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/helper.js @@ -0,0 +1,31 @@ +function runDelayEventTest(description) { + const t = async_test(description + + ' still delay the load event in the original Document after move'); + const t_new = async_test(description + + ' does not delay the load event in the new Document after move'); + const start_time = performance.now(); + const iframe = document.createElement('iframe'); + iframe.setAttribute('src', 'delay-load-event-iframe.html'); + document.body.appendChild(iframe); + + window.onload = t.step_func_done(() => { + // The `#to-be-moved` script should delay the load event until it is loaded + // (i.e. 3 seconds), not just until it is moved out to another Document + // (i.e. 1 second). Here we expect the delay should be at least 2 seconds, + // as the latency can be slightly less than 3 seconds due to preloading. + assert_greater_than(performance.now() - start_time, 2000, + 'Load event should be delayed until script is loaded'); + }); + + window.onloadIframe = t_new.step_func_done(() => { + // The iframe's load event is fired after 2 seconds of its subresource + // loading, and shouldn't wait for the `#to-be-moved` script. + assert_less_than(performance.now() - start_time, 2500, + 'Load event should not be delayed until moved script is loaded'); + }); + + t.step_timeout(() => { + const script = document.querySelector('#to-be-moved'); + iframe.contentDocument.body.appendChild(script); + }, 1000); +} diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/in-order.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/in-order.html new file mode 100644 index 00000000000..6a3e2b54a77 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/in-order.html @@ -0,0 +1,35 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/parser-blocking.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/parser-blocking.html new file mode 100644 index 00000000000..9edde137367 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/parser-blocking.html @@ -0,0 +1,41 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/script-type-and-language-js.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/script-type-and-language-js.js new file mode 100644 index 00000000000..d357bc49944 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/script-type-and-language-js.js @@ -0,0 +1,141 @@ +function testAttribute(attr, val, shouldRun) { + test(function() { + assert_false(window.ran, "ran variable not reset"); + let script; + if (document.contentType === 'image/svg+xml') { + // SVG + script = document.createElementNS("http://www.w3.org/2000/svg", "script"); + } else { + // HTML or XHTML + script = document.createElement("script"); + } + script.setAttribute(attr, val); + script.textContent = "window.ran = true;"; + document.querySelector('#script-placeholder').appendChild(script); + assert_equals(window.ran, shouldRun); + }, "Script should" + (shouldRun ? "" : "n't") + " run with " + attr + "=" + + format_value(val)); + window.ran = false; +} +function testTypeShouldRun(type) { + testAttribute("type", type, true); +} +function testLanguageShouldRun(lang) { + testAttribute("language", lang, true); +} +function testTypeShouldNotRun(type) { + testAttribute("type", type, false); +} +function testLanguageShouldNotRunUnlessSVG(lang) { + // In SVGs, there is no concrete spec but all browsers agree that + // language attributes have no effects and thus script elements + // without type attributes are always expected to run regardless of + // language attributes. + const expectedToRun = document.contentType === 'image/svg+xml'; + testAttribute("language", lang, expectedToRun); +} + +// Unlike `test*()` methods above, there should be a (parser-inserted) script +// with an invalid type/language that would set `window.ran` to true just +// before `testParserInsertedDidNotRun()`, and +// `testParserInsertedDidNotRun()` asserts that the script did not run. +// `window.ran` should be reset where needed. For example: +// +// +// +function testParserInsertedDidNotRun(description) { + test(() => assert_false(window.ran), + "Script shouldn't run with " + description + " (parser-inserted)"); + window.ran = false; +} + +// When prefixed by "application/", these match with +// https://mimesniff.spec.whatwg.org/#javascript-mime-type +const application = [ + "ecmascript", + "javascript", + "x-ecmascript", + "x-javascript" +]; + +// When prefixed by "text/", these match with +// https://mimesniff.spec.whatwg.org/#javascript-mime-type +const text = [ + "ecmascript", + "javascript", + "javascript1.0", + "javascript1.1", + "javascript1.2", + "javascript1.3", + "javascript1.4", + "javascript1.5", + "jscript", + "livescript", + "x-ecmascript", + "x-javascript" +]; + +const legacyTypes = [ + "javascript1.6", + "javascript1.7", + "javascript1.8", + "javascript1.9" +]; + +const spaces = [" ", "\t", "\n", "\r", "\f"]; + +window.ran = false; + +// Type attribute + +testTypeShouldRun(""); +testTypeShouldNotRun(" "); + +application.map(t => "application/" + t).forEach(testTypeShouldRun); +application.map(t => ("application/" + t).toUpperCase()).forEach( + testTypeShouldRun); + +spaces.forEach(function(s) { + application.map(t => "application/" + t + s).forEach(testTypeShouldRun); + application.map(t => s + "application/" + t).forEach(testTypeShouldRun); +}); + +application.map(t => "application/" + t + "\0").forEach(testTypeShouldNotRun); +application.map(t => "application/" + t + "\0foo").forEach( + testTypeShouldNotRun); + +text.map(t => "text/" + t).forEach(testTypeShouldRun); +text.map(t => ("text/" + t).toUpperCase()).forEach(testTypeShouldRun); + +legacyTypes.map(t => "text/" + t).forEach(testTypeShouldNotRun); + +spaces.forEach(function(s) { + text.map(t => "text/" + t + s).forEach(testTypeShouldRun); + text.map(t => s + "text/" + t).forEach(testTypeShouldRun); +}); + +text.map(t => "text/" + t + "\0").forEach(testTypeShouldNotRun); +text.map(t => "text/" + t + "\0foo").forEach(testTypeShouldNotRun); + +text.forEach(testTypeShouldNotRun); +legacyTypes.forEach(testTypeShouldNotRun); + +// Language attribute + +testLanguageShouldRun(""); +testLanguageShouldNotRunUnlessSVG(" "); + +text.forEach(testLanguageShouldRun); +text.map(t => t.toUpperCase()).forEach(testLanguageShouldRun); + +legacyTypes.forEach(testLanguageShouldNotRunUnlessSVG); + +spaces.forEach(function(s) { + text.map(t => t + s).forEach(testLanguageShouldNotRunUnlessSVG); + text.map(t => s + t).forEach(testLanguageShouldNotRunUnlessSVG); +}); +text.map(t => t + "xyz").forEach(testLanguageShouldNotRunUnlessSVG); +text.map(t => "xyz" + t).forEach(testLanguageShouldNotRunUnlessSVG); + +text.map(t => t + "\0").forEach(testLanguageShouldNotRunUnlessSVG); +text.map(t => t + "\0foo").forEach(testLanguageShouldNotRunUnlessSVG); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-defer-xhtml.xhtml b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-defer-xhtml.xhtml new file mode 100644 index 00000000000..3f4a50f7790 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-defer-xhtml.xhtml @@ -0,0 +1,31 @@ + + + +XHTML Test: HTMLScriptElement - defer + + + + + +
                                                                      + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-referrerpolicy-idl.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-referrerpolicy-idl.html new file mode 100644 index 00000000000..bf01cb83b8c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-referrerpolicy-idl.html @@ -0,0 +1,26 @@ + + +<script> referrerPolicy IDL + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-text-modifications-csp.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-text-modifications-csp.html new file mode 100644 index 00000000000..a9911510661 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-text-modifications-csp.html @@ -0,0 +1,52 @@ + + + +Modify HTMLScriptElement's text after #prepare-a-script that violates CSP + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-text-modifications.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-text-modifications.html index 0ddec6a851f..cb54da6995b 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-text-modifications.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-text-modifications.html @@ -27,17 +27,14 @@ prepare-a-script'ed, but before its evaluation. --> diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js-svg.svg b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js-svg.svg new file mode 100644 index 00000000000..2f31d4d75c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js-svg.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js-xhtml.xhtml b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js-xhtml.xhtml new file mode 100644 index 00000000000..0bfdfce3c4b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js-xhtml.xhtml @@ -0,0 +1,42 @@ + + + +Script @type and @language: JavaScript types + + + + + + + +
                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html index 2f56ade9bee..009123de2b5 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html @@ -5,95 +5,31 @@ -
                                                                      - -var ran = false; - -// Type attribute - -testType(""); -testTypeIgnored(" "); - -application.map(function(t) { return "application/" + t; }).forEach(testType); -application.map(function(t) { return ("application/" + t).toUpperCase(); }).forEach(testType); - -spaces.forEach(function(s) { - application.map(function(t) { return "application/" + t + s; }).forEach(testType); - application.map(function(t) { return s + "application/" + t; }).forEach(testType); -}) - -application.map(function(t) { return "application/" + t + "\0"; }).forEach(testTypeIgnored); -application.map(function(t) { return "application/" + t + "\0foo"; }).forEach(testTypeIgnored); - -text.map(function(t) { return "text/" + t; }).forEach(testType); -text.map(function(t) { return ("text/" + t).toUpperCase(); }).forEach(testType); - -spaces.forEach(function(s) { - text.map(function(t) { return "text/" + t + s; }).forEach(testType); - text.map(function(t) { return s + "text/" + t; }).forEach(testType); -}) - -text.map(function(t) { return "text/" + t + "\0"; }).forEach(testTypeIgnored); -text.map(function(t) { return "text/" + t + "\0foo"; }).forEach(testTypeIgnored); - -// Language attribute - -testLanguage(""); -testLanguageIgnored(" "); - -text.forEach(testLanguage); -text.map(function(t) { return t.toUpperCase(); }).forEach(testLanguage); - -text.map(function(t) { return t + " "; }).forEach(testLanguageIgnored); -text.map(function(t) { return " " + t; }).forEach(testLanguageIgnored); -text.map(function(t) { return t + "xyz"; }).forEach(testLanguageIgnored); -text.map(function(t) { return "xyz" + t; }).forEach(testLanguageIgnored); - -text.map(function(t) { return t + "\0"; }).forEach(testLanguageIgnored); -text.map(function(t) { return t + "\0foo"; }).forEach(testLanguageIgnored); - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/support/script-onerror-insertion-point-2-helper.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/support/script-onerror-insertion-point-2-helper.html index 7a173981562..a9ee80026aa 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/support/script-onerror-insertion-point-2-helper.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/support/script-onerror-insertion-point-2-helper.html @@ -1,2 +1,2 @@ -Some +Some diff --git a/tests/wpt/web-platform-tests/html/semantics/selectors/pseudo-classes/active-disabled.html b/tests/wpt/web-platform-tests/html/semantics/selectors/pseudo-classes/active-disabled.html new file mode 100644 index 00000000000..a75a157c58f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/selectors/pseudo-classes/active-disabled.html @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/syntax/html-element-list.js b/tests/wpt/web-platform-tests/html/syntax/html-element-list.js deleted file mode 100644 index 6eea8d9964f..00000000000 --- a/tests/wpt/web-platform-tests/html/syntax/html-element-list.js +++ /dev/null @@ -1,140 +0,0 @@ -var elements_with_end_tag = [ - "a", - "abbr", - "address", - "article", - "aside", - "audio", - "b", - "bdi", - "bdo", - "blockquote", - "body", - "button", - "canvas", - "caption", - "cite", - "code", - "colgroup", - "command", - "datalist", - "dd", - "del", - "details", - "dfn", - "dialog", - "div", - "dl", - "dt", - "em", - "fieldset", - "figcaption", - "figure", - "footer", - "form", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "head", - "header", - "hgroup", - "html", - "i", - "iframe", - "ins", - "kbd", - "label", - "legend", - "li", - "map", - "mark", - "menu", - "meter", - "nav", - "noscript", - "object", - "ol", - "optgroup", - "option", - "output", - "p", - "pre", - "progress", - "q", - "rp", - "rt", - "ruby", - "s", - "samp", - "script", - "section", - "select", - "small", - "span", - "strong", - "style", - "sub", - "summary", - "sup", - "table", - "tbody", - "td", - "textarea", - "tfoot", - "th", - "thead", - "time", - "title", - "tr", - "u", - "ul", - "var", - "video", - "data", - //"acronym", - //"applet", - //"basefont", - //"bgsound", - //"big", - //"blink", - //"center", - //"dir", - //"font", - //"frame", - //"frameset", - //"isindex", - //"listing", - //"marquee", - //"multicol", - //"nextid", - //"nobr", - //"noembed", - //"noframes", - //"plaintext", - //"rb", - //"spacer", - //"strike", - //"tt", - //"xmp", -]; - -var elements_without_end_tag = [ - "area", - "base", - "br", - "col", - "embed", - "hr", - "img", - "input", - "keygen", - "link", - "meta", - "param", - "source", - "track", - "wbr", -]; diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing-html-fragments/innerHTML-setter-default-namespace.xhtml b/tests/wpt/web-platform-tests/html/syntax/parsing-html-fragments/innerHTML-setter-default-namespace.xhtml new file mode 100644 index 00000000000..19f17f1e28c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/syntax/parsing-html-fragments/innerHTML-setter-default-namespace.xhtml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/inhead-noscript-head.html b/tests/wpt/web-platform-tests/html/syntax/parsing/inhead-noscript-head.html new file mode 100644 index 00000000000..bcf42d4793b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/inhead-noscript-head.html @@ -0,0 +1,17 @@ + + +Test that when the scripting flag is disabled, a head start tag in "in head noscript" mode is ignored + + + + diff --git a/tests/wpt/web-platform-tests/html/syntax/serializing-html-fragments/outerHTML.html b/tests/wpt/web-platform-tests/html/syntax/serializing-html-fragments/outerHTML.html index 2e4805a2021..491bf9e900e 100644 --- a/tests/wpt/web-platform-tests/html/syntax/serializing-html-fragments/outerHTML.html +++ b/tests/wpt/web-platform-tests/html/syntax/serializing-html-fragments/outerHTML.html @@ -7,19 +7,20 @@ - +
                                                                      - +
                                                                      @@ -16,7 +16,8 @@ var doc = document.implementation.createDocument(null, ""); assert_equals(doc.contentType, "application/xml"); var html_ns = "http://www.w3.org/1999/xhtml"; - elements_with_end_tag.forEach(function(ele) { + const non_void_elements = HTML5_ELEMENTS.filter(el => !HTML5_VOID_ELEMENTS.includes(el)); + non_void_elements.forEach(function(ele) { test(function() { var e = doc.createElementNS(html_ns, ele); assert_equals(e.outerHTML, @@ -24,7 +25,7 @@ ele + " node created." ); }, "Node for " + ele); }); - elements_without_end_tag.forEach(function(ele) { + HTML5_VOID_ELEMENTS.forEach(function(ele) { test(function() { var e = doc.createElementNS(html_ns, ele); assert_equals(e.outerHTML, diff --git a/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.html b/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.html new file mode 100644 index 00000000000..a530837392d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.html @@ -0,0 +1,63 @@ + + + + + + + + + + +

                                                                      User activation state in chained setTimeout calls

                                                                      +

                                                                      Tests that user activation state is visible in arbitrary call depth of setTimeout.

                                                                      +
                                                                        +
                                                                      1. Click anywhere in the document. +
                                                                      + diff --git a/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.tentative.html deleted file mode 100644 index b815adab605..00000000000 --- a/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.tentative.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - -

                                                                      User activation state in chained setTimeout calls

                                                                      -

                                                                      Tests that user activation state is visible in arbitrary call depth of setTimeout.

                                                                      -
                                                                        -
                                                                      1. Click anywhere in the document. -
                                                                      - diff --git a/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.html b/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.html new file mode 100644 index 00000000000..d84051cc930 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.html @@ -0,0 +1,114 @@ + + + + + + + + + + + + +

                                                                      User activation consumption across cross-origin frame boundary

                                                                      +

                                                                      Tests that user activation consumption resets the transient states in all cross-origin frames.

                                                                      +
                                                                        +
                                                                      1. Click anywhere on the yellow area. +
                                                                      2. Click anywhere on the green area (child frame). +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.tentative.html deleted file mode 100644 index ebeeb935c06..00000000000 --- a/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.tentative.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - -

                                                                      User activation consumption across cross-origin frame boundary

                                                                      -

                                                                      Tests that user activation consumption resets the transient states in all cross-origin frames.

                                                                      -
                                                                        -
                                                                      1. Click anywhere on the yellow area. -
                                                                      2. Click anywhere on the green area (child frame). -
                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/html/user-activation/consumption-sameorigin.html b/tests/wpt/web-platform-tests/html/user-activation/consumption-sameorigin.html new file mode 100644 index 00000000000..11dafea1646 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/user-activation/consumption-sameorigin.html @@ -0,0 +1,108 @@ + + + + + + + + + + +

                                                                      User activation consumption across same-origin frame boundary

                                                                      +

                                                                      Tests that user activation consumption resets the transient states in all same-origin frames.

                                                                      +
                                                                        +
                                                                      1. Click anywhere on the green area (child frame). +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/user-activation/consumption-sameorigin.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/consumption-sameorigin.tentative.html deleted file mode 100644 index 4ca361c87e0..00000000000 --- a/tests/wpt/web-platform-tests/html/user-activation/consumption-sameorigin.tentative.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - -

                                                                      User activation consumption across same-origin frame boundary

                                                                      -

                                                                      Tests that user activation consumption resets the transient states in all same-origin frames.

                                                                      -
                                                                        -
                                                                      1. Click anywhere on the green area (child frame). -
                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/html/user-activation/detached-iframe.html b/tests/wpt/web-platform-tests/html/user-activation/detached-iframe.html new file mode 100644 index 00000000000..7ef39f723d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/user-activation/detached-iframe.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/user-activation/message-event-init.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/message-event-init.tentative.html index 8e2b1d07014..1f3ef551704 100644 --- a/tests/wpt/web-platform-tests/html/user-activation/message-event-init.tentative.html +++ b/tests/wpt/web-platform-tests/html/user-activation/message-event-init.tentative.html @@ -1,4 +1,8 @@ + MessageEvent constructor diff --git a/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-crossorigin.sub.html b/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-crossorigin.sub.html new file mode 100644 index 00000000000..1645384eee7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-crossorigin.sub.html @@ -0,0 +1,50 @@ + + + + + + + + + + +

                                                                      Post-navigation activation state in child

                                                                      +

                                                                      Tests that navigating a cross-origin child frame resets its activation states.

                                                                      +
                                                                        +
                                                                      1. Click inside the yellow area. +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-crossorigin.sub.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-crossorigin.sub.tentative.html deleted file mode 100644 index 595a12ca70f..00000000000 --- a/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-crossorigin.sub.tentative.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - -

                                                                      Post-navigation activation state in child

                                                                      -

                                                                      Tests that navigating a cross-origin child frame resets its activation states.

                                                                      -
                                                                        -
                                                                      1. Click inside the yellow area. -
                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-sameorigin.html b/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-sameorigin.html new file mode 100644 index 00000000000..9947598fa64 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-sameorigin.html @@ -0,0 +1,49 @@ + + + + + + + + + +

                                                                      Post-navigation activation state in child

                                                                      +

                                                                      Tests that navigating a same-origin child frame resets its activation states.

                                                                      +
                                                                        +
                                                                      1. Click inside the yellow area. +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-sameorigin.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-sameorigin.tentative.html deleted file mode 100644 index 412b01fcb3b..00000000000 --- a/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-sameorigin.tentative.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - -

                                                                      Post-navigation activation state in child

                                                                      -

                                                                      Tests that navigating a same-origin child frame resets its activation states.

                                                                      -
                                                                        -
                                                                      1. Click inside the yellow area. -
                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/html/user-activation/no-activation-thru-escape-key.html b/tests/wpt/web-platform-tests/html/user-activation/no-activation-thru-escape-key.html index 27988d16030..0045e207881 100644 --- a/tests/wpt/web-platform-tests/html/user-activation/no-activation-thru-escape-key.html +++ b/tests/wpt/web-platform-tests/html/user-activation/no-activation-thru-escape-key.html @@ -5,7 +5,7 @@ - + diff --git a/tests/wpt/web-platform-tests/html/user-activation/propagation-crossorigin.sub.html b/tests/wpt/web-platform-tests/html/user-activation/propagation-crossorigin.sub.html new file mode 100644 index 00000000000..5f3bb699281 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/user-activation/propagation-crossorigin.sub.html @@ -0,0 +1,110 @@ + + + + + + + + + + + + +

                                                                      User activation propagation across cross-origin frame boundary

                                                                      +

                                                                      Tests that user activation does not propagate across cross-origin frame boundary.

                                                                      +
                                                                        +
                                                                      1. Click anywhere on the green area (child frame). +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/user-activation/propagation-crossorigin.sub.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/propagation-crossorigin.sub.tentative.html deleted file mode 100644 index 467dfb81b75..00000000000 --- a/tests/wpt/web-platform-tests/html/user-activation/propagation-crossorigin.sub.tentative.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - -

                                                                      User activation propagation across cross-origin frame boundary

                                                                      -

                                                                      Tests that user activation does not propagate across cross-origin frame boundary.

                                                                      -
                                                                        -
                                                                      1. Click anywhere on the green area (child frame). -
                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/html/user-activation/propagation-sameorigin.html b/tests/wpt/web-platform-tests/html/user-activation/propagation-sameorigin.html new file mode 100644 index 00000000000..112563fce75 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/user-activation/propagation-sameorigin.html @@ -0,0 +1,108 @@ + + + + + + + + + + +

                                                                      User activation propagation across same-origin frame boundary

                                                                      +

                                                                      Tests that user activation propagates across same-origin frame boundary.

                                                                      +
                                                                        +
                                                                      1. Click anywhere on the green area (child frame). +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/html/user-activation/propagation-sameorigin.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/propagation-sameorigin.tentative.html deleted file mode 100644 index 97c9077d5d9..00000000000 --- a/tests/wpt/web-platform-tests/html/user-activation/propagation-sameorigin.tentative.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - -

                                                                      User activation propagation across same-origin frame boundary

                                                                      -

                                                                      Tests that user activation propagates across same-origin frame boundary.

                                                                      -
                                                                        -
                                                                      1. Click anywhere on the green area (child frame). -
                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/html/user-activation/user-activation-interface.html b/tests/wpt/web-platform-tests/html/user-activation/user-activation-interface.html new file mode 100644 index 00000000000..cd808e010d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/user-activation/user-activation-interface.html @@ -0,0 +1,30 @@ + + + + + + + + + + +

                                                                      Basic test for navigator.userActivation interface

                                                                      +

                                                                      Tests that navigator.userActivation shows user activation states.

                                                                      +
                                                                        +
                                                                      1. Click anywhere in the document. +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/crbug-583445-regression.window.js b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/crbug-583445-regression.window.js new file mode 100644 index 00000000000..3809c2e081a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/crbug-583445-regression.window.js @@ -0,0 +1,127 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// +// This is a regression test for crbug.com/583445. It checks an obscure bug in +// Chromium's handling of `document.open()` whereby the URL change would affect +// the document's origin after a javascript navigation. +// +// See also dcheng@'s comments on the original code review in which he +// introduced the precursor to this test: +// https://codereview.chromium.org/1675473002. + +function nextMessage() { + return new Promise((resolve) => { + window.addEventListener("message", (e) => { resolve(e.data); }, { + once: true + }); + }); +} + +promise_test(async (t) => { + // Embed a cross-origin frame A and set up remote code execution. + const iframeA = document.body.appendChild(document.createElement("iframe")); + t.add_cleanup(() => { iframeA.remove(); }); + + const uuidA = token(); + iframeA.src = remoteExecutorUrl(uuidA, { host: get_host_info().REMOTE_HOST }); + const ctxA = new RemoteContext(uuidA); + + // Frame A embeds a cross-origin frame B, which is same-origin with the + // top-level frame. Frame B is the center of this test: it is where we will + // verify that a bug does not grant it UXSS in frame A. + // + // Though we could reach into `iframeA.frames[0]` to get a proxy to frame B + // and use `setTimeout()` like below to execute code inside it, we set up + // remote code execution using `dispatcher.js` for better ergonomics. + const uuidB = token(); + await ctxA.execute_script((url) => { + const iframeB = document.createElement("iframe"); + iframeB.src = url; + document.body.appendChild(iframeB); + }, [remoteExecutorUrl(uuidB).href]); + + // Start listening for a message, which will come as a result of executing + // the code below in frame B. + const message = nextMessage(); + + const ctxB = new RemoteContext(uuidB); + await ctxB.execute_script(() => { + // Frame B embeds an `about:blank` frame C. + const iframeC = document.body.appendChild(document.createElement("iframe")); + + // We wish to execute code inside frame C, but it is important to this test + // that its URL remain `about:blank`, so we cannot use `dispatcher.js`. + // Instead we rely on `setTimeout()`. + // + // We use `setTimeout(string, ...)` instead of `setTimeout(function, ...)` + // as the given script executes against the target window's global object + // and does not capture any local variables. + // + // In order to have nice syntax highlighting and avoid quote-escaping hell, + // we use a trick employed by `dispatcher.js`. We rely on the fact that + // functions in JS have a stringifier that returns their source code. Thus + // `"(" + func + ")()"` is a string that executes `func()` when evaluated. + iframeC.contentWindow.setTimeout("(" + (() => { + // This executes in frame C. + + // Frame C calls `document.open()` on its parent, which results in B's + // URL being set to `about:blank` (C's URL). + // + // However, just before `document.open()` is called, B schedules a + // self-navigation to a `javascript:` URL. This will occur after + // `document.open()`, so the document will navigate from `about:blank` to + // the new URL. + // + // This should not result in B's origin changing, so B should remain + // same-origin with the top-level frame. + // + // Due to crbug.com/583445, this used to behave wrongly in Chromium. The + // navigation code incorrectly assumed that B's origin should be inherited + // from its parent A because B's URL was `about:blank`. + // + // It is important to schedule this from within the child, as this + // guarantees that `document.open()` will be called before the navigation. + // A previous version of this test scheduled this from within frame B + // right after scheduling the call to `document.open()`, but that ran the + // risk of races depending on which timeout fired first. + parent.window.setTimeout("(" + (() => { + // This executes in frame B. + + location = "javascript:(" + (() => { + /* This also executes in frame B. + * + * Note that because this whole function gets stuffed in a JS URL, + * single-line comments do not work, as they affect the following + * lines. */ + + let error; + try { + /* This will fail with a `SecurityError` if frame B is no longer + * same-origin with the top-level frame. */ + top.window.testSameOrigin = true; + } catch (e) { + error = e; + } + + top.postMessage({ + error: error?.toString(), + }, "*"); + + }) + ")()"; + + }) + ")()", 0); + + // This executes in frame C. + parent.document.open(); + + }) + ")()", 0); + }); + + // Await the message from frame B after its navigation. + const { error } = await message; + assert_equals(error, undefined, "error accessing top frame from frame B"); + assert_true(window.testSameOrigin, "top frame testSameOrigin is mutated"); + +}, "Regression test for crbug.com/583445"); + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/event-handler-processing-algorithm-error/document-synthetic-errorevent.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/event-handler-processing-algorithm-error/document-synthetic-errorevent.html index 8b1b3cfb5b2..4165beaf63d 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/event-handler-processing-algorithm-error/document-synthetic-errorevent.html +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/event-handler-processing-algorithm-error/document-synthetic-errorevent.html @@ -21,10 +21,40 @@ promise_test(t => { const eventWatcher = new EventWatcher(t, document, "error"); const promise = eventWatcher.wait_for("error").then(e => { assert_equals(e.defaultPrevented, false); + assert_equals(e.message, ""); + assert_equals(e.filename, ""); + assert_equals(e.lineno, 0); + assert_equals(e.colno, 0); + assert_equals(e.error, undefined); }); document.dispatchEvent(new ErrorEvent("error", { cancelable: true })); return promise; }, "error event is normal (return true does not cancel; one arg) on Document, with a synthetic ErrorEvent"); + +test(() => { + const e = new ErrorEvent("error"); + assert_equals(e.message, ""); + assert_equals(e.filename, ""); + assert_equals(e.lineno, 0); + assert_equals(e.colno, 0); + assert_equals(e.error, undefined); +}, "Initial values of ErrorEvent members") + +test(() => { + const e = new ErrorEvent("error", {error : null}); + assert_equals(e.error, null); +}, "error member can be set to null") + +test(() => { + const e = new ErrorEvent("error", {error : undefined}); + assert_equals(e.error, undefined); +}, "error member can be set to undefined") + +test(() => { + const e = new ErrorEvent("error", {error : "foo"}); + assert_equals(e.error, "foo"); +}, "error member can be set to arbitrary") + diff --git a/tests/wpt/web-platform-tests/html/webappapis/structured-clone/structured-clone-battery-of-tests.js b/tests/wpt/web-platform-tests/html/webappapis/structured-clone/structured-clone-battery-of-tests.js index 301cda5e38f..580a81aaea6 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/structured-clone/structured-clone-battery-of-tests.js +++ b/tests/wpt/web-platform-tests/html/webappapis/structured-clone/structured-clone-battery-of-tests.js @@ -254,6 +254,27 @@ check('Object RegExp object, RegExp empty', {'x':new RegExp('')}, compare_Object check('Object RegExp object, RegExp slash', {'x':new RegExp('/')}, compare_Object(enumerate_props(compare_RegExp('\\/')))); check('Object RegExp object, RegExp new line', {'x':new RegExp('\n')}, compare_Object(enumerate_props(compare_RegExp('\\n')))); +function compare_Error(actual, input) { + assert_true(actual instanceof Error, "Checking instanceof"); + assert_equals(actual.constructor, input.constructor, "Checking constructor"); + assert_equals(actual.name, input.name, "Checking name"); + assert_equals(actual.hasOwnProperty("message"), input.hasOwnProperty("message"), "Checking message existence"); + assert_equals(actual.message, input.message, "Checking message"); + assert_equals(actual.foo, undefined, "Checking for absence of custom property"); +} + +check('Empty Error object', new Error, compare_Error); + +const errorConstructors = [Error, EvalError, RangeError, ReferenceError, + SyntaxError, TypeError, URIError]; +for (const constructor of errorConstructors) { + check(`${constructor.name} object`, () => { + let error = new constructor("Error message here"); + error.foo = "testing"; + return error; + }, compare_Error); +} + async function compare_Blob(actual, input, expect_File) { if (typeof actual === 'string') assert_unreached(actual); @@ -481,6 +502,23 @@ check('Object with non-configurable property', function() { return rv; }, compare_Object(check_configurable_property('foo'))); +structuredCloneBatteryOfTests.push({ + description: 'Object with a getter that throws', + async f(runner, t) { + const exception = new Error(); + const testObject = { + get testProperty() { + throw exception; + } + }; + await promise_rejects_exactly( + t, + exception, + runner.structuredClone(testObject) + ); + } +}); + /* The tests below are inspired by @zcorpan’s work but got some more substantial changed due to their previous async setup */ diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html index bfb9276f367..b015d24e503 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html +++ b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html @@ -18,7 +18,7 @@ assert_equals(typeof brandVersionPair.version, "string", "version should be a string"); } assert_equals(typeof uaData.mobile, "boolean", "mobile should be a boolean"); - const highEntropyData = await uaData.getHighEntropyValues(["platform", "platformVersion", "architecture", "model", "uaFullVersion", "fullVersionList"]); + const highEntropyData = await uaData.getHighEntropyValues(["platformVersion", "architecture", "model", "uaFullVersion", "fullVersionList"]); assert_equals(typeof highEntropyData["platform"], "string", "Platform brand should be a string"); assert_equals(typeof highEntropyData["platformVersion"], "string", "Platform version should be a string"); assert_equals(typeof highEntropyData["architecture"], "string", "Architecture should be a string"); @@ -30,7 +30,7 @@ assert_equals(typeof brandVersionPair.version, "string", "version should be a string"); } const highEntropyData2 = await uaData.getHighEntropyValues([]); - assert_false("platform" in highEntropyData2, "Platform brand should be an empty string"); + assert_equals(typeof highEntropyData["platform"], "string", "Platform brand should be a string"); assert_false("platformVersion" in highEntropyData2, "Platform version should be an empty string"); assert_false("architecture" in highEntropyData2, "Architecture should be an empty string"); assert_false("model" in highEntropyData2, "Model should be an empty string"); diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/resources/handler-tools.js b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/resources/handler-tools.js index 073287265cf..88c62ec373d 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/resources/handler-tools.js +++ b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/resources/handler-tools.js @@ -41,7 +41,7 @@ function runTest({ includeNull = false } = {}) { resultingURL = e.data; assert_equals(stringBetweenMarkers(resultingURL, "QES", "QEE"), "%86", "query baseline"); assert_equals(stringBetweenMarkers(resultingURL, "FES", "FEE"), "%E2%80%A0", "fragment baseline"); - assert_equals(stringBetweenMarkers(resultingURL, "PSS", "PSE"), `${encodeURIComponent(scheme)}%3A${includeNull ? "%2500" : ""}%2501%2502%2503%2504%2505%2506%2507%2508%250B%250C%250E%250F%2510%2511%2512%2513%2514%2515%2516%2517%2518%2519%251A%251B%251C%251D%251E%251F%20!%22%23%24%25%26${type === "query" ? "%27" : "'"}()*%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%257F%25C2%2580%25C2%2581`, "actual test"); + assert_equals(stringBetweenMarkers(resultingURL, "PSS", "PSE"), `${encodeURIComponent(scheme)}%3A${includeNull ? "%2500" : ""}%2501%2502%2503%2504%2505%2506%2507%2508%250B%250C%250E%250F%2510%2511%2512%2513%2514%2515%2516%2517%2518%2519%251A%251B%251C%251D%251E%251F%20!%22%23%24%25%26${type === "query" ? "%27" : "'"}()*%2B%2C-.%2F0123456789%3A%3B%253C%3D%253E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%2560abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%257F%25C2%2580%25C2%2581`, "actual test"); resolve(); }); }); diff --git a/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html b/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html index 1d561f827cf..644ed0fc75f 100644 --- a/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html +++ b/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html @@ -210,13 +210,13 @@ promise_test(async t => { }); const controller = new AbortController(); - const detector = new IdleDetector(); + const detector = new IdleDetector({ signal: controller.signal }); const watcher = new EventWatcher(t, detector, ["change"]); const initial_state = watcher.wait_for("change"); // Only the first call to start() is allowed. - const start_promise = detector.start(); + const start_promise = detector.start({ signal: controller.signal }); await promise_rejects_dom(t, 'InvalidStateError', detector.start()); await start_promise; @@ -229,7 +229,7 @@ promise_test(async t => { controller.abort(); controller.abort(); controller.abort(); -}, 'Safe to call start() or stop() multiple times'); +}, 'Calling start() and abort() multiple times'); promise_test(async t => { expect(addMonitor).andReturn(async (monitorPtr) => { @@ -245,12 +245,64 @@ promise_test(async t => { const controller = new AbortController(); const detector = new IdleDetector(); - // Calling abort() before start() causes start() to fail. controller.abort(); await promise_rejects_dom( t, 'AbortError', detector.start({ signal: controller.signal })); -}, 'Calling stop() after start() is a no-op'); +}, 'Calling abort() before start() makes it fail'); + +promise_test(async t => { + expect(addMonitor).andReturn(async (monitorPtr) => { + return { + error: IdleDetectorError.SUCCESS, + state: { + idleTime: null, + screenLocked: false + } + }; + }); + + const controller = new AbortController(); + const detector = new IdleDetector(); + + const promise = promise_rejects_dom( + t, 'AbortError', detector.start({ signal: controller.signal })) + controller.abort(); + + await promise; +}, 'Calling abort() after start() makes it fail'); + +promise_test(async t => { + expect(addMonitor).andReturn(async (monitorPtr) => { + return { + error: IdleDetectorError.SUCCESS, + state: { + idleTime: null, + screenLocked: false + } + }; + }); + + const detector = new IdleDetector(); + const watcher = new EventWatcher(t, detector, ["change"]); + + let controller = new AbortController(); + const first_start = promise_rejects_dom( + t, 'AbortError', detector.start({ signal: controller.signal })) + controller.abort(); + + controller = new AbortController(); + const initial_state = watcher.wait_for("change"); + const second_start = detector.start({ signal: controller.signal }); + + await first_start; + await second_start; + await initial_state; + assert_equals(detector.userState, "active"); + assert_equals(detector.screenState, "unlocked"); + + controller.abort(); +}, 'A start() that has been aborted can be retried'); promise_test(async t => { expect(addMonitor).andReturn(async (monitorPtr) => { @@ -270,6 +322,8 @@ promise_test(async t => { await detector.start({ signal: controller.signal }); await initial_state; + assert_equals(detector.userState, "active"); + assert_equals(detector.screenState, "unlocked"); controller.abort(); @@ -292,7 +346,33 @@ promise_test(async t => { assert_equals(detector.userState, "idle"); assert_equals(detector.screenState, "locked"); + // Abort in a new task and restart the monitor again. + const p = new Promise((resolve) => { + t.step_timeout(resolve, 1); + }); + await p; controller.abort(); -}, 'Calling start() after stop(): re-starting monitor.'); + + expect(addMonitor).andReturn(async (monitorPtr) => { + return { + error: IdleDetectorError.SUCCESS, + state: { + idleTime: { milliseconds: 0 }, + screenLocked: false + } + }; + }); + + // Restarting the monitor. + controller = new AbortController(); + + initial_state = watcher.wait_for("change"); + await detector.start({ signal: controller.signal }); + await initial_state; + assert_equals(detector.userState, "idle"); + assert_equals(detector.screenState, "unlocked"); + + controller.abort(); +}, 'Calling start() after abort(): re-starting monitor.'); diff --git a/tests/wpt/web-platform-tests/images/100px-green-rect.svg b/tests/wpt/web-platform-tests/images/100px-green-rect.svg new file mode 100644 index 00000000000..c391055bc27 --- /dev/null +++ b/tests/wpt/web-platform-tests/images/100px-green-rect.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/images/animated-avif.avif b/tests/wpt/web-platform-tests/images/animated-avif.avif new file mode 100644 index 00000000000..eb8b5152a01 Binary files /dev/null and b/tests/wpt/web-platform-tests/images/animated-avif.avif differ diff --git a/tests/wpt/web-platform-tests/images/broken.png b/tests/wpt/web-platform-tests/images/broken.png index f2581017b43..2ff648a0490 100644 Binary files a/tests/wpt/web-platform-tests/images/broken.png and b/tests/wpt/web-platform-tests/images/broken.png differ diff --git a/tests/wpt/web-platform-tests/images/green.avif b/tests/wpt/web-platform-tests/images/green.avif new file mode 100644 index 00000000000..a58aff3956e Binary files /dev/null and b/tests/wpt/web-platform-tests/images/green.avif differ diff --git a/tests/wpt/web-platform-tests/images/pattern-nosize.svg b/tests/wpt/web-platform-tests/images/pattern-nosize.svg new file mode 100644 index 00000000000..788e156a884 --- /dev/null +++ b/tests/wpt/web-platform-tests/images/pattern-nosize.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/images/undecodable.png b/tests/wpt/web-platform-tests/images/undecodable.png new file mode 100644 index 00000000000..f2581017b43 Binary files /dev/null and b/tests/wpt/web-platform-tests/images/undecodable.png differ diff --git a/tests/wpt/web-platform-tests/import-maps/acquiring/modulepreload-link-header.html b/tests/wpt/web-platform-tests/import-maps/acquiring/modulepreload-link-header.html new file mode 100644 index 00000000000..dde8cabb932 --- /dev/null +++ b/tests/wpt/web-platform-tests/import-maps/acquiring/modulepreload-link-header.html @@ -0,0 +1,23 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/import-maps/acquiring/modulepreload-link-header.html.headers b/tests/wpt/web-platform-tests/import-maps/acquiring/modulepreload-link-header.html.headers new file mode 100644 index 00000000000..bb81a4c569e --- /dev/null +++ b/tests/wpt/web-platform-tests/import-maps/acquiring/modulepreload-link-header.html.headers @@ -0,0 +1 @@ +Link: <../resources/empty.js?pipe=trickle(d1)>;rel=modulepreload diff --git a/tests/wpt/web-platform-tests/import-maps/acquiring/modulepreload.html b/tests/wpt/web-platform-tests/import-maps/acquiring/modulepreload.html new file mode 100644 index 00000000000..68b66a8ae33 --- /dev/null +++ b/tests/wpt/web-platform-tests/import-maps/acquiring/modulepreload.html @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/import-maps/acquiring/script-tag-inline.html b/tests/wpt/web-platform-tests/import-maps/acquiring/script-tag-inline.html new file mode 100644 index 00000000000..683ce83c3a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/import-maps/acquiring/script-tag-inline.html @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/import-maps/data-driven/README.md b/tests/wpt/web-platform-tests/import-maps/data-driven/README.md index 60c415f1863..abf059e4681 100644 --- a/tests/wpt/web-platform-tests/import-maps/data-driven/README.md +++ b/tests/wpt/web-platform-tests/import-maps/data-driven/README.md @@ -1,16 +1,14 @@ # Data-driven import maps tests In this directory, test inputs and expectations are expressed as JSON files. -This is in order to share the same JSON files between WPT tests and Jest-based -tests for the reference JavaScript implementation at [WICG repository](https://github.com/WICG/import-maps/tree/master/reference-implementation). +This is in order to share the same JSON files between WPT tests and other +implementations that might not run the full WPT suite, e.g. server-side +JavaScript runtimes or the [JavaScript reference implementation](https://github.com/WICG/import-maps/tree/master/reference-implementation). ## Basics A **test object** describes a set of parameters (import maps and base URLs) and test expectations. -Test expectations can be: - -- Expected resulting URLs for specifiers (resolution tests), or -- Expected parsed import maps (parsing tests). +Test expectations consist of the expected resulting URLs for specifiers. Each JSON file under [resources/](resources/) directory consists of a test object. A minimum test object would be: @@ -38,11 +36,10 @@ Required fields: - In WPT tests, this is used for the test name of `promise_test()` together with specifier to be resolved, like `"Main test name: a"`. - `importMap` (object or string): the import map to be attached. - `importMapBaseURL` (string): the base URL used for [parsing the import map](https://wicg.github.io/import-maps/#parse-an-import-map-string). -- (resolution tests only) `expectedResults` (object; string to (string or null)): resolution test cases. +- `expectedResults` (object; string to (string or null)): resolution test cases. - The keys are specifiers to be resolved. - The values are expected resolved URLs. If `null`, resolution should fail. -- (resolution tests only) `baseURL` (string): the base URL used in [resolving a specifier](https://wicg.github.io/import-maps/#resolve-a-module-specifier) for each specifiers. -- (parsing tests only) `expectedParsedImportMap` (object): the expected parsed import map for parsing test cases. +- `baseURL` (string): the base URL used in [resolving a specifier](https://wicg.github.io/import-maps/#resolve-a-module-specifier) for each specifiers. Optional fields: @@ -83,3 +80,8 @@ The top-level test object contains two sub test objects, named as `Subtest1` and Child test objects inherit fields from their parent test object. In the example above, the child test objects specifies `baseURL` fields, while they inherits other fields (e.g. `importMapBaseURL`) from the top-level test object. + +## TODO + +The `parsing-*.json` files are not currently used by the WPT harness. We should +convert them to resolution tests. diff --git a/tests/wpt/web-platform-tests/import-maps/data-driven/parsing-internal.https.html b/tests/wpt/web-platform-tests/import-maps/data-driven/parsing-internal.https.html deleted file mode 100644 index 7d45ae8c33b..00000000000 --- a/tests/wpt/web-platform-tests/import-maps/data-driven/parsing-internal.https.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/import-maps/data-driven/resolving-internal.https.html b/tests/wpt/web-platform-tests/import-maps/data-driven/resolving-internal.https.html deleted file mode 100644 index d75bebba475..00000000000 --- a/tests/wpt/web-platform-tests/import-maps/data-driven/resolving-internal.https.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/import-maps/data-driven/resolving.html b/tests/wpt/web-platform-tests/import-maps/data-driven/resolving.html new file mode 100644 index 00000000000..bcf3d1de7e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/import-maps/data-driven/resolving.html @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/import-maps/data-driven/resolving.https.html b/tests/wpt/web-platform-tests/import-maps/data-driven/resolving.https.html deleted file mode 100644 index 40b7ef5dae5..00000000000 --- a/tests/wpt/web-platform-tests/import-maps/data-driven/resolving.https.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - diff --git a/tests/wpt/web-platform-tests/import-maps/data-driven/resources/data-base-url.json b/tests/wpt/web-platform-tests/import-maps/data-driven/resources/data-base-url.json deleted file mode 100644 index 81fcf087425..00000000000 --- a/tests/wpt/web-platform-tests/import-maps/data-driven/resources/data-base-url.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "importMap": { - "imports": { - "foo/": "data:text/javascript,foo/" - } - }, - "importMapBaseURL": "https://example.com/app/index.html", - "baseURL": "https://example.com/js/app.mjs", - "name": "data: base URL (?)", - "tests": { - "should favor the most-specific key": { - "expectedResults": { - "foo/bar": null - } - } - } -} diff --git a/tests/wpt/web-platform-tests/import-maps/data-driven/resources/data-url-prefix.json b/tests/wpt/web-platform-tests/import-maps/data-driven/resources/data-url-prefix.json new file mode 100644 index 00000000000..980f6e005f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/import-maps/data-driven/resources/data-url-prefix.json @@ -0,0 +1,17 @@ +{ + "importMap": { + "imports": { + "foo/": "data:text/javascript,foo/" + } + }, + "importMapBaseURL": "https://example.com/app/index.html", + "baseURL": "https://example.com/js/app.mjs", + "name": "data: URL prefix", + "tests": { + "should not resolve since you can't resolve relative to a data: URL": { + "expectedResults": { + "foo/bar": null + } + } + } +} diff --git a/tests/wpt/web-platform-tests/import-maps/data-driven/resources/empty-import-map-internal.json b/tests/wpt/web-platform-tests/import-maps/data-driven/resources/empty-import-map-internal.json deleted file mode 100644 index 42033a2c079..00000000000 --- a/tests/wpt/web-platform-tests/import-maps/data-driven/resources/empty-import-map-internal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "importMap": {}, - "importMapBaseURL": "https://example.com/app/index.html", - "baseURL": "https://example.com/js/app.mjs", - "tests": { - "non-HTTPS fetch scheme absolute URLs": { - "expectedResults": { - "about:fetch-scheme": "about:fetch-scheme" - } - }, - "non-fetch scheme absolute URLs": { - "expectedResults": { - "about:fetch-scheme": "about:fetch-scheme", - "mailto:non-fetch-scheme": "mailto:non-fetch-scheme", - "import:non-fetch-scheme": "import:non-fetch-scheme", - "javascript:non-fetch-scheme": "javascript:non-fetch-scheme", - "wss:non-fetch-scheme": "wss://non-fetch-scheme/" - } - } - } -} diff --git a/tests/wpt/web-platform-tests/import-maps/data-driven/resources/empty-import-map.json b/tests/wpt/web-platform-tests/import-maps/data-driven/resources/empty-import-map.json index ff85a6d69d5..f488759aa4a 100644 --- a/tests/wpt/web-platform-tests/import-maps/data-driven/resources/empty-import-map.json +++ b/tests/wpt/web-platform-tests/import-maps/data-driven/resources/empty-import-map.json @@ -42,6 +42,20 @@ "https://invalid-url.com:demo": null, "http://[invalid-url.com]/": null } + }, + "non-HTTPS fetch scheme absolute URLs": { + "expectedResults": { + "about:fetch-scheme": "about:fetch-scheme" + } + }, + "non-fetch scheme absolute URLs": { + "expectedResults": { + "about:fetch-scheme": "about:fetch-scheme", + "mailto:non-fetch-scheme": "mailto:non-fetch-scheme", + "import:non-fetch-scheme": "import:non-fetch-scheme", + "javascript:non-fetch-scheme": "javascript:non-fetch-scheme", + "wss:non-fetch-scheme": "wss://non-fetch-scheme/" + } } } } diff --git a/tests/wpt/web-platform-tests/import-maps/data-driven/resources/test-helper-iframe.js b/tests/wpt/web-platform-tests/import-maps/data-driven/resources/test-helper-iframe.js index 597955fea1f..3f38a5f0faa 100644 --- a/tests/wpt/web-platform-tests/import-maps/data-driven/resources/test-helper-iframe.js +++ b/tests/wpt/web-platform-tests/import-maps/data-driven/resources/test-helper-iframe.js @@ -1,5 +1,5 @@ // Handle errors around fetching, parsing and registering import maps. -const onScriptError = event => { +window.onScriptError = event => { window.registrationResult = {type: 'FetchError', error: event.error}; return false; }; @@ -14,90 +14,33 @@ window.addEventListener('error', window.windowErrorHandler); // objects themselves and re-create error objects later, to avoid // issues around serializing error objects which is a quite new feature. window.addEventListener('message', event => { - if (event.data.action === 'prepareResolve') { - // To get the result of #resolve-a-module-specifier given a script - // (with base URL = |baseURL|) and |specifier|, the service worker - // first serves an importer script with response URL = |baseURL|: - // window.importHelper = (specifier) => import(specifier); - // This is to use |baseURL| as the referringScript's base URL. - - // Step 1. Signal the service worker to serve - // the importer script for the next fetch request. - parent.worker.postMessage('serveImporterScript'); - } else if (event.data.action === 'resolve') { - if (event.data.expectedURL === null || - new URL(event.data.expectedURL).protocol === 'https:') { - // Testing without internal methods: - // If the resolution is expected to fail (null case here), - // we can test the failure just by catching the exception. - // If the expected URL is HTTPS, we can test the result by - // intercepting requests by service workers. - - // Step 3. Evaluate the importer script as a classic script, - // in order to prevent |baseURL| from being mapped by import maps. - const script = document.createElement('script'); - script.onload = () => { - // Step 4. Trigger dynamic import from |baseURL|. - importHelper(event.data.specifier) - .then(module => { - // Step 5. Service worker responds with a JSON containing - // the request URL for the dynamic import - // (= the result of #resolve-a-module-specifier). - parent.postMessage({type: 'ResolutionSuccess', - result: module.response.url}, - '*'); - }) - .catch(e => { - parent.postMessage( - {type: 'Failure', result: e.name, message: e.message}, - '*'); - }); - }; - script.src = event.data.baseURL; - document.body.appendChild(script); - } else { - // Testing with internal methods. - // For example, the resolution results are data: URLs. - if (!event.data.useInternalMethods) { - parent.postMessage( - {type: 'Failure', - result: 'Error', - message: 'internals.resolveModuleSpecifier is not available'}, - '*'); - return; - } - try { - const result = internals.resolveModuleSpecifier( - event.data.specifier, - event.data.baseURL, - document); - parent.postMessage( - {type: 'ResolutionSuccess', result: result}, '*'); - } catch (e) { - parent.postMessage( - {type: 'Failure', result: e.name, message: e.message}, '*'); - } - } - } else if (event.data.action === 'getParsedImportMap') { - if (!event.data.useInternalMethods) { - parent.postMessage( - {type: 'Failure', - result: 'Error', - message: 'internals.getParsedImportMap is not available'}, - '*'); - } - try { - parent.postMessage({ - type: 'GetParsedImportMapSuccess', - result: internals.getParsedImportMap(document)}, '*'); - } catch (e) { - parent.postMessage( - {type: 'Failure', result: e.name, message: e.message}, '*'); - } - } else { + if (event.data.action !== 'resolve') { parent.postMessage({ type: 'Failure', result: 'Error', message: 'Invalid Action: ' + event.data.action}, '*'); + return; } + + // To respond to a resolution request, we: + // 1. Save the specifier to resolve into a global. + // 2. Update the document's base URL to the requested base URL. + // 3. Create a new inline script, parsed with that base URL, which + // resolves the saved specifier using import.meta.resolve(), and + // sents the result to the parent window. + window.specifierToResolve = event.data.specifier; + document.querySelector('base').href = event.data.baseURL; + + const inlineScript = document.createElement('script'); + inlineScript.type = 'module'; + inlineScript.textContent = ` + try { + const result = import.meta.resolve(window.specifierToResolve); + parent.postMessage({type: 'ResolutionSuccess', result}, '*'); + } catch (e) { + parent.postMessage( + {type: 'Failure', result: e.name, message: e.message}, '*'); + } + `; + document.body.append(inlineScript); }); diff --git a/tests/wpt/web-platform-tests/import-maps/data-driven/resources/test-helper.js b/tests/wpt/web-platform-tests/import-maps/data-driven/resources/test-helper.js index 579fd52da8c..e89b639ca04 100644 --- a/tests/wpt/web-platform-tests/import-maps/data-driven/resources/test-helper.js +++ b/tests/wpt/web-platform-tests/import-maps/data-driven/resources/test-helper.js @@ -1,31 +1,8 @@ setup({allow_uncaught_exception : true}); -// Set window.useInternalMethods = true when needed && available. - -let registration; -const scope = './scope/'; - -// Global setup: this must be the first promise_test. -promise_test(async (t) => { - const script = 'service-worker.js'; - - registration = - await service_worker_unregister_and_register(t, script, scope); - window.worker = registration.installing; - await wait_for_state(t, window.worker, 'activated'); -}, 'global setup'); - -export function setupGlobalCleanup() { - // Global cleanup: the final promise_test. - promise_test(() => { - return registration.unregister(); - }, 'global cleanup'); -} - // Creates a new Document (via +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/inert/inert-iframe-tabbing.html b/tests/wpt/web-platform-tests/inert/inert-iframe-tabbing.html new file mode 100644 index 00000000000..a0146b74cc2 --- /dev/null +++ b/tests/wpt/web-platform-tests/inert/inert-iframe-tabbing.html @@ -0,0 +1,123 @@ + + +Tabbing with inert iframe + + + + + + + + + +
                                                                      before
                                                                      +
                                                                      + +
                                                                      +
                                                                      after + + diff --git a/tests/wpt/web-platform-tests/inert/inert-in-shadow-dom.tentative.html b/tests/wpt/web-platform-tests/inert/inert-in-shadow-dom.html similarity index 100% rename from tests/wpt/web-platform-tests/inert/inert-in-shadow-dom.tentative.html rename to tests/wpt/web-platform-tests/inert/inert-in-shadow-dom.html diff --git a/tests/wpt/web-platform-tests/inert/inert-inlines.tentative.html b/tests/wpt/web-platform-tests/inert/inert-inlines.html similarity index 100% rename from tests/wpt/web-platform-tests/inert/inert-inlines.tentative.html rename to tests/wpt/web-platform-tests/inert/inert-inlines.html diff --git a/tests/wpt/web-platform-tests/inert/inert-label-focus.tentative.html b/tests/wpt/web-platform-tests/inert/inert-label-focus.html similarity index 100% rename from tests/wpt/web-platform-tests/inert/inert-label-focus.tentative.html rename to tests/wpt/web-platform-tests/inert/inert-label-focus.html diff --git a/tests/wpt/web-platform-tests/inert/inert-node-is-uneditable.html b/tests/wpt/web-platform-tests/inert/inert-node-is-uneditable.html new file mode 100644 index 00000000000..23182b937cd --- /dev/null +++ b/tests/wpt/web-platform-tests/inert/inert-node-is-uneditable.html @@ -0,0 +1,41 @@ + + + + + inert nodes are uneditable + + + + + + + +I'm not editable. +I'm editable. + + + diff --git a/tests/wpt/web-platform-tests/inert/inert-node-is-uneditable.tentative.html b/tests/wpt/web-platform-tests/inert/inert-node-is-uneditable.tentative.html deleted file mode 100644 index 6da2379fad4..00000000000 --- a/tests/wpt/web-platform-tests/inert/inert-node-is-uneditable.tentative.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - inert nodes are uneditable - - - - - - - -I'm not editable. -I'm editable. - - - diff --git a/tests/wpt/web-platform-tests/inert/inert-node-is-unfocusable.tentative.html b/tests/wpt/web-platform-tests/inert/inert-node-is-unfocusable.html similarity index 100% rename from tests/wpt/web-platform-tests/inert/inert-node-is-unfocusable.tentative.html rename to tests/wpt/web-platform-tests/inert/inert-node-is-unfocusable.html diff --git a/tests/wpt/web-platform-tests/inert/inert-node-is-unselectable.tentative.html b/tests/wpt/web-platform-tests/inert/inert-node-is-unselectable.html similarity index 100% rename from tests/wpt/web-platform-tests/inert/inert-node-is-unselectable.tentative.html rename to tests/wpt/web-platform-tests/inert/inert-node-is-unselectable.html diff --git a/tests/wpt/web-platform-tests/inert/inert-on-non-html.tentative.html b/tests/wpt/web-platform-tests/inert/inert-on-non-html.html similarity index 100% rename from tests/wpt/web-platform-tests/inert/inert-on-non-html.tentative.html rename to tests/wpt/web-platform-tests/inert/inert-on-non-html.html diff --git a/tests/wpt/web-platform-tests/inert/inert-on-slots.tentative.html b/tests/wpt/web-platform-tests/inert/inert-on-slots.html similarity index 100% rename from tests/wpt/web-platform-tests/inert/inert-on-slots.tentative.html rename to tests/wpt/web-platform-tests/inert/inert-on-slots.html diff --git a/tests/wpt/web-platform-tests/inert/inert-pseudo-element-hittest.html b/tests/wpt/web-platform-tests/inert/inert-pseudo-element-hittest.html new file mode 100644 index 00000000000..bdba7696038 --- /dev/null +++ b/tests/wpt/web-platform-tests/inert/inert-pseudo-element-hittest.html @@ -0,0 +1,65 @@ + + +Hit-testing on pseudo elements of inert nodes + + + + + + + +

                                                                      Manual test: hover the green square, pass if it does not turn red.

                                                                      +
                                                                      + diff --git a/tests/wpt/web-platform-tests/inert/inert-svg-hittest.html b/tests/wpt/web-platform-tests/inert/inert-svg-hittest.html new file mode 100644 index 00000000000..f743ed25f45 --- /dev/null +++ b/tests/wpt/web-platform-tests/inert/inert-svg-hittest.html @@ -0,0 +1,70 @@ + + +Hit-testing with inert SVG + + + + + + + + + +
                                                                      +
                                                                      + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/inert/inert-with-modal-dialog-001.html b/tests/wpt/web-platform-tests/inert/inert-with-modal-dialog-001.html new file mode 100644 index 00000000000..aa0c29c7339 --- /dev/null +++ b/tests/wpt/web-platform-tests/inert/inert-with-modal-dialog-001.html @@ -0,0 +1,56 @@ + + +Interaction of 'inert' attribute with modal dialog + + + +
                                                                      +
                                                                      + wrapper + + dialog + + child + + +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/inert/inert-with-modal-dialog-001.tentative.html b/tests/wpt/web-platform-tests/inert/inert-with-modal-dialog-001.tentative.html deleted file mode 100644 index a31fa150147..00000000000 --- a/tests/wpt/web-platform-tests/inert/inert-with-modal-dialog-001.tentative.html +++ /dev/null @@ -1,56 +0,0 @@ - - -Interaction of 'inert' attribute with modal dialog - - - -
                                                                      -
                                                                      - wrapper - - dialog - - child - - -
                                                                      - - - diff --git a/tests/wpt/web-platform-tests/inert/inert-with-modal-dialog-002.tentative.html b/tests/wpt/web-platform-tests/inert/inert-with-modal-dialog-002.html similarity index 100% rename from tests/wpt/web-platform-tests/inert/inert-with-modal-dialog-002.tentative.html rename to tests/wpt/web-platform-tests/inert/inert-with-modal-dialog-002.html diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition-in-promise.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition-in-promise.html.ini deleted file mode 100644 index 7210f8dcfe6..00000000000 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition-in-promise.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[precondition-in-promise.html] - expected: PRECONDITION_FAILED diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition-in-setup.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition-in-setup.html.ini deleted file mode 100644 index a33ebafe650..00000000000 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition-in-setup.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[precondition-in-setup.html] - expected: PRECONDITION_FAILED diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition-without-setup.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition-without-setup.html.ini deleted file mode 100644 index 406db30a095..00000000000 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition-without-setup.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[precondition-without-setup.html] - expected: PRECONDITION_FAILED diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition.html.ini deleted file mode 100644 index 91544eba4c4..00000000000 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/precondition.html.ini +++ /dev/null @@ -1,15 +0,0 @@ -[precondition.html] - [test] - expected: PRECONDITION_FAILED - - [async_test immediate] - expected: PRECONDITION_FAILED - - [async_test after timeout] - expected: PRECONDITION_FAILED - - [promise_test immediate] - expected: PRECONDITION_FAILED - - [promise_test after await] - expected: PRECONDITION_FAILED diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/context.any.js.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/context.any.js.ini index 80abbf836e3..1601dfe0cd8 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/context.any.js.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/context.any.js.ini @@ -2,13 +2,8 @@ expected: if product == "firefox": TIMEOUT # https://bugzilla.mozilla.org/show_bug.cgi?id=1247687 -[context.any.sharedworker.html] - expected: - if product == "safari" or product == "epiphany" or product == "webkit": ERROR # https://bugs.webkit.org/show_bug.cgi?id=149850 - [context.any.sharedworker-module.html] expected: - if product == "safari" or product == "epiphany" or product == "webkit": ERROR # https://bugs.webkit.org/show_bug.cgi?id=149850 if product == "firefox": TIMEOUT # https://bugzilla.mozilla.org/show_bug.cgi?id=1247687 [context.any.serviceworker.html] diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-context.sub.h2.any.js.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-context.sub.h2.any.js.ini index 2bd49967c7c..8b137891791 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-context.sub.h2.any.js.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-context.sub.h2.any.js.ini @@ -1,5 +1 @@ -[http2-context.sub.h2.any.sharedworker.html] - bug: https://bugs.webkit.org/show_bug.cgi?id=149850 - expected: - if product == "safari" or product == "epiphany" or product == "webkit": ERROR diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-websocket.sub.h2.any.js.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-websocket.sub.h2.any.js.ini index 8b408fd0850..1922b1c42f4 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-websocket.sub.h2.any.js.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-websocket.sub.h2.any.js.ini @@ -1,10 +1,16 @@ [http2-websocket.sub.h2.any.html] + expected: + if product == "safari": TIMEOUT [WSS over h2] expected: - if product == "safari" or product == "epiphany" or product == "webkit": FAIL + if product == "firefox" or product == "epiphany" or product == "webkit": FAIL + if product == "safari": TIMEOUT [http2-websocket.sub.h2.any.worker.html] + expected: + if product == "safari": TIMEOUT [WSS over h2] expected: - if product == "safari" or product == "epiphany" or product == "webkit": FAIL + if product == "firefox" or product == "epiphany" or product == "webkit": FAIL + if product == "safari": TIMEOUT diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini deleted file mode 100644 index 23387657b41..00000000000 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[order-of-metas.any.sharedworker.html] - expected: - if product == "safari" or product == "epiphany" or product == "webkit": ERROR # https://bugs.webkit.org/show_bug.cgi?id=149850 - - diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini index 5b24c9429dc..e795514ac3d 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini @@ -1,6 +1,4 @@ [secure-context.https.any.sharedworker.html] - expected: - if product == "safari" or product == "epiphany" or product == "webkit": ERROR # https://bugs.webkit.org/show_bug.cgi?id=149850 [secure-context.https.any.serviceworker.html] [secure-context] diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/test-pac.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/test-pac.html.ini new file mode 100644 index 00000000000..26ea697fe81 --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/test-pac.html.ini @@ -0,0 +1,4 @@ +[test-pac.html] + [test that PAC metadata is respected] + expected: + if product == "safari": FAIL # Safari WebDriver does not support PAC \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/title.any.js.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/title.any.js.ini deleted file mode 100644 index 8cbb5f76493..00000000000 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/title.any.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[title.any.sharedworker.html] - expected: - if product == "safari" or product == "epiphany" or product == "webkit": ERROR # https://bugs.webkit.org/show_bug.cgi?id=149850 - - diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/webtransport-h3.https.sub.any.js.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/webtransport-h3.https.sub.any.js.ini index 9e8769b71a0..ba4a1b69c07 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/webtransport-h3.https.sub.any.js.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/webtransport-h3.https.sub.any.js.ini @@ -1,31 +1,23 @@ [webtransport-h3.https.sub.any.html] [WebTransport server should be running and should handle a bidirectional stream] expected: - if product == "chrome": PASS - FAIL - -[webtransport-h3.https.sub.any.window.html] - [WebTransport server should be running and should handle a bidirectional stream] - expected: - if product == "chrome": PASS + if product == "chrome" and os != "mac": PASS FAIL [webtransport-h3.https.sub.any.worker.html] [WebTransport server should be running and should handle a bidirectional stream] expected: - if product == "chrome": PASS + if product == "chrome" and os != "mac": PASS FAIL [webtransport-h3.https.sub.any.sharedworker.html] - expected: - if product == "safari" or product == "epiphany" or product == "webkit": ERROR # https://bugs.webkit.org/show_bug.cgi?id=149850 [WebTransport server should be running and should handle a bidirectional stream] expected: - if product == "chrome": PASS + if product == "chrome" and os != "mac": PASS FAIL [webtransport-h3.https.sub.any.serviceworker.html] [WebTransport server should be running and should handle a bidirectional stream] expected: - if product == "chrome": PASS + if product == "chrome" and os != "mac": PASS FAIL diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/wpt-server-websocket.sub.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/wpt-server-websocket.sub.html.ini index 3f9edcc66ad..2cc364b6109 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/wpt-server-websocket.sub.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/wpt-server-websocket.sub.html.ini @@ -1,45 +1,41 @@ [wpt-server-websocket.sub.html] - [WSS protocol, no subdomain] - expected: - if product == "safari": FAIL - [WSS protocol, www subdomain #3] expected: - if product == "epiphany" or product == "webkit" or product == "safari": FAIL + if product == "epiphany" or product == "webkit": FAIL [WSS protocol, punycode subdomain #1] expected: - if product == "epiphany" or product == "webkit" or product == "safari": FAIL + if product == "epiphany" or product == "webkit": FAIL [WSS protocol, punycode subdomain #2] expected: - if product == "epiphany" or product == "webkit" or product == "safari": FAIL + if product == "epiphany" or product == "webkit": FAIL [WSS protocol, www subdomain #1] expected: - if product == "epiphany" or product == "webkit" or product == "safari": FAIL + if product == "epiphany" or product == "webkit": FAIL [WSS protocol, www subdomain #2] expected: - if product == "epiphany" or product == "webkit" or product == "safari": FAIL + if product == "epiphany" or product == "webkit": FAIL [WSS protocol, www subdomain #3] expected: - if product == "epiphany" or product == "webkit" or product == "safari": FAIL + if product == "epiphany" or product == "webkit": FAIL [WSS protocol, punycode subdomain #1] expected: - if product == "epiphany" or product == "webkit" or product == "safari": FAIL + if product == "epiphany" or product == "webkit": FAIL [WSS protocol, punycode subdomain #2] expected: - if product == "epiphany" or product == "webkit" or product == "safari": FAIL + if product == "epiphany" or product == "webkit": FAIL [WSS protocol, www subdomain #1] expected: - if product == "epiphany" or product == "webkit" or product == "safari": FAIL + if product == "epiphany" or product == "webkit": FAIL [WSS protocol, www subdomain #2] expected: - if product == "epiphany" or product == "webkit" or product == "safari": FAIL + if product == "epiphany" or product == "webkit": FAIL diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini index 4df08aa7e31..94fb0e3f979 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini @@ -1,3 +1,3 @@ [eventOrder.html] expected: - if product == "epiphany" or product == "webkit": ERROR + if (product == "epiphany") or (product == "webkit"): ERROR diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini index ac5763d15ca..c8fd2d282fb 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini @@ -1,6 +1,6 @@ [multiTouchPoints.html] expected: - if product == "firefox" or product == "epiphany" or product == "webkit": ERROR + if product == "epiphany" or product == "webkit": ERROR [TestDriver actions: two touch points with one moving one pause] expected: diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseFirstPoint.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseFirstPoint.html.ini index b5ab5a59068..ac49afe3d5d 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseFirstPoint.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseFirstPoint.html.ini @@ -1,7 +1,4 @@ [multiTouchPointsReleaseFirstPoint.html] - expected: - if product == "firefox": ERROR - [TestDriver actions: two touch points with one moving one pause] expected: if product == "safari": FAIL diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseSecondPoint.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseSecondPoint.html.ini index c4f524f627e..4c9aeb0a186 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseSecondPoint.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseSecondPoint.html.ini @@ -1,8 +1,5 @@ [multiTouchPointsReleaseSecondPoint.html] - expected: - if product == "firefox": ERROR - [TestDriver actions: two touch points with one moving one pause] expected: if product == "safari": FAIL - if product == "chrome": [PASS, FAIL] \ No newline at end of file + if product == "chrome": [PASS, FAIL] diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsSimultaneousMove.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsSimultaneousMove.html.ini new file mode 100644 index 00000000000..e4d63b7eedd --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsSimultaneousMove.html.ini @@ -0,0 +1,5 @@ +[multiTouchPointsSimultaneousMove.html] + [TestDriver actions: two touch points with both moving] + expected: + if product == "chrome": [PASS, FAIL] + if product == "safari": FAIL diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini index b0a03ae93ad..b0778ab8c56 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini @@ -1,7 +1,4 @@ [multiTouchPointsTwoTouchStarts.html] - expected: - if product == "firefox": ERROR - [TestDriver actions: two touch points with one moving one pause] expected: if product == "safari": FAIL diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini index 2b8523145ef..56fa5edc68a 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini @@ -1,7 +1,4 @@ [multiTouchPointsWithPause.html] - expected: - if product == "firefox": ERROR - [TestDriver actions: two touch points with one moving one pause] expected: if product == "safari": FAIL diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/touchPointerEventProperties.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/touchPointerEventProperties.html.ini index ef77aac0d1f..6de2ea26018 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/touchPointerEventProperties.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/touchPointerEventProperties.html.ini @@ -1,6 +1,4 @@ [touchPointerEventProperties.html] - expected: - if product == "firefox": ERROR [TestDriver actions: pointerevent properties of touch type] expected: - if product == "safari" or product == "firefox": FAIL + if product == "safari": FAIL diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/wheelScroll.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/wheelScroll.html.ini index f96fd377ba5..647b875e5b0 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/wheelScroll.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/wheelScroll.html.ini @@ -1,3 +1,3 @@ [wheelScroll.html] expected: - if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": ERROR + if product == "firefox" or product == "epiphany": ERROR diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/click_iframe_crossorigin.sub.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/click_iframe_crossorigin.sub.html.ini index 10e24dd773f..aa94652ad76 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/click_iframe_crossorigin.sub.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/click_iframe_crossorigin.sub.html.ini @@ -1,4 +1,4 @@ [click_iframe_crossorigin.sub.html] [TestDriver click on a document in an iframe] expected: - if os == "mac" and product == "chrome": [PASS, FAIL] # https://github.com/web-platform-tests/wpt/issues/26295 + if product == "chrome": [PASS, FAIL] # https://github.com/web-platform-tests/wpt/issues/26295 diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini index 0924dbd05e5..726eea68b90 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini @@ -1,4 +1,4 @@ [generate_test_report.html] [TestDriver generate_test_report method] expected: - if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": FAIL + if product == "firefox" or product == "epiphany" or product == "webkit": FAIL diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/virtual_authenticator.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/virtual_authenticator.html.ini index c01ca2a7199..92cbbf37621 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/virtual_authenticator.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/virtual_authenticator.html.ini @@ -1,28 +1,31 @@ [virtual_authenticator.html] + expected: + if product == "safari": ERROR + [Can create an authenticator] expected: - if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": FAIL + if product != "chrome": FAIL [Can add a credential] expected: - if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": FAIL + if product != "chrome": FAIL [Can get the credentials] expected: - if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": FAIL + if product != "chrome": FAIL [Can remove a credential] expected: - if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": FAIL + if product != "chrome": FAIL [Can remove all credentials] expected: - if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": FAIL + if product != "chrome": FAIL [Can set user verified] expected: - if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": FAIL + if product != "chrome": FAIL [Can remove a virtual authenticator] expected: - if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": FAIL + if product != "chrome": FAIL diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/update_properties.json b/tests/wpt/web-platform-tests/infrastructure/metadata/update_properties.json new file mode 100644 index 00000000000..00909d956b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/update_properties.json @@ -0,0 +1 @@ +{"properties": ["product"]} diff --git a/tests/wpt/web-platform-tests/infrastructure/resources/ok.txt b/tests/wpt/web-platform-tests/infrastructure/resources/ok.txt new file mode 100644 index 00000000000..a0aba9318ad --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/resources/ok.txt @@ -0,0 +1 @@ +OK \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/infrastructure/resources/ok.txt.headers b/tests/wpt/web-platform-tests/infrastructure/resources/ok.txt.headers new file mode 100644 index 00000000000..23de552c1a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/resources/ok.txt.headers @@ -0,0 +1 @@ +Access-Control-Allow-Origin: * \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/infrastructure/server/resources/proxy.sub.pac b/tests/wpt/web-platform-tests/infrastructure/server/resources/proxy.sub.pac new file mode 100644 index 00000000000..78ce0234485 --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/server/resources/proxy.sub.pac @@ -0,0 +1,7 @@ +function FindProxyForURL(url, host) { + if (dnsDomainIs(host, '.wpt.test')) { + return "PROXY 127.0.0.1:{{ports[http][0]}}" + } + + return "DIRECT"; +} diff --git a/tests/wpt/web-platform-tests/infrastructure/server/test-pac.html b/tests/wpt/web-platform-tests/infrastructure/server/test-pac.html new file mode 100644 index 00000000000..598836d3768 --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/server/test-pac.html @@ -0,0 +1,12 @@ + +test behavior of PROXY configuration (PAC) + + + + diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/elementTiming.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/elementTiming.html index ec71e0477ba..33731e92999 100644 --- a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/elementTiming.html +++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/elementTiming.html @@ -33,35 +33,37 @@ div#test2 { diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPoints.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPoints.html index 3933db15629..64aa4296310 100644 --- a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPoints.html +++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPoints.html @@ -6,6 +6,7 @@ + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html index 788d96e1fd6..06f48ebc38a 100644 --- a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html +++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html @@ -27,14 +27,15 @@ div#test1{ let event_type = []; let event_id = []; -async_test(t => { - let test1 = document.getElementById("test1"); - document.getElementById("test1").addEventListener("pointerdown", - e => {event_type.push(e.type); event_id.push(e.pointerId);}); - document.getElementById("test1").addEventListener("pointerup", - e => {event_type.push(e.type); event_id.push(e.pointerId);}); - document.getElementById("test1").addEventListener("pointermove", - e => {event_type.push(e.type); event_id.push(e.pointerId);}); +promise_test(async t => { + const test1 = document.getElementById("test1"); + const handleEvent = e => { + event_type.push(e.type); + event_id.push(e.pointerId); + } + test1.addEventListener("pointerdown", handleEvent); + test1.addEventListener("pointerup", handleEvent); + test1.addEventListener("pointermove", handleEvent); let actions = new test_driver.Actions() .addPointer("touchPointer1", "touch") @@ -43,15 +44,15 @@ async_test(t => { .pointerMove(10, 0, {origin: test1, sourceName: "touchPointer2"}) .pointerDown({sourceName: "touchPointer1"}) .pointerMove(0, 5, {origin: test1, sourceName: "touchPointer1"}) + .addTick() .pointerDown({sourceName: "touchPointer2"}) + .addTick() .pointerUp({sourceName: "touchPointer1"}) .pointerUp({sourceName: "touchPointer2"}); - actions.send() - .then(t.step_func_done(() => { - assert_array_equals(event_type, ["pointerdown", "pointermove", "pointerdown", "pointerup", "pointerup"]); - assert_array_equals(event_id, [2, 2, 3, 2, 3]); - })) - .catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e))); + await actions.send() + + assert_array_equals(event_type, ["pointerdown", "pointermove", "pointerdown", "pointerup", "pointerup"]); + assert_array_equals(event_id, [2, 2, 3, 2, 3]); }); diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsWithPause.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsWithPause.html index 85a0561c620..6b89d74c657 100644 --- a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsWithPause.html +++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsWithPause.html @@ -6,6 +6,7 @@ + + +
                                                                      +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/intersection-observer/display-none.html b/tests/wpt/web-platform-tests/intersection-observer/display-none.html index cae35095e8e..6c2040ee0ce 100644 --- a/tests/wpt/web-platform-tests/intersection-observer/display-none.html +++ b/tests/wpt/web-platform-tests/intersection-observer/display-none.html @@ -25,7 +25,7 @@ var vh = document.documentElement.clientHeight; var entries = []; -runTestCycle(function() { +promise_test(async function(t) { var target = document.getElementById("target"); var root = document.getElementById("root"); var observer = new IntersectionObserver(function(changes) { @@ -34,22 +34,35 @@ runTestCycle(function() { observer.observe(target); entries = entries.concat(observer.takeRecords()); assert_equals(entries.length, 0, "No initial notifications."); - runTestCycle(step0, "Intersecting notification after first rAF."); -}, "IntersectionObserver should send a not-intersecting notification for a target that gets display:none."); -function step0() { - runTestCycle(step1, "Not-intersecting notification after setting display:none on target."); - checkLastEntry(entries, 0, [8, 108, 8, 108, 8, 108, 8, 108, 0, vw, 0, vh, true]); + await waitForNotification(); + + checkLastEntry( + entries, + 0, + [8, 108, 8, 108, 8, 108, 8, 108, 0, vw, 0, vh, true], + "IntersectionObserver notification after first rAF", + ); target.style.display = "none"; -} -function step1() { - runTestCycle(step2, "Intersecting notification after removing display:none on target."); - checkLastEntry(entries, 1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false]); + await waitForNotification(); + + checkLastEntry( + entries, + 1, + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false], + "IntersectionObserver should send a not-intersecting notification for a target that gets display:none.", + ); + target.style.display = ""; -} -function step2() { - checkLastEntry(entries, 2, [8, 108, 8, 108, 8, 108, 8, 108, 0, vw, 0, vh, true]); -} + await waitForNotification(); + + checkLastEntry( + entries, + 2, + [8, 108, 8, 108, 8, 108, 8, 108, 0, vw, 0, vh, true], + "Intersecting notification after removing display:none on target.", + ); +}); diff --git a/tests/wpt/web-platform-tests/intersection-observer/intersection-ratio-with-fractional-bounds-in-iframe.html b/tests/wpt/web-platform-tests/intersection-observer/intersection-ratio-with-fractional-bounds-in-iframe.html new file mode 100644 index 00000000000..b00f8ddaf6d --- /dev/null +++ b/tests/wpt/web-platform-tests/intersection-observer/intersection-ratio-with-fractional-bounds-in-iframe.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/intersection-observer/resources/intersection-observer-test-utils.js b/tests/wpt/web-platform-tests/intersection-observer/resources/intersection-observer-test-utils.js index 7db26d72df5..c26ccea0303 100644 --- a/tests/wpt/web-platform-tests/intersection-observer/resources/intersection-observer-test-utils.js +++ b/tests/wpt/web-platform-tests/intersection-observer/resources/intersection-observer-test-utils.js @@ -71,16 +71,37 @@ // - At this point, observer.takeRecords will get the second batch of // notifications. function waitForNotification(t, f) { - requestAnimationFrame(function() { - requestAnimationFrame(function() { t.step_timeout(f, 0); }); + return new Promise(resolve => { + requestAnimationFrame(function() { + requestAnimationFrame(function() { + let callback = function() { + resolve(); + if (f) { + f(); + } + }; + if (t) { + t.step_timeout(callback); + } else { + setTimeout(callback); + } + }); + }); }); } // If you need to wait until the IntersectionObserver algorithm has a chance // to run, but don't need to wait for delivery of the notifications... function waitForFrame(t, f) { - requestAnimationFrame(function() { - t.step_timeout(f, 0); + return new Promise(resolve => { + requestAnimationFrame(function() { + t.step_timeout(function() { + resolve(); + if (f) { + f(); + } + }); + }); }); } diff --git a/tests/wpt/web-platform-tests/intersection-observer/resources/intersection-ratio-with-fractional-bounds-in-iframe-content.html b/tests/wpt/web-platform-tests/intersection-observer/resources/intersection-ratio-with-fractional-bounds-in-iframe-content.html new file mode 100644 index 00000000000..696ebf6ebe5 --- /dev/null +++ b/tests/wpt/web-platform-tests/intersection-observer/resources/intersection-ratio-with-fractional-bounds-in-iframe-content.html @@ -0,0 +1,50 @@ + + + + + + + +
                                                                      + +
                                                                      +

                                                                      Observer target

                                                                      +

                                                                      Intersection ratio:

                                                                      +
                                                                      +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/intersection-observer/zero-area-element-visible.html b/tests/wpt/web-platform-tests/intersection-observer/zero-area-element-visible.html index 5431750485f..b012b65c189 100644 --- a/tests/wpt/web-platform-tests/intersection-observer/zero-area-element-visible.html +++ b/tests/wpt/web-platform-tests/intersection-observer/zero-area-element-visible.html @@ -14,9 +14,14 @@ pre, #log { width: 0px; height: 0px; } +#container { + overflow: clip; +} -
                                                                      +
                                                                      +
                                                                      +
                                                                      + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/js-self-profiling/class-names.https.html b/tests/wpt/web-platform-tests/js-self-profiling/class-names.https.html new file mode 100644 index 00000000000..9d201b03a18 --- /dev/null +++ b/tests/wpt/web-platform-tests/js-self-profiling/class-names.https.html @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/js-self-profiling/class-setter-names.https.html b/tests/wpt/web-platform-tests/js-self-profiling/class-setter-names.https.html new file mode 100644 index 00000000000..f03a372460c --- /dev/null +++ b/tests/wpt/web-platform-tests/js-self-profiling/class-setter-names.https.html @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/js-self-profiling/function-anonymous-names.https.html b/tests/wpt/web-platform-tests/js-self-profiling/function-anonymous-names.https.html new file mode 100644 index 00000000000..fd7fbecc506 --- /dev/null +++ b/tests/wpt/web-platform-tests/js-self-profiling/function-anonymous-names.https.html @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/js-self-profiling/function-declaration-names.https.html b/tests/wpt/web-platform-tests/js-self-profiling/function-declaration-names.https.html new file mode 100644 index 00000000000..9cb02cbfc0d --- /dev/null +++ b/tests/wpt/web-platform-tests/js-self-profiling/function-declaration-names.https.html @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/js-self-profiling/function-expression-names.https.html b/tests/wpt/web-platform-tests/js-self-profiling/function-expression-names.https.html new file mode 100644 index 00000000000..402797402e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/js-self-profiling/function-expression-names.https.html @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/js-self-profiling/function-names.https.html b/tests/wpt/web-platform-tests/js-self-profiling/function-names.https.html deleted file mode 100644 index 1d61248725f..00000000000 --- a/tests/wpt/web-platform-tests/js-self-profiling/function-names.https.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/js/behaviours/HostEnsureCanAddPrivateElement.window.js b/tests/wpt/web-platform-tests/js/behaviours/HostEnsureCanAddPrivateElement.window.js new file mode 100644 index 00000000000..03435fa37ab --- /dev/null +++ b/tests/wpt/web-platform-tests/js/behaviours/HostEnsureCanAddPrivateElement.window.js @@ -0,0 +1,129 @@ +// META: script=/common/get-host-info.sub.js + +// HTML PR https://github.com/whatwg/html/pull/8198 adds a definition for the +// HostEnsureCanAddPrivateElement host hook which disallows private fields on +// WindowProxy and Location objects. +// +// This test case ensure the hook works as designed. + +let host_info = get_host_info(); + +const path = location.pathname.substring(0, location.pathname.lastIndexOf('/')) + '/frame.html'; +const path_setdomain = path + "?setdomain"; + +class Base { + constructor(o) { + return o; + } +} + +class Stamper extends Base { + #x = 10; + static hasX(o) { return #x in o; } +}; + +function test_iframe_window(a_src, b_src) { + const iframe = document.body.appendChild(document.createElement("iframe")); + + var resolve, reject; + var promise = new Promise((res, rej) => { + resolve = res; + reject = rej + }); + + iframe.src = a_src; + iframe.onload = () => { + const windowA = iframe.contentWindow; + try { + assert_throws_js(TypeError, () => { + new Stamper(windowA); + }, "Can't Stamp (maybe cross-origin) exotic WindowProxy"); + assert_equals(Stamper.hasX(windowA), false, "Didn't stamp on WindowProxy"); + } catch (e) { + reject(e); + return; + } + + iframe.src = b_src; + iframe.onload = () => { + const windowB = iframe.contentWindow; + try { + assert_equals(windowA == windowB, true, "Window is same") + assert_throws_js(TypeError, () => { + new Stamper(windowA); + }, "Can't Stamp (maybe cross-origin) exotics on WindowProxy"); + assert_equals(Stamper.hasX(windowB), false, "Didn't stamp on WindowProxy"); + } catch (e) { + reject(e); + return; + } + resolve(); + } + }; + + return promise; +} + + +function test_iframe_location(a_src, b_src) { + const iframe = document.body.appendChild(document.createElement("iframe")); + + var resolve, reject; + var promise = new Promise((res, rej) => { + resolve = res; + reject = rej + }); + + iframe.src = a_src; + iframe.onload = () => { + const locA = iframe.contentWindow.location; + try { + assert_throws_js(TypeError, () => { + new Stamper(locA); + }, "Can't Stamp (maybe cross-origin) exotic Location"); + assert_equals(Stamper.hasX(locA), false, "Didn't stamp on Location"); + } catch (e) { + reject(e); + return; + } + + iframe.src = b_src; + iframe.onload = () => { + const locB = iframe.contentWindow.location + try { + assert_throws_js(TypeError, () => { + new Stamper(locB); + }, "Can't Stamp cross-origin exotic Location"); + assert_equals(Stamper.hasX(locB), false, "Didn't stamp on Location"); + } catch (e) { + reject(e); + return; + } + resolve(); + } + }; + + return promise; +} + +promise_test(() => test_iframe_window(host_info.HTTP_ORIGIN, host_info.HTTP_ORIGIN), "Same Origin: WindowProxy") +promise_test(() => test_iframe_window(host_info.HTTP_ORIGIN, host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT), "Cross Origin (port): WindowProxy") +promise_test(() => test_iframe_window(host_info.HTTP_ORIGIN, host_info.HTTP_REMOTE_ORIGIN), "Cross Origin (remote): WindowProxy") +promise_test(() => test_iframe_window(path, path_setdomain), "Same Origin + document.domain WindowProxy") + + +promise_test(() => test_iframe_location(host_info.HTTP_ORIGIN, host_info.HTTP_ORIGIN), "Same Origin: Location") +promise_test(() => test_iframe_location(host_info.HTTP_ORIGIN, host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT), "Cross Origin (remote): Location") +promise_test(() => test_iframe_location(host_info.HTTP_ORIGIN, host_info.HTTP_REMOTE_ORIGIN), "Cross Origin: Location") +promise_test(() => test_iframe_location(path, path_setdomain), "Same Origin + document.domain: Location") + +// We can do this because promise_test promises to queue tests +// https://web-platform-tests.org/writing-tests/testharness-api.html#promise-tests + +promise_test(async () => document.domain = document.domain, "Set document.domain"); + +promise_test(() => test_iframe_location(path, path_setdomain), "(After document.domain set) Same Origin + document.domain: Location") +promise_test(() => test_iframe_window(path, path_setdomain), "(After document.domain set) Same Origin + document.domain WindowProxy does carry private fields after navigation") + +promise_test(() => test_iframe_location(path_setdomain, path_setdomain), "(After document.domain set) Local navigation (setdomain) Location") +promise_test(() => test_iframe_window(path_setdomain, path_setdomain), "(After document.domain set) Local navigation (setdomain) WindowProxy does carry private fields after navigation") diff --git a/tests/wpt/web-platform-tests/js/behaviours/frame.html b/tests/wpt/web-platform-tests/js/behaviours/frame.html new file mode 100644 index 00000000000..c06d1bf2b94 --- /dev/null +++ b/tests/wpt/web-platform-tests/js/behaviours/frame.html @@ -0,0 +1,10 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/META.yml b/tests/wpt/web-platform-tests/largest-contentful-paint/META.yml index b7e2497681e..e11810cc10f 100644 --- a/tests/wpt/web-platform-tests/largest-contentful-paint/META.yml +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/META.yml @@ -1,4 +1,4 @@ -spec: https://wicg.github.io/largest-contentful-paint/ +spec: https://w3c.github.io/largest-contentful-paint/ suggested_reviewers: - npm1 - yoavweiss diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/animated/observe-video.tentative.html b/tests/wpt/web-platform-tests/largest-contentful-paint/animated/observe-video.tentative.html new file mode 100644 index 00000000000..49bdd986f6c --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/animated/observe-video.tentative.html @@ -0,0 +1,30 @@ + + + + + Largest Contentful Paint: observe video. + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/image-sw-same-origin.https.html b/tests/wpt/web-platform-tests/largest-contentful-paint/image-sw-same-origin.https.html new file mode 100644 index 00000000000..3f375008c53 --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/image-sw-same-origin.https.html @@ -0,0 +1,33 @@ + + +Largest Contentful Paint: same-origin service worker should not be treated as TAO-fail + + + + + + + + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/image-upscaling.html b/tests/wpt/web-platform-tests/largest-contentful-paint/image-upscaling.html new file mode 100644 index 00000000000..a4f7d8079d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/image-upscaling.html @@ -0,0 +1,103 @@ + + +Largest Contentful Paint: largest image is reported. + + + + + + + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/larger-image.html b/tests/wpt/web-platform-tests/largest-contentful-paint/larger-image.html index a9675386a08..948f00d0c61 100644 --- a/tests/wpt/web-platform-tests/largest-contentful-paint/larger-image.html +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/larger-image.html @@ -1,36 +1,58 @@ Largest Contentful Paint: largest image is reported. - - - - - -

                                                                      This is some text! :)

                                                                      - - - -

                                                                      More text!

                                                                      - + + + +

                                                                      This is some text! :)

                                                                      + + + +

                                                                      More text!

                                                                      + + ); + observer.observe({ type: 'largest-contentful-paint', buffered: true }); + }, 'Largest Contentful Paint: largest image is reported.'); + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/observe-css-generated-text.html b/tests/wpt/web-platform-tests/largest-contentful-paint/observe-css-generated-text.html new file mode 100644 index 00000000000..4869f4298cd --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/observe-css-generated-text.html @@ -0,0 +1,87 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js b/tests/wpt/web-platform-tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js index 5012faf3b1b..de359ebb8ad 100644 --- a/tests/wpt/web-platform-tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js @@ -19,6 +19,9 @@ function checkImage(entry, expectedUrl, expectedID, expectedSize, timeLowerBound assert_equals(entry.id, expectedID, "Entry ID matches expected one"); assert_equals(entry.element, document.getElementById(expectedID), "Entry element is expected one"); + if (options.includes('skip')) { + return; + } if (options.includes('renderTimeIs0')) { assert_equals(entry.renderTime, 0, 'renderTime should be 0'); assert_between_exclusive(entry.loadTime, timeLowerBound, performance.now(), @@ -66,3 +69,22 @@ const load_and_observe = url => { document.body.appendChild(img); }); }; + +const load_video_and_observe = url => { + return new Promise(resolve => { + (new PerformanceObserver(entryList => { + for (let entry of entryList.getEntries()) { + if (entry.url == url) { + resolve(entryList.getEntries()[0]); + } + } + })).observe({type: 'largest-contentful-paint', buffered: true}); + const video = document.createElement("video"); + video.id = 'video_id'; + video.src = url; + video.autoplay = true; + video.muted = true; + video.loop = true; + document.body.appendChild(video); + }); +}; diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/resources/lcp-sw-from-cache.js b/tests/wpt/web-platform-tests/largest-contentful-paint/resources/lcp-sw-from-cache.js new file mode 100644 index 00000000000..c650a0b7471 --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/resources/lcp-sw-from-cache.js @@ -0,0 +1,8 @@ +self.addEventListener("fetch", e => { + if (e.request.url.endsWith('green.svg')) { + e.respondWith(new Response(` + + + `, { headers: { 'Content-Type': 'image/svg+xml' } })); + } +}); diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/resources/lcp-sw.https.html b/tests/wpt/web-platform-tests/largest-contentful-paint/resources/lcp-sw.https.html new file mode 100644 index 00000000000..069a50eae9a --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/resources/lcp-sw.https.html @@ -0,0 +1,15 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/resources/slow-style-change.py b/tests/wpt/web-platform-tests/largest-contentful-paint/resources/slow-style-change.py new file mode 100644 index 00000000000..780d5736c49 --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/resources/slow-style-change.py @@ -0,0 +1,9 @@ +import time + +def main(request, response): + time.sleep(1) + return [ ("Content-Type", "text/css")], """ + #text { + font-size: 4em; + } + """ diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/update-on-style-change.tentative.html b/tests/wpt/web-platform-tests/largest-contentful-paint/update-on-style-change.tentative.html new file mode 100644 index 00000000000..dd34e61b0f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/update-on-style-change.tentative.html @@ -0,0 +1,38 @@ + + +LargestContentfulPaint entries should generate for updates to previous LargestContentfulPaint nodes. + + + + + +
                                                                      text
                                                                      + + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-block.html b/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-block.html new file mode 100644 index 00000000000..572442f2a2c --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-block.html @@ -0,0 +1,57 @@ + + + + + +
                                                                      LCP: Web Font Styled Text Resize
                                                                      + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap-after-interaction.html b/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap-after-interaction.html new file mode 100644 index 00000000000..3ba02bab5ac --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap-after-interaction.html @@ -0,0 +1,90 @@ + + + + + + + + + +
                                                                      LCP: Web Font Styled Text Resize
                                                                      + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap-smaller.html b/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap-smaller.html new file mode 100644 index 00000000000..253038eb8d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap-smaller.html @@ -0,0 +1,57 @@ + + + + + +
                                                                      LCP: Web Font Styled Text Resize
                                                                      + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap-subnode.html b/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap-subnode.html new file mode 100644 index 00000000000..eca5f3590f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap-subnode.html @@ -0,0 +1,59 @@ + + + + + +
                                                                      + LCP: Web Font Styled Text Resize +
                                                                      + diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap.html b/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap.html new file mode 100644 index 00000000000..61c00fad20a --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/web-font-styled-text-resize-swap.html @@ -0,0 +1,57 @@ + + + + + +
                                                                      LCP: Web Font Styled Text Resize
                                                                      + diff --git a/tests/wpt/web-platform-tests/layout-instability/local-shift-without-viewport-shift-2.html b/tests/wpt/web-platform-tests/layout-instability/local-shift-without-viewport-shift-2.html new file mode 100644 index 00000000000..7074bca7bac --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/local-shift-without-viewport-shift-2.html @@ -0,0 +1,32 @@ + +Layout Instability: local shift without viewport shift + + +
                                                                      +
                                                                      +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/layout-instability/main-frame.html b/tests/wpt/web-platform-tests/layout-instability/main-frame.html new file mode 100644 index 00000000000..0d0bf84ddc6 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/main-frame.html @@ -0,0 +1,64 @@ + + + +Layout Instability: subframe layout shift score + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/layout-instability/multicol-000.html b/tests/wpt/web-platform-tests/layout-instability/multicol-000.html new file mode 100644 index 00000000000..c06cddd663b --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/multicol-000.html @@ -0,0 +1,22 @@ + + + + + +
                                                                      +
                                                                      +
                                                                      + diff --git a/tests/wpt/web-platform-tests/layout-instability/multicol-001.html b/tests/wpt/web-platform-tests/layout-instability/multicol-001.html new file mode 100644 index 00000000000..a47d5f04880 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/multicol-001.html @@ -0,0 +1,26 @@ + + + + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + diff --git a/tests/wpt/web-platform-tests/layout-instability/pointermove-becomes-drag.html b/tests/wpt/web-platform-tests/layout-instability/pointermove-becomes-drag.html index 0f42be0a474..4bccf704238 100644 --- a/tests/wpt/web-platform-tests/layout-instability/pointermove-becomes-drag.html +++ b/tests/wpt/web-platform-tests/layout-instability/pointermove-becomes-drag.html @@ -25,7 +25,7 @@ body { margin: 0; } const draggable = document.getElementById("draggable"); draggable.addEventListener('touchmove', function(event) { - var touch = event.targetTouches[0]; + let touch = event.targetTouches[0]; // Move the element when the finger moves. draggable.style.top = touch.pageY - 25 + 'px'; @@ -45,8 +45,10 @@ generateTouchDragSequence = () => new test_driver.Actions() .pointerUp() .pause(100); -promise_test(async () => { +promise_test(async(test) => { const watcher = new ScoreWatcher; + let eventWatcher = new EventWatcher(test, draggable, ["pointerup"]); + let donePromise = eventWatcher.wait_for(["pointerup"], { record: 'all' }); // Wait for the initial render to complete. await waitForAnimationFrames(2); @@ -54,6 +56,9 @@ promise_test(async () => { // Send pointer events for a touch drag. await generateTouchDragSequence().send(); + // wait for pointerUp before running the test + await donePromise; + // Touch moves which drag the objects should be counted as the excluding inputs // for the layout shift. assert_greater_than(watcher.score, 0); diff --git a/tests/wpt/web-platform-tests/layout-instability/shift-with-counter-scroll-and-translate.html b/tests/wpt/web-platform-tests/layout-instability/shift-with-counter-scroll-and-translate.html new file mode 100644 index 00000000000..a51920fc986 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/shift-with-counter-scroll-and-translate.html @@ -0,0 +1,62 @@ + +Layout Instability: shift with counter scroll and translate not counted + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/layout-instability/sub-frame.html b/tests/wpt/web-platform-tests/layout-instability/sub-frame.html new file mode 100644 index 00000000000..d7cb40002e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/sub-frame.html @@ -0,0 +1,50 @@ + + + + + + + + +
                                                                      + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/layout-instability/translate-change.html b/tests/wpt/web-platform-tests/layout-instability/translate-change.html new file mode 100644 index 00000000000..ddfc041700a --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/translate-change.html @@ -0,0 +1,33 @@ + +Layout Instability: no layout shift for change of individual transform property + + +
                                                                      +
                                                                      +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/layout-instability/translate-counter-layout-shift.html b/tests/wpt/web-platform-tests/layout-instability/translate-counter-layout-shift.html new file mode 100644 index 00000000000..18e03ad7f29 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/translate-counter-layout-shift.html @@ -0,0 +1,36 @@ + +Layout Instability: no layout shift if translate change counters location change + + +
                                                                      +
                                                                      +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/lint.ignore b/tests/wpt/web-platform-tests/lint.ignore index b9973747dc6..2835329039d 100644 --- a/tests/wpt/web-platform-tests/lint.ignore +++ b/tests/wpt/web-platform-tests/lint.ignore @@ -107,6 +107,7 @@ PRINT STATEMENT: webdriver/tests/support/helpers.py # semi-legitimate use of console.* CONSOLE: console/* +CONSOLE: custom-elements/resources/garbage-collect.js CONSOLE: js/builtins/weakrefs/resources/maybe-garbage-collect.js CONSOLE: resources/check-layout-th.js CONSOLE: resources/chromium/* @@ -117,6 +118,7 @@ CONSOLE: service-workers/service-worker/navigation-redirect.https.html CONSOLE: service-workers/service-worker/resources/clients-get-other-origin.html CONSOLE: webrtc/tools/* CONSOLE: webaudio/resources/audit.js:41 +CONSOLE: webusb/resources/usb-helpers.js # use of console in a public library - annotation-model ensures # it is not actually used @@ -138,11 +140,14 @@ PARSE-FAILED: custom-elements/xhtml-crash.xhtml SET TIMEOUT: *-manual.* SET TIMEOUT: annotation-model/scripts/ajv.min.js SET TIMEOUT: apng/animated-png-timeout.html +SET TIMEOUT: avif/animated-avif-timeout.html SET TIMEOUT: cookies/resources/testharness-helpers.js SET TIMEOUT: common/reftest-wait.js SET TIMEOUT: conformance-checkers/* SET TIMEOUT: content-security-policy/* +SET TIMEOUT: css/compositing/opacity-and-transform-animation-crash.html SET TIMEOUT: css/css-display/display-contents-shadow-dom-1.html +SET TIMEOUT: css/CSS2/normal-flow/crashtests/block-in-inline-ax-crash.html SET TIMEOUT: css/selectors/selector-placeholder-shown-type-change-001.html SET TIMEOUT: css/selectors/selector-placeholder-shown-type-change-002.html SET TIMEOUT: css/selectors/selector-placeholder-shown-type-change-003.html @@ -151,7 +156,16 @@ SET TIMEOUT: css/selectors/selector-required-type-change-002.html SET TIMEOUT: encrypted-media/polyfill/chrome-polyfill.js SET TIMEOUT: encrypted-media/polyfill/clearkey-polyfill.js SET TIMEOUT: encrypted-media/scripts/playback-temporary-events.js +SET TIMEOUT: fetch/metadata/resources/helper.sub.js +SET TIMEOUT: fetch/metadata/resources/message-opener.html +SET TIMEOUT: focus/support/iframe-focus-with-different-site-intermediate-frame-outer.sub.html +SET TIMEOUT: focus/support/iframe-focus-with-different-site-intermediate-frame-middle.sub.html +SET TIMEOUT: focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-outer.sub.html +SET TIMEOUT: focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html +SET TIMEOUT: focus/support/iframe-focuses-parent-different-site-inner.html +SET TIMEOUT: focus/support/iframe-focuses-parent-same-site-inner.html SET TIMEOUT: generic-sensor/resources/iframe_sensor_handler.html +SET TIMEOUT: html/browsers/browsing-the-web/back-forward-cache/resources/inflight-fetch-helper.js SET TIMEOUT: html/browsers/browsing-the-web/history-traversal/* SET TIMEOUT: html/browsers/browsing-the-web/navigating-across-documents/* SET TIMEOUT: html/browsers/browsing-the-web/scroll-to-fragid/* @@ -163,8 +177,11 @@ SET TIMEOUT: html/browsers/offline/* SET TIMEOUT: html/browsers/the-window-object/* SET TIMEOUT: html/cross-origin-opener-policy/resources/fully-loaded.js SET TIMEOUT: html/editing/dnd/* +SET TIMEOUT: html/semantics/embedded-content/media-elements/track/track-element/crashtests/* SET TIMEOUT: html/semantics/embedded-content/the-iframe-element/* SET TIMEOUT: html/semantics/embedded-content/the-img-element/* +SET TIMEOUT: html/semantics/embedded-content/the-object-element/object-param-url.html +SET TIMEOUT: html/semantics/embedded-content/the-object-element/object-param-url-ref.html SET TIMEOUT: html/semantics/scripting-1/the-script-element/* SET TIMEOUT: html/webappapis/dynamic-markup-insertion/opening-the-input-stream/0* SET TIMEOUT: html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/history-frame.html @@ -182,17 +199,20 @@ SET TIMEOUT: measure-memory/* SET TIMEOUT: media-source/mediasource-util.js SET TIMEOUT: media-source/URL-createObjectURL-revoke.html SET TIMEOUT: mixed-content/generic/sanity-checker.js +SET TIMEOUT: navigation-api/navigation-history-entry/entries-after-bfcache-in-iframe.html SET TIMEOUT: navigation-timing/* SET TIMEOUT: old-tests/submission/Microsoft/history/history_000.htm SET TIMEOUT: paint-timing/resources/subframe-painting.html +SET TIMEOUT: performance-timeline/resources/navigation-id-detached-frame-page.html SET TIMEOUT: portals/resources/portals-adopt-predecessor-portal.html SET TIMEOUT: preload/single-download-preload.html +SET TIMEOUT: preload/resources/slow-exec.js SET TIMEOUT: resize-observer/resources/iframe.html SET TIMEOUT: resource-timing/resources/nested-contexts.js SET TIMEOUT: reporting/resources/first-csp-report.https.sub.html SET TIMEOUT: reporting/resources/second-csp-report.https.sub.html SET TIMEOUT: secure-contexts/basic-popup-and-iframe-tests.https.js -SET TIMEOUT: service-workers/cache-storage/script-tests/cache-abort.js +SET TIMEOUT: service-workers/cache-storage/cache-abort.https.any.js SET TIMEOUT: service-workers/service-worker/activation.https.html SET TIMEOUT: service-workers/service-worker/fetch-frame-resource.https.html SET TIMEOUT: service-workers/service-worker/fetch-request-redirect.https.html @@ -210,7 +230,9 @@ SET TIMEOUT: shadow-dom/scroll-to-the-fragment-in-shadow-tree.html SET TIMEOUT: shadow-dom/slotchange-event.html SET TIMEOUT: trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html SET TIMEOUT: trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.html +SET TIMEOUT: pending-beacon/resources/pending_beacon-helper.js SET TIMEOUT: user-timing/* +SET TIMEOUT: web-animations/crashtests/reparent-animating-element-002.html SET TIMEOUT: web-animations/timing-model/animations/* SET TIMEOUT: web-locks/crashtests/after-worker-termination.https.html SET TIMEOUT: webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html @@ -222,12 +244,6 @@ SET TIMEOUT: webvtt/* SET TIMEOUT: workers/* SET TIMEOUT: xhr/resources/init.htm SET TIMEOUT: xhr/resources/xmlhttprequest-timeout.js -SET TIMEOUT: focus/support/iframe-focus-with-different-site-intermediate-frame-outer.sub.html -SET TIMEOUT: focus/support/iframe-focus-with-different-site-intermediate-frame-middle.sub.html -SET TIMEOUT: focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-outer.sub.html -SET TIMEOUT: focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html -SET TIMEOUT: focus/support/iframe-focuses-parent-different-site-inner.html -SET TIMEOUT: focus/support/iframe-focuses-parent-same-site-inner.html # generate_tests implementation and sample usage GENERATE_TESTS: resources/test/tests/functional/generate-callback.html @@ -319,6 +335,7 @@ SET TIMEOUT: html/cross-origin-embedder-policy/resources/reporting-worker.js SET TIMEOUT: html/cross-origin-opener-policy/navigate-to-aboutblank.https.html SET TIMEOUT: html/cross-origin-opener-policy/navigate-top-to-aboutblank.https.html SET TIMEOUT: html/dom/documents/dom-tree-accessors/Document.currentScript.html +SET TIMEOUT: html/webappapis/dynamic-markup-insertion/opening-the-input-stream/crbug-583445-regression.window.js SET TIMEOUT: html/webappapis/timers/* SET TIMEOUT: orientation-event/resources/orientation-event-helpers.js SET TIMEOUT: portals/history/resources/portal-harness.js @@ -327,8 +344,15 @@ SET TIMEOUT: resources/* SET TIMEOUT: scheduler/tentative/current-task-signal-async-abort.any.js SET TIMEOUT: scheduler/tentative/current-task-signal-async-priority.any.js SET TIMEOUT: speculation-rules/prerender/resources/activation-start.html +SET TIMEOUT: speculation-rules/prerender/resources/prerender-response-code.html SET TIMEOUT: speculation-rules/prerender/resources/deferred-promise-utils.js +SET TIMEOUT: speculation-rules/prerender/resources/session-history-harness.js SET TIMEOUT: speculation-rules/prerender/resources/utils.js +SET TIMEOUT: speculation-rules/prerender/resources/request-picture-in-picture.html +SET TIMEOUT: speculation-rules/prerender/resources/media-autoplay-attribute.html +SET TIMEOUT: speculation-rules/prerender/resources/media-play.html +SET TIMEOUT: html/browsers/browsing-the-web/back-forward-cache/timers.html +SET TIMEOUT: dom/abort/crashtests/timeout-close.html # setTimeout use in reftests SET TIMEOUT: acid/acid3/test.html @@ -340,6 +364,13 @@ SET TIMEOUT: acid/acid3/test.html *: tools/* *: */third_party/* +# .gitignore files in child directories +*: cors/resources/.gitignore +*: css/.gitignore +*: css/css-writing-modes/tools/generators/.gitignore +*: resources/.gitignore +*: webaudio/.gitignore + # Build system virtualenv *: css/tools/_virtualenv/* @@ -356,9 +387,7 @@ CONTENT-VISUAL: css/* CONTENT-MANUAL: css/* ## Support files not in /support/ or similar -SUPPORT-WRONG-DIR: css/requirements.txt SUPPORT-WRONG-DIR: css/README.md -SUPPORT-WRONG-DIR: css/build-css-testsuites.sh SUPPORT-WRONG-DIR: css/*/reftest.list SUPPORT-WRONG-DIR: css/*/README SUPPORT-WRONG-DIR: css/*/README.md @@ -720,6 +749,7 @@ MISSING DEPENDENCY: resources/chromium/contacts_manager_mock.js MISSING DEPENDENCY: resources/chromium/web-bluetooth-test.js MISSING DEPENDENCY: resources/chromium/webusb-test.js MISSING DEPENDENCY: resources/chromium/fake-serial.js +MISSING DEPENDENCY: resources/chromium/fake-hid.js MISSING DEPENDENCY: resources/chromium/generic_sensor_mocks.js MISSING DEPENDENCY: resources/chromium/mock-barcodedetection.js MISSING DEPENDENCY: resources/chromium/mock-direct-sockets.js @@ -727,6 +757,8 @@ MISSING DEPENDENCY: resources/chromium/mock-facedetection.js MISSING DEPENDENCY: resources/chromium/mock-idle-detection.js MISSING DEPENDENCY: resources/chromium/mock-imagecapture.js MISSING DEPENDENCY: resources/chromium/mock-managed-config.js +MISSING DEPENDENCY: resources/chromium/mock-pressure-service.js +MISSING DEPENDENCY: resources/chromium/mock-subapps.js MISSING DEPENDENCY: resources/chromium/mock-textdetection.js MISSING DEPENDENCY: resources/chromium/nfc-mock.js MISSING DEPENDENCY: resources/chromium/webxr-test.js @@ -741,7 +773,11 @@ AHEM SYSTEM FONT: css/css-font-loading/fontface-override-descriptors.html AHEM SYSTEM FONT: css/css-font-loading/fontface-size-adjust-descriptor.html AHEM SYSTEM FONT: css/css-font-loading/fontface-size-adjust-descriptor-ref.html AHEM SYSTEM FONT: css/css-fonts/ascent-descent-override.html +AHEM SYSTEM FONT: css/css-fonts/font-size-adjust-012.html +AHEM SYSTEM FONT: css/css-fonts/font-size-adjust-012-ref.html AHEM SYSTEM FONT: css/css-fonts/line-gap-override.html +AHEM SYSTEM FONT: html/dom/render-blocking/remove-attr-unblocks-rendering.optional.html +AHEM SYSTEM FONT: html/dom/render-blocking/remove-element-unblocks-rendering.optional.html # TODO: The following should be deleted along with the Ahem web font cleanup # PR (https://github.com/web-platform-tests/wpt/pull/18702) @@ -810,8 +846,14 @@ CSS-COLLIDING-REF-NAME: css/css-break/background-image-001-ref.html # Ported crashtests from Mozilla SET TIMEOUT: editing/crashtests/backcolor-in-nested-editing-host-td-from-DOMAttrModified.html +SET TIMEOUT: editing/crashtests/contenteditable-will-be-blurred-by-focus-event-listener.html +SET TIMEOUT: editing/crashtests/designMode-document-will-be-blurred-by-focus-event-listener.html +SET TIMEOUT: editing/crashtests/indent-outdent-after-closing-editable-dialog-element.html SET TIMEOUT: editing/crashtests/inserthtml-after-temporarily-removing-document-element.html SET TIMEOUT: editing/crashtests/inserthtml-in-text-adopted-to-other-document.html SET TIMEOUT: editing/crashtests/insertorderedlist-in-text-adopted-to-other-document.html SET TIMEOUT: editing/crashtests/make-editable-div-inline-and-set-contenteditable-of-input-to-false.html SET TIMEOUT: editing/crashtests/outdent-across-svg-boundary.html +SET TIMEOUT: editing/crashtests/textarea-will-be-blurred-by-focus-event-listener.html +SET TIMEOUT: mathml/crashtests/mozilla/* +PARSE-FAILED: mathml/crashtests/mozilla/289180-1.xml diff --git a/tests/wpt/web-platform-tests/loading/early-hints/404-with-early-hints.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/404-with-early-hints.h2.window.js new file mode 100644 index 00000000000..f28208a30a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/404-with-early-hints.h2.window.js @@ -0,0 +1,10 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const params = new URLSearchParams(); + params.set("resource-url", + SAME_ORIGIN_RESOURCES_URL + "/square.png?" + token()); + const test_url = "resources/404-with-early-hints.h2.py?" + params.toString(); + window.location.replace(new URL(test_url, window.location)); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/arbitrary-header-in-early-hints.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/arbitrary-header-in-early-hints.h2.window.js new file mode 100644 index 00000000000..f0e848ec107 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/arbitrary-header-in-early-hints.h2.window.js @@ -0,0 +1,4 @@ +test(() => { + const test_url = "resources/arbitrary-header-in-early-hints.h2.py"; + window.location.replace(new URL(test_url, window.location)); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/coep-early-hints-none-final-require-corp.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/coep-early-hints-none-final-require-corp.h2.window.js new file mode 100644 index 00000000000..ab135b54939 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/coep-early-hints-none-final-require-corp.h2.window.js @@ -0,0 +1,9 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "unsafe-none"; + const final_policy = "require-corp"; + navigateToCrossOriginEmbedderPolicyMismatchTest(early_hints_policy, + final_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/coep-early-hints-require-corp-final-none.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/coep-early-hints-require-corp-final-none.h2.window.js new file mode 100644 index 00000000000..68e20ba42f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/coep-early-hints-require-corp-final-none.h2.window.js @@ -0,0 +1,9 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "require-corp"; + const final_policy = "unsafe-none"; + navigateToCrossOriginEmbedderPolicyMismatchTest(early_hints_policy, + final_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-absent.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-absent.h2.window.js new file mode 100644 index 00000000000..f61e268c8a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-absent.h2.window.js @@ -0,0 +1,8 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "absent"; + const final_policy = "absent"; + navigateToContentSecurityPolicyBasicTest(early_hints_policy, final_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-allowed.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-allowed.h2.window.js new file mode 100644 index 00000000000..0e1762a28c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-allowed.h2.window.js @@ -0,0 +1,8 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "absent"; + const final_policy = "allowed"; + navigateToContentSecurityPolicyBasicTest(early_hints_policy, final_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-disallowed.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-disallowed.h2.window.js new file mode 100644 index 00000000000..3fcd89c4cc0 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-absent-final-disallowed.h2.window.js @@ -0,0 +1,8 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "absent"; + const final_policy = "disallowed"; + navigateToContentSecurityPolicyBasicTest(early_hints_policy, final_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-absent.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-absent.h2.window.js new file mode 100644 index 00000000000..15128ce5d9d --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-absent.h2.window.js @@ -0,0 +1,8 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "allowed"; + const final_policy = "absent"; + navigateToContentSecurityPolicyBasicTest(early_hints_policy, final_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-allowed.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-allowed.h2.window.js new file mode 100644 index 00000000000..ee51e78bf16 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-allowed.h2.window.js @@ -0,0 +1,8 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "allowed"; + const final_policy = "allowed"; + navigateToContentSecurityPolicyBasicTest(early_hints_policy, final_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-disallowed.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-disallowed.h2.window.js new file mode 100644 index 00000000000..67b39333ad7 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-allowed-final-disallowed.h2.window.js @@ -0,0 +1,8 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "allowed"; + const final_policy = "disallowed"; + navigateToContentSecurityPolicyBasicTest(early_hints_policy, final_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-absent.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-absent.h2.window.js new file mode 100644 index 00000000000..80b563dd888 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-absent.h2.window.js @@ -0,0 +1,8 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "disallowed"; + const final_policy = "absent"; + navigateToContentSecurityPolicyBasicTest(early_hints_policy, final_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-allowed.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-allowed.h2.window.js new file mode 100644 index 00000000000..cfac9b0b986 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-allowed.h2.window.js @@ -0,0 +1,8 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "disallowed"; + const final_policy = "allowed"; + navigateToContentSecurityPolicyBasicTest(early_hints_policy, final_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-disallowed.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-disallowed.h2.window.js new file mode 100644 index 00000000000..c8a7ca346fc --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/csp-early-hints-disallowed-final-disallowed.h2.window.js @@ -0,0 +1,8 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "disallowed"; + const final_policy = "disallowed"; + navigateToContentSecurityPolicyBasicTest(early_hints_policy, final_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/embed-object.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/embed-object.h2.window.js new file mode 100644 index 00000000000..82365fafddb --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/embed-object.h2.window.js @@ -0,0 +1,44 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +promise_test(async (t) => { + const resource_url = SAME_ORIGIN_RESOURCES_URL + "/empty.js?" + token(); + const promise = new Promise((resolve) => { + const params = new URLSearchParams(); + params.set("resource-url", resource_url); + params.set("token", token()); + const embed_url = SAME_ORIGIN_RESOURCES_URL + "/png-with-early-hints.h2.py?" + params.toString(); + + const el = document.createElement("embed"); + el.src = embed_url; + el.onload = resolve; + document.body.appendChild(el); + }); + await promise; + + await fetchScript(resource_url); + const entries = performance.getEntriesByName(resource_url); + assert_equals(entries.length, 1); + assert_not_equals(entries[0].transferSize, 0); +}, "Early hints for an embed element should be ignored."); + +promise_test(async (t) => { + const resource_url = SAME_ORIGIN_RESOURCES_URL + "/empty.js?" + token(); + const promise = new Promise((resolve) => { + const params = new URLSearchParams(); + params.set("resource-url", resource_url); + params.set("token", token()); + const object_url = SAME_ORIGIN_RESOURCES_URL + "/png-with-early-hints.h2.py?" + params.toString(); + + const el = document.createElement("object"); + el.data = object_url; + el.onload = resolve; + document.body.appendChild(el); + }); + await promise; + + await fetchScript(resource_url); + const entries = performance.getEntriesByName(resource_url); + assert_equals(entries.length, 1); + assert_not_equals(entries[0].transferSize, 0); +}, "Early hints for an object element should be ignored."); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/iframe-coep-disallow.h2.html b/tests/wpt/web-platform-tests/loading/early-hints/iframe-coep-disallow.h2.html new file mode 100644 index 00000000000..d2efc0fefe5 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/iframe-coep-disallow.h2.html @@ -0,0 +1,35 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/iframe-coep-disallow.h2.html.headers b/tests/wpt/web-platform-tests/loading/early-hints/iframe-coep-disallow.h2.html.headers new file mode 100644 index 00000000000..6604450991a --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/iframe-coep-disallow.h2.html.headers @@ -0,0 +1 @@ +Cross-Origin-Embedder-Policy: require-corp diff --git a/tests/wpt/web-platform-tests/loading/early-hints/iframe-pdf.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/iframe-pdf.h2.window.js new file mode 100644 index 00000000000..11c1443c34d --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/iframe-pdf.h2.window.js @@ -0,0 +1,31 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +promise_test(async (t) => { + if (!navigator.pdfViewerEnabled) { + return; + } + + const iframe = document.createElement("iframe"); + const resource_url = SAME_ORIGIN_RESOURCES_URL + "/empty.js?" + token(); + const promise = new Promise((resolve) => { + const params = new URLSearchParams(); + params.set("resource-url", resource_url); + params.set("token", token()); + const iframe_url = SAME_ORIGIN_RESOURCES_URL + "/pdf-with-early-hints.h2.py?" + params.toString(); + + iframe.src = iframe_url; + iframe.onload = resolve; + document.body.appendChild(iframe); + }); + await promise; + + // `iframe` should not preload the hinted resource. + const iframe_entries = iframe.contentWindow.performance.getEntriesByName(resource_url); + assert_equals(iframe_entries.length, 0); + + await fetchScript(resource_url); + const entries = performance.getEntriesByName(resource_url); + assert_equals(entries.length, 1); + assert_not_equals(entries[0].transferSize, 0); +}, "Early hints for an iframe of which content is pdf should be ignored."); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/iframe-x-frame-options-deny.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/iframe-x-frame-options-deny.h2.window.js new file mode 100644 index 00000000000..b3a114f7c64 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/iframe-x-frame-options-deny.h2.window.js @@ -0,0 +1,27 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +promise_test(async (t) => { + const iframe = document.createElement("iframe"); + + const resource_url = SAME_ORIGIN_RESOURCES_URL + "/empty.js?" + token(); + const params = new URLSearchParams(); + params.set("resource-url", resource_url); + params.set("token", token()); + params.set("x-frame-options", "DENY"); + const iframe_url = SAME_ORIGIN_RESOURCES_URL + "/html-with-early-hints.h2.py?" + params.toString(); + + iframe.src = iframe_url; + document.body.appendChild(iframe); + // Make sure the iframe didn't load. See https://github.com/whatwg/html/issues/125 for why a + // timeout is used here. Long term all network error handling should be similar and have a + // reliable event. + assert_equals(iframe.contentDocument.body.localName, "body"); + await t.step_wait(() => iframe.contentDocument === null); + + // Fetch the hinted resource and make sure it's not preloaded. + await fetchScript(resource_url); + const entries = performance.getEntriesByName(resource_url); + assert_equals(entries.length, 1); + assert_not_equals(entries[0].transferSize, 0); +}, "Early hints for an iframe that violates X-Frame-Options should be ignored."); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/invalid-headers-in-early-hints.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/invalid-headers-in-early-hints.h2.window.js new file mode 100644 index 00000000000..55181877df1 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/invalid-headers-in-early-hints.h2.window.js @@ -0,0 +1,22 @@ +async function testInvalidHeader(t, header_value) { + const params = new URLSearchParams(); + params.set("header-value", header_value); + const test_url = "resources/invalid-headers-in-early-hints.h2.py?" + params.toString(); + const opened_window = window.open(test_url, "invalid-header-in-early-hints"); + + // Use step_timeout() because neither "load" event nor postMessage() would + // work. Opening the test page should result in a network protocol error and + // accessing the document of the opened window should throw a SecurityError. + await new Promise(resolve => t.step_timeout(resolve, 1000)); + assert_throws_dom("SecurityError", () => { + opened_window.document; + }, "window.open() should not load the test page successfully."); +} + +promise_test(async (t) => { + await testInvalidHeader(t, "foo\r\nbar"); +}, "Early Hints contains invalid header: newline byte"); + +promise_test(async (t) => { + await testInvalidHeader(t, "foo\x00bar"); +}, "Early Hints contains invalid header: nul byte"); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/modulepreload-in-early-hints.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/modulepreload-in-early-hints.h2.window.js new file mode 100644 index 00000000000..5627f04a0fe --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/modulepreload-in-early-hints.h2.window.js @@ -0,0 +1,10 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const params = new URLSearchParams(); + params.set("resource-url", + SAME_ORIGIN_RESOURCES_URL + "/empty.js?" + token()); + const test_url = "resources/modulepreload-in-early-hints.h2.py?" + params.toString(); + window.location.replace(new URL(test_url, window.location)); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/multiple-early-hints-responses.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/multiple-early-hints-responses.h2.window.js new file mode 100644 index 00000000000..2aba051ead3 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/multiple-early-hints-responses.h2.window.js @@ -0,0 +1,11 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const params = new URLSearchParams(); + params.set("first-preload", SAME_ORIGIN_RESOURCES_URL + "/empty.js?" + token()); + params.set("second-preload", CROSS_ORIGIN_RESOURCES_URL + "/empty.js?" + token()); + params.set("second-preload-origin", CROSS_ORIGIN); + const test_url = "resources/multiple-early-hints-responses.h2.py?" + params.toString(); + window.location.replace(new URL(test_url, window.location)); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/loading/early-hints/preconnect-in-early-hints.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/preconnect-in-early-hints.h2.window.js new file mode 100644 index 00000000000..821d0e40a8c --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/preconnect-in-early-hints.h2.window.js @@ -0,0 +1,12 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const resource_origin = CROSS_ORIGIN; + const resource_url = CROSS_ORIGIN + RESOURCES_PATH + "/empty.js?" + token(); + const params = new URLSearchParams(); + params.set("resource-origin", resource_origin); + params.set("resource-url", resource_url); + const test_url = "resources/preconnect-in-early-hints.h2.py?" + params.toString(); + window.location.replace(new URL(test_url, window.location)); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/preload-finished-before-final-response.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/preload-finished-before-final-response.h2.window.js new file mode 100644 index 00000000000..c63239be1f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/preload-finished-before-final-response.h2.window.js @@ -0,0 +1,11 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const params = new URLSearchParams(); + const id = token(); + params.set("resource-url", SAME_ORIGIN_RESOURCES_URL + "/fetch-and-record-js.h2.py?id=" + id); + params.set("resource-id", id); + const test_url = "resources/preload-finished-before-final-response.h2.py?" + params.toString(); + window.location.replace(new URL(test_url, window.location)); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/loading/early-hints/preload-finished-while-receiving-final-response-body.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/preload-finished-while-receiving-final-response-body.h2.window.js new file mode 100644 index 00000000000..bb03902bd14 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/preload-finished-while-receiving-final-response-body.h2.window.js @@ -0,0 +1,11 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const params = new URLSearchParams(); + const id = token(); + params.set("resource-url", SAME_ORIGIN_RESOURCES_URL + "/fetch-and-record-js.h2.py?id=" + id); + params.set("resource-id", id); + const test_url = "resources/preload-finished-while-receiving-final-response-body.h2.py?" + params.toString(); + window.location.replace(new URL(test_url, window.location)); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/loading/early-hints/preload-in-flight-when-consumed.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/preload-in-flight-when-consumed.h2.window.js new file mode 100644 index 00000000000..beaa45e2ddf --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/preload-in-flight-when-consumed.h2.window.js @@ -0,0 +1,11 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const params = new URLSearchParams(); + const id = token(); + params.set("resource-url", SAME_ORIGIN_RESOURCES_URL + "/delayed-js.h2.py?id=" + id); + params.set("resource-id", id); + const test_url = "resources/preload-in-flight-when-consumed.h2.py?" + params.toString(); + window.location.replace(new URL(test_url, window.location)); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/loading/early-hints/preload-initiator-type.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/preload-initiator-type.h2.window.js new file mode 100644 index 00000000000..959aacef497 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/preload-initiator-type.h2.window.js @@ -0,0 +1,9 @@ +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const preloads = [{ + "url": "empty.js?" + Date.now(), + "as_attr": "script", + }]; + navigateToTestWithEarlyHints("resources/preload-initiator-type.html", preloads); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/loading/early-hints/preload-with-csp-document-disallow.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/preload-with-csp-document-disallow.h2.window.js new file mode 100644 index 00000000000..87759b28a0b --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/preload-with-csp-document-disallow.h2.window.js @@ -0,0 +1,7 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "allowed"; + navigateToContentSecurityPolicyDocumentDisallowTest(early_hints_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/preload-without-csp-document-disallow.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/preload-without-csp-document-disallow.h2.window.js new file mode 100644 index 00000000000..3de55d04c35 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/preload-without-csp-document-disallow.h2.window.js @@ -0,0 +1,7 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const early_hints_policy = "absent"; + navigateToContentSecurityPolicyDocumentDisallowTest(early_hints_policy); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/redirect-cross-origin-between-early-hints.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/redirect-cross-origin-between-early-hints.h2.window.js new file mode 100644 index 00000000000..2ca92cf82ca --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/redirect-cross-origin-between-early-hints.h2.window.js @@ -0,0 +1,14 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const params = new URLSearchParams(); + params.set("preload-before-redirect", SAME_ORIGIN_RESOURCES_URL + "/empty.js?" + token()); + params.set("preload-after-redirect", CROSS_ORIGIN_RESOURCES_URL + "/empty.js?" + token()); + params.set("redirect-url", CROSS_ORIGIN_RESOURCES_URL + "/redirect-between-early-hints.h2.py"); + params.set("final-test-page", "redirect-cross-origin-between-early-hints.html"); + + params.set("test-step", "redirect"); + const test_url = "resources/redirect-between-early-hints.h2.py?" + params.toString(); + window.location.replace(new URL(test_url, window.location)); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/loading/early-hints/redirect-cross-origin.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/redirect-cross-origin.h2.window.js new file mode 100644 index 00000000000..548759b19cc --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/redirect-cross-origin.h2.window.js @@ -0,0 +1,10 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const params = new URLSearchParams(); + params.set("preload-url", SAME_ORIGIN_RESOURCES_URL + "/empty.js?" + token()); + params.set("redirect-url", CROSS_ORIGIN_RESOURCES_URL + "/redirect-cross-origin.html"); + const test_url = "resources/redirect-with-early-hints.h2.py?" + params.toString(); + window.location.replace(new URL(test_url, window.location)); +}); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/redirect-same-origin-between-early-hints.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/redirect-same-origin-between-early-hints.h2.window.js new file mode 100644 index 00000000000..276303608ef --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/redirect-same-origin-between-early-hints.h2.window.js @@ -0,0 +1,14 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const params = new URLSearchParams(); + params.set("preload-before-redirect", SAME_ORIGIN_RESOURCES_URL + "/empty.js?" + token()); + params.set("preload-after-redirect", SAME_ORIGIN_RESOURCES_URL + "/empty.js?" + token()); + params.set("redirect-url", SAME_ORIGIN_RESOURCES_URL + "/redirect-between-early-hints.h2.py"); + params.set("final-test-page", "redirect-same-origin-between-early-hints.html"); + + params.set("test-step", "redirect"); + const test_url = "resources/redirect-between-early-hints.h2.py?" + params.toString(); + window.location.replace(new URL(test_url, window.location)); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/loading/early-hints/redirect-same-origin.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/redirect-same-origin.h2.window.js new file mode 100644 index 00000000000..88d64f399a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/redirect-same-origin.h2.window.js @@ -0,0 +1,10 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => { + const params = new URLSearchParams(); + params.set("preload-url", SAME_ORIGIN_RESOURCES_URL + "/empty.js?" + token()); + params.set("redirect-url", SAME_ORIGIN_RESOURCES_URL + "/redirect-same-origin.html"); + const test_url = "resources/redirect-with-early-hints.h2.py?" + params.toString(); + window.location.replace(new URL(test_url, window.location)); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-no-referrer.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-no-referrer.h2.window.js new file mode 100644 index 00000000000..10f2c2c4bcd --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-no-referrer.h2.window.js @@ -0,0 +1,4 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => testReferrerPolicy("no-referrer")); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-origin-when-cross-origin.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-origin-when-cross-origin.h2.window.js new file mode 100644 index 00000000000..250f3508779 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-origin-when-cross-origin.h2.window.js @@ -0,0 +1,4 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => testReferrerPolicy("origin-when-cross-origin")); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-origin.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-origin.h2.window.js new file mode 100644 index 00000000000..3fbe9dff76e --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-origin.h2.window.js @@ -0,0 +1,4 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => testReferrerPolicy("origin")); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-same-origin.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-same-origin.h2.window.js new file mode 100644 index 00000000000..4d24e1bf981 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-same-origin.h2.window.js @@ -0,0 +1,4 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => testReferrerPolicy("same-origin")); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-unsafe-url.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-unsafe-url.h2.window.js new file mode 100644 index 00000000000..a0c304cb10f --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/referrer-policy-unsafe-url.h2.window.js @@ -0,0 +1,4 @@ +// META: script=/common/utils.js +// META: script=resources/early-hints-helpers.sub.js + +test(() => testReferrerPolicy("unsafe-url")); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/404-with-early-hints.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/404-with-early-hints.h2.py new file mode 100644 index 00000000000..bb75bc0cbd4 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/404-with-early-hints.h2.py @@ -0,0 +1,24 @@ +import os + + +def handle_headers(frame, request, response): + resource_url = request.GET.first(b"resource-url").decode() + link_header_value = "<{}>; rel=preload; as=image".format(resource_url) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + response.status = 404 + response.headers[b"content-type"] = "text/html" + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "404-with-early-hints.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/404-with-early-hints.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/404-with-early-hints.html new file mode 100644 index 00000000000..2d351b08b8a --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/404-with-early-hints.html @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/arbitrary-header-in-early-hints.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/arbitrary-header-in-early-hints.h2.py new file mode 100644 index 00000000000..bb118c32006 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/arbitrary-header-in-early-hints.h2.py @@ -0,0 +1,24 @@ +import os + + +def handle_headers(frame, request, response): + # Send an early hints response with an unsupported header. + # User agents should ignore it. + early_hints = [ + (b":status", b"103"), + (b"x-arbitrary-header", b"foobar"), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + response.status = 200 + response.headers[b"content-type"] = "text/html" + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "arbitrary-header-in-early-hints.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/arbitrary-header-in-early-hints.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/arbitrary-header-in-early-hints.html new file mode 100644 index 00000000000..cc939f5ea69 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/arbitrary-header-in-early-hints.html @@ -0,0 +1,11 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/coep-mismatch.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/coep-mismatch.h2.py new file mode 100644 index 00000000000..240a804f572 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/coep-mismatch.h2.py @@ -0,0 +1,30 @@ +import os + + +def handle_headers(frame, request, response): + # Send a 103 response. + resource_url = request.GET.first(b"resource-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(resource_url) + coep_value = request.GET.first(b"early-hints-policy").decode() + early_hints = [ + (b":status", b"103"), + (b"cross-origin-embedder-policy", coep_value), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + # Send the final response header. + coep_value = request.GET.first(b"final-policy").decode() + response.status = 200 + response.headers["content-type"] = "text/html" + response.headers["cross-origin-embedder-policy"] = coep_value + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "coep-mismatch.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/coep-mismatch.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/coep-mismatch.html new file mode 100644 index 00000000000..1811bf5506f --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/coep-mismatch.html @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-basic-loader.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-basic-loader.h2.py new file mode 100644 index 00000000000..080901efe60 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-basic-loader.h2.py @@ -0,0 +1,47 @@ +import os + + +def _calculate_csp_value(policy, resource_origin): + if policy == "absent": + return None + elif policy == "allowed": + return "script-src 'self' 'unsafe-inline' {}".format(resource_origin) + elif policy == "disallowed": + return "script-src 'self' 'unsafe-inline'" + else: + return None + + +def handle_headers(frame, request, response): + resource_origin = request.GET.first(b"resource-origin").decode() + + # Send a 103 response. + resource_url = request.GET.first(b"resource-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(resource_url) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + early_hints_csp = _calculate_csp_value( + request.GET.first(b"early-hints-policy").decode(), resource_origin) + if early_hints_csp: + early_hints.append((b"content-security-policy", early_hints_csp)) + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + # Send the final response header. + response.status = 200 + response.headers["content-type"] = "text/html" + final_csp = _calculate_csp_value( + request.GET.first(b"final-policy").decode(), resource_origin) + if final_csp: + response.headers["content-security-policy"] = final_csp + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "csp-basic.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-basic.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-basic.html new file mode 100644 index 00000000000..0086711fb7c --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-basic.html @@ -0,0 +1,37 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-document-disallow-loader.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-document-disallow-loader.h2.py new file mode 100644 index 00000000000..bffa90c753d --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-document-disallow-loader.h2.py @@ -0,0 +1,39 @@ +import os + + +def handle_headers(frame, request, response): + # Send a 103 response. + resource_url = request.GET.first(b"resource-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(resource_url) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + + early_hints_policy = request.GET.first(b"early-hints-policy").decode() + # In this test handler "allowed" or "absent" are only valid policies because + # csp-document-disallow.html always sets CSP to disallow the preload. + # "disallowed" makes no observable changes in the test. Note that + # csp-basic.html covers disallowing preloads in Early Hints. + assert early_hints_policy == "allowed" or early_hints_policy == "absent" + + if early_hints_policy == "allowed": + resource_origin = request.GET.first(b"resource-origin").decode() + csp_value = "script-src 'self' 'unsafe-inline' {}".format(resource_origin) + early_hints.append((b"content-security-policy", csp_value)) + + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + # Send the final response header. + response.status = 200 + response.headers["content-type"] = "text/html" + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "csp-document-disallow.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-document-disallow.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-document-disallow.html new file mode 100644 index 00000000000..53b6ee232dc --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/csp-document-disallow.html @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/delayed-js.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/delayed-js.h2.py new file mode 100644 index 00000000000..93865b930da --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/delayed-js.h2.py @@ -0,0 +1,16 @@ +import importlib + +utils = importlib.import_module("loading.early-hints.resources.utils") + + +def main(request, response): + id = request.GET.first(b"id") + # Wait until the id is set via resume-delayed-js.h2.py. + utils.wait_for_preload_to_finish(request, id) + + headers = [ + ("Content-Type", "text/javascript"), + ("Cache-Control", "max-age=600"), + ] + body = "/*empty script*/" + return (200, "OK"), headers, body diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-helpers.sub.js b/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-helpers.sub.js new file mode 100644 index 00000000000..3991e8fe9da --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-helpers.sub.js @@ -0,0 +1,180 @@ +"use strict"; + +const SAME_ORIGIN = "https://{{host}}:{{ports[h2][0]}}"; +const CROSS_ORIGIN = "https://{{hosts[alt][www]}}:{{ports[h2][0]}}"; + +const RESOURCES_PATH = "/loading/early-hints/resources"; +const SAME_ORIGIN_RESOURCES_URL = SAME_ORIGIN + RESOURCES_PATH; +const CROSS_ORIGIN_RESOURCES_URL = CROSS_ORIGIN + RESOURCES_PATH; + +/** + * Navigate to a test page with an Early Hints response. + * + * @typedef {Object} Preload + * @property {string} url - A URL to preload. Note: This is relative to the + * `test_url` parameter of `navigateToTestWithEarlyHints()`. + * @property {string} as_attr - `as` attribute of this preload. + * + * @param {string} test_url - URL of a test after the Early Hints response. + * @param {Array} preloads - Preloads included in the Early Hints response. + */ +function navigateToTestWithEarlyHints(test_url, preloads) { + const params = new URLSearchParams(); + params.set("test_url", test_url); + for (const preload of preloads) { + params.append("preloads", JSON.stringify(preload)); + } + const url = "resources/early-hints-test-loader.h2.py?" + params.toString(); + window.location.replace(new URL(url, window.location)); +} + +/** + * Parses the query string of the current window location and returns preloads + * in the Early Hints response sent via `navigateToTestWithEarlyHints()`. + * + * @returns {Array} + */ +function getPreloadsFromSearchParams() { + const params = new URLSearchParams(window.location.search); + const encoded_preloads = params.getAll("preloads"); + const preloads = []; + for (const encoded of encoded_preloads) { + preloads.push(JSON.parse(encoded)); + } + return preloads; +} + +/** + * Fetches a script or an image. + * + * @param {string} element - "script" or "img". + * @param {string} url - URL of the resource. + */ +async function fetchResource(element, url) { + return new Promise((resolve, reject) => { + const el = document.createElement(element); + el.src = url; + el.onload = resolve; + el.onerror = _ => reject(new Error("Failed to fetch resource: " + url)); + document.body.appendChild(el); + }); +} + +/** + * Fetches a script. + * + * @param {string} url + */ +async function fetchScript(url) { + return fetchResource("script", url); +} + +/** + * Fetches an image. + * + * @param {string} url + */ + async function fetchImage(url) { + return fetchResource("img", url); +} + +/** + * Returns true when the resource is preloaded via Early Hints. + * + * @param {string} url + * @returns {boolean} + */ +function isPreloadedByEarlyHints(url) { + const entries = performance.getEntriesByName(url); + if (entries.length === 0) { + return false; + } + assert_equals(entries.length, 1); + return entries[0].initiatorType === "early-hints"; +} + +/** + * Navigate to the referrer policy test page. + * + * @param {string} referrer_policy - A value of Referrer-Policy to test. + */ +function testReferrerPolicy(referrer_policy) { + const params = new URLSearchParams(); + params.set("referrer-policy", referrer_policy); + const same_origin_preload_url = SAME_ORIGIN_RESOURCES_URL + "/fetch-and-record-js.h2.py?id=" + token(); + params.set("same-origin-preload-url", same_origin_preload_url); + const cross_origin_preload_url = CROSS_ORIGIN_RESOURCES_URL + "/fetch-and-record-js.h2.py?id=" + token(); + params.set("cross-origin-preload-url", cross_origin_preload_url); + + const path = "resources/referrer-policy-test-loader.h2.py?" + params.toString(); + const url = new URL(path, window.location); + window.location.replace(url); +} + +/** + * Navigate to the content security policy basic test. The test page sends an + * Early Hints response with a cross origin resource preload. CSP headers are + * configured based on the given policies. A policy should be one of the + * followings: + * "absent" - Do not send Content-Security-Policy header + * "allowed" - Set Content-Security-Policy to allow the cross origin preload + * "disallowed" - Set Content-Security-Policy to disallow the cross origin preload + * + * @param {string} early_hints_policy - The policy for the Early Hints response + * @param {string} final_policy - The policy for the final response + */ +function navigateToContentSecurityPolicyBasicTest( + early_hints_policy, final_policy) { + const params = new URLSearchParams(); + params.set("resource-origin", CROSS_ORIGIN); + params.set("resource-url", + CROSS_ORIGIN_RESOURCES_URL + "/empty.js?" + token()); + params.set("early-hints-policy", early_hints_policy); + params.set("final-policy", final_policy); + + const url = "resources/csp-basic-loader.h2.py?" + params.toString(); + window.location.replace(new URL(url, window.location)); +} + +/** + * Navigate to a test page which sends an Early Hints containing a cross origin + * preload link with/without Content-Security-Policy header. The CSP header is + * configured based on the given policy. The test page disallows the preload + * while the preload is in-flight. The policy should be one of the followings: + * "absent" - Do not send Content-Security-Policy header + * "allowed" - Set Content-Security-Policy to allow the cross origin preload + * + * @param {string} early_hints_policy + */ +function navigateToContentSecurityPolicyDocumentDisallowTest(early_hints_policy) { + const resource_id = token(); + const params = new URLSearchParams(); + params.set("resource-origin", CROSS_ORIGIN); + params.set("resource-url", + CROSS_ORIGIN_RESOURCES_URL + "/delayed-js.h2.py?id=" + resource_id); + params.set("resume-url", + CROSS_ORIGIN_RESOURCES_URL + "/resume-delayed-js.h2.py?id=" + resource_id); + params.set("early-hints-policy", early_hints_policy); + + const url = "resources/csp-document-disallow-loader.h2.py?" + params.toString(); + window.location.replace(new URL(url, window.location)); +} + +/** + * Navigate to a test page which sends different Cross-Origin-Embedder-Policy + * values in an Early Hints response and the final response. + * + * @param {string} early_hints_policy - The policy for the Early Hints response + * @param {string} final_policy - The policy for the final response + */ +function navigateToCrossOriginEmbedderPolicyMismatchTest( + early_hints_policy, final_policy) { + const params = new URLSearchParams(); + params.set("resource-url", + CROSS_ORIGIN_RESOURCES_URL + "/empty-corp-absent.js?" + token()); + params.set("early-hints-policy", early_hints_policy); + params.set("final-policy", final_policy); + + const url = "resources/coep-mismatch.h2.py?" + params.toString(); + window.location.replace(new URL(url, window.location)); +} diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-test-loader.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-test-loader.h2.py new file mode 100644 index 00000000000..aa9188c6dbc --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-test-loader.h2.py @@ -0,0 +1,45 @@ +# An HTTP/2 handler for testing Early Hints. Used as an entry point of Early +# Hints related tests to inject Early Hints response. See comments in +# `early-hints-helpers.sub.js`. + +import json +import os +import time + + +def _remove_relative_resources_prefix(path): + if path.startswith("resources/"): + return path[len("resources/"):] + return path + + +def handle_headers(frame, request, response): + preload_headers = [] + for encoded_preload in request.GET.get_list(b"preloads"): + preload = json.loads(encoded_preload.decode("utf-8")) + header = "<{}>; rel=preload; as={}".format(preload["url"], preload["as_attr"]) + preload_headers.append(header.encode()) + + # Send a 103 response. + early_hints = [(b":status", b"103")] + for header in preload_headers: + early_hints.append((b"link", header)) + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + # Simulate the response generation is taking time. + time.sleep(0.2) + response.status = 200 + response.headers[b"content-type"] = "text/html" + for header in preload_headers: + response.headers.append(b"link", header) + response.write_status_headers() + + +def main(request, response): + test_path = _remove_relative_resources_prefix( + request.GET[b"test_url"].decode("utf-8")) + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, test_path) + test_content = open(file_path, "r").read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/empty-corp-absent.js b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty-corp-absent.js new file mode 100644 index 00000000000..b7965b64a11 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty-corp-absent.js @@ -0,0 +1 @@ +// Empty script diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/empty-corp-absent.js.headers b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty-corp-absent.js.headers new file mode 100644 index 00000000000..175cdf80464 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty-corp-absent.js.headers @@ -0,0 +1 @@ +cache-control: max-age=600 diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.js b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.js new file mode 100644 index 00000000000..3e211cc8d2b --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.js @@ -0,0 +1 @@ +// Empty script \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.js.headers b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.js.headers new file mode 100644 index 00000000000..1738466bcb3 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.js.headers @@ -0,0 +1,4 @@ +cache-control: max-age=600 +access-control-allow-origin: * +timing-allow-origin: * +cross-origin-resource-policy: cross-origin diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/example.pdf b/tests/wpt/web-platform-tests/loading/early-hints/resources/example.pdf new file mode 100644 index 00000000000..7bad251ba7e --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/example.pdf @@ -0,0 +1,50 @@ +%PDF-1.7 +% ò¤ô +1 0 obj << + /Type /Catalog + /Pages 2 0 R +>> +endobj +2 0 obj << + /Type /Pages + /MediaBox [ 0 0 200 300 ] + /Count 1 + /Kids [ 3 0 R ] +>> +endobj +3 0 obj << + /Type /Page + /Parent 2 0 R + /Contents 4 0 R +>> +endobj +4 0 obj << +>> +stream +q +0 0 0 rg +0 290 10 10 re B* +10 150 50 30 re B* +0 0 1 rg +190 290 10 10 re B* +70 232 50 30 re B* +0 1 0 rg +190 0 10 10 re B* +130 150 50 30 re B* +1 0 0 rg +0 0 10 10 re B* +70 67 50 30 re B* +Q +endstream +endobj +xref +0 5 +0000000000 65535 f +0000000015 00000 n +0000000068 00000 n +0000000161 00000 n +0000000230 00000 n +trailer<< /Root 1 0 R /Size 5 >> +startxref +456 +%%EOF diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/fetch-and-record-js.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/fetch-and-record-js.h2.py new file mode 100644 index 00000000000..169f70c0450 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/fetch-and-record-js.h2.py @@ -0,0 +1,16 @@ +import importlib +import time + +utils = importlib.import_module("loading.early-hints.resources.utils") + + +def main(request, response): + utils.store_request_timing_and_headers(request) + headers = [ + ("Content-Type", "text/javascript"), + ("Cache-Control", "max-age=600"), + ] + body = "/*empty script*/" + # Sleep to simulate loading time. + time.sleep(0.05) + return (200, "OK"), headers, body diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/get-fetch-timing-and-headers.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/get-fetch-timing-and-headers.h2.py new file mode 100644 index 00000000000..59f67be3cf9 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/get-fetch-timing-and-headers.h2.py @@ -0,0 +1,12 @@ +import importlib + +utils = importlib.import_module("loading.early-hints.resources.utils") + + +def main(request, response): + headers = [ + ("Content-Type", "application/json"), + ("Access-Control-Allow-Origin", "*"), + ] + body = utils.get_request_timing_and_headers(request) + return (200, "OK"), headers, body diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/html-with-early-hints.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/html-with-early-hints.h2.py new file mode 100644 index 00000000000..fc7ed0ffee4 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/html-with-early-hints.h2.py @@ -0,0 +1,21 @@ +def handle_headers(frame, request, response): + resource_url = request.GET.first(b"resource-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(resource_url) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + response.status = 200 + response.headers[b"content-type"] = "text/html" + if b"x-frame-options" in request.GET: + x_frame_options = request.GET.first(b"x-frame-options").decode() + response.headers[b"x-frame-options"] = x_frame_options + response.write_status_headers() + + +def main(request, response): + content = "" + response.writer.write_data(item=content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/invalid-headers-in-early-hints.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/invalid-headers-in-early-hints.h2.py new file mode 100644 index 00000000000..438d1c79acc --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/invalid-headers-in-early-hints.h2.py @@ -0,0 +1,20 @@ +import os + + +def handle_headers(frame, request, response): + header_value = request.GET.first(b"header-value") + early_hints = [ + (b":status", b"103"), + (b"invalid-header", header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + response.status = 200 + response.headers[b"content-type"] = "text/html" + response.write_status_headers() + + +def main(request, response): + test_content = "
                                                                      This page should not be loaded.
                                                                      " + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/modulepreload-in-early-hints.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/modulepreload-in-early-hints.h2.py new file mode 100644 index 00000000000..231b3bc69cb --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/modulepreload-in-early-hints.h2.py @@ -0,0 +1,24 @@ +import os + + +def handle_headers(frame, request, response): + resource_url = request.GET.first(b"resource-url").decode() + link_header_value = "<{}>; rel=modulepreload".format(resource_url) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + response.status = 200 + response.headers[b"content-type"] = "text/html" + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "modulepreload-in-early-hints.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/modulepreload-in-early-hints.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/modulepreload-in-early-hints.html new file mode 100644 index 00000000000..44aebf720a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/modulepreload-in-early-hints.html @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/multiple-early-hints-responses.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/multiple-early-hints-responses.h2.py new file mode 100644 index 00000000000..3cc221abf23 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/multiple-early-hints-responses.h2.py @@ -0,0 +1,39 @@ +import os + + +def handle_headers(frame, request, response): + # Send two Early Hints responses. + + first_preload = request.GET.first(b"first-preload").decode() + link_header_value = "<{}>; rel=preload; as=script".format(first_preload) + early_hints = [ + (b":status", b"103"), + (b"content-security-policy", "script-src 'self' 'unsafe-inline'"), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + second_preload = request.GET.first(b"second-preload").decode() + link_header_value = "<{}>; rel=preload; as=script".format(second_preload) + second_preload_origin = request.GET.first(b"second-preload-origin").decode() + csp_value = "script-src 'self' 'unsafe-inline' {}".format(second_preload_origin) + early_hints = [ + (b":status", b"103"), + (b"content-security-policy", csp_value), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + response.status = 200 + response.headers[b"content-type"] = "text/html" + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "multiple-early-hints-responses.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/multiple-early-hints-responses.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/multiple-early-hints-responses.html new file mode 100644 index 00000000000..3be2852348b --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/multiple-early-hints-responses.html @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/pdf-with-early-hints.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/pdf-with-early-hints.h2.py new file mode 100644 index 00000000000..0d05f2a3c57 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/pdf-with-early-hints.h2.py @@ -0,0 +1,26 @@ +import os +import time + +def handle_headers(frame, request, response): + resource_url = request.GET.first(b"resource-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(resource_url) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + # Sleep to simulate a slow generation of the final response. + time.sleep(0.1) + response.status = 200 + response.headers[b"content-type"] = "application/pdf" + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "example.pdf") + with open(file_path, "rb") as f: + content = f.read() + response.writer.write_data(item=content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/png-with-early-hints.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/png-with-early-hints.h2.py new file mode 100644 index 00000000000..0785d512c1b --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/png-with-early-hints.h2.py @@ -0,0 +1,26 @@ +import os +import time + +def handle_headers(frame, request, response): + resource_url = request.GET.first(b"resource-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(resource_url) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + # Sleep to simulate a slow generation of the final response. + time.sleep(0.1) + response.status = 200 + response.headers[b"content-type"] = "image/png" + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "square.png") + with open(file_path, "rb") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/preconnect-in-early-hints.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/preconnect-in-early-hints.h2.py new file mode 100644 index 00000000000..e448fd0af71 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/preconnect-in-early-hints.h2.py @@ -0,0 +1,26 @@ +import os + + +def handle_headers(frame, request, response): + # Send a 103 response. + resource_origin = request.GET.first(b"resource-origin").decode() + link_header_value = "<{}>; rel=preconnect".format(resource_origin) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + # Send the final response header. + response.status = 200 + response.headers["content-type"] = "text/html" + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "preconnect-in-early-hints.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/preconnect-in-early-hints.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/preconnect-in-early-hints.html new file mode 100644 index 00000000000..8ec8fde5e67 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/preconnect-in-early-hints.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-before-final-response.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-before-final-response.h2.py new file mode 100644 index 00000000000..d0b12408d9c --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-before-final-response.h2.py @@ -0,0 +1,31 @@ +import importlib +import os + +utils = importlib.import_module("loading.early-hints.resources.utils") + + +def handle_headers(frame, request, response): + resource_url = request.GET.first(b"resource-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(resource_url) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + # Wait for preload to finish before sending the final response headers. + resource_id = request.GET.first(b"resource-id").decode() + utils.wait_for_preload_to_finish(request, resource_id) + + response.status = 200 + response.headers[b"content-type"] = "text/html" + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "preload-finished-before-final-response.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-before-final-response.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-before-final-response.html new file mode 100644 index 00000000000..d965b404203 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-before-final-response.html @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-while-receiving-final-response-body.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-while-receiving-final-response-body.h2.py new file mode 100644 index 00000000000..1ba486002c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-while-receiving-final-response-body.h2.py @@ -0,0 +1,31 @@ +import importlib +import os + +utils = importlib.import_module("loading.early-hints.resources.utils") + + +def handle_headers(frame, request, response): + resource_url = request.GET.first(b"resource-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(resource_url) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + response.status = 200 + response.headers[b"content-type"] = "text/html" + response.write_status_headers() + + +def main(request, response): + # Wait for preload to finish before sending the response body. + resource_id = request.GET.first(b"resource-id").decode() + utils.wait_for_preload_to_finish(request, resource_id) + + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "preload-finished-while-receiving-final-response-body.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-while-receiving-final-response-body.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-while-receiving-final-response-body.html new file mode 100644 index 00000000000..5a233612b27 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-finished-while-receiving-final-response-body.html @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-in-flight-when-consumed.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-in-flight-when-consumed.h2.py new file mode 100644 index 00000000000..c3d66160e37 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-in-flight-when-consumed.h2.py @@ -0,0 +1,24 @@ +import os + + +def handle_headers(frame, request, response): + resource_url = request.GET.first(b"resource-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(resource_url) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + response.status = 200 + response.headers[b"content-type"] = "text/html" + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "preload-in-flight-when-consumed.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-in-flight-when-consumed.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-in-flight-when-consumed.html new file mode 100644 index 00000000000..5075d928464 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-in-flight-when-consumed.html @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-initiator-type.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-initiator-type.html new file mode 100644 index 00000000000..0fdeb2b9037 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-initiator-type.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-between-early-hints.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-between-early-hints.h2.py new file mode 100644 index 00000000000..a1b3f15ca45 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-between-early-hints.h2.py @@ -0,0 +1,54 @@ +import os + + +def _send_early_hints(preload, writer): + link_header_value = "<{}>; rel=preload; as=script".format(preload) + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + writer.write_raw_header_frame(headers=early_hints, end_headers=True) + + +def handle_headers(frame, request, response): + step = request.GET.first(b"test-step").decode() + if step == "redirect": + preload = request.GET.first(b"preload-before-redirect").decode() + _send_early_hints(preload, response.writer) + + # Redirect to the final test page with parameters. + params = [] + for key, values in request.GET.items(): + if key == b"test-step": + params.append("test-step=final-response") + else: + params.append("{}={}".format(key.decode(), values[0].decode())) + + redirect_url = request.GET.first(b"redirect-url").decode() + location = "{}?{}".format(redirect_url, "&".join(params)) + + response.status = 302 + response.headers["location"] = location + response.write_status_headers() + elif step == "final-response": + preload = request.GET.first(b"preload-after-redirect").decode() + _send_early_hints(preload, response.writer) + + response.status = 200 + response.headers["content-type"] = "text/html" + response.write_status_headers() + else: + raise Exception("Invalid step: {}".format(step)) + + +def main(request, response): + step = request.GET.first(b"test-step").decode() + if step != "final-response": + return + + final_test_page = request.GET.first(b"final-test-page").decode() + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, final_test_page) + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-cross-origin-between-early-hints.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-cross-origin-between-early-hints.html new file mode 100644 index 00000000000..46560bb2da8 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-cross-origin-between-early-hints.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-cross-origin.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-cross-origin.html new file mode 100644 index 00000000000..39b37f81300 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-cross-origin.html @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-same-origin-between-early-hints.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-same-origin-between-early-hints.html new file mode 100644 index 00000000000..395f7f17525 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-same-origin-between-early-hints.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-same-origin.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-same-origin.html new file mode 100644 index 00000000000..6a2246a2acd --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-same-origin.html @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-with-early-hints.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-with-early-hints.h2.py new file mode 100644 index 00000000000..e501d85a6b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/redirect-with-early-hints.h2.py @@ -0,0 +1,20 @@ +def handle_headers(frame, request, response): + preload_url = request.GET.first(b"preload-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(preload_url) + + early_hints = [ + (b":status", b"103"), + (b"link", link_header_value), + ] + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + redirect_url = request.GET.first(b"redirect-url").decode() + location = "{}?preload-url={}".format(redirect_url, preload_url) + response.status = 302 + response.headers["location"] = location + response.write_status_headers() + + +def main(request, response): + pass diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/referrer-policy-test-loader.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/referrer-policy-test-loader.h2.py new file mode 100644 index 00000000000..901d64a01f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/referrer-policy-test-loader.h2.py @@ -0,0 +1,39 @@ +import os +import time + + +def handle_headers(frame, request, response): + headers = [] + referrer_policy = request.GET.first(b"referrer-policy") + headers.append((b"referrer-policy", referrer_policy)) + + preload_url = request.GET.first(b"same-origin-preload-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(preload_url) + headers.append((b"link", link_header_value)) + preload_url = request.GET.first(b"cross-origin-preload-url").decode() + link_header_value = "<{}>; rel=preload; as=script".format(preload_url) + headers.append((b"link", link_header_value)) + + # Send a 103 response. + early_hints = [(b":status", b"103")] + for header in headers: + early_hints.append(header) + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + # Simulate the response generation is taking time. + time.sleep(0.2) + + response.status = 200 + response.headers["content-type"] = "text/html" + for (name, value) in headers: + response.headers[name] = value + response.write_status_headers() + + +def main(request, response): + current_dir = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(current_dir, "referrer-policy-test.html") + with open(file_path, "r") as f: + test_content = f.read() + response.writer.write_data(item=test_content, last=True) diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/referrer-policy-test.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/referrer-policy-test.html new file mode 100644 index 00000000000..d0389c2e11c --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/referrer-policy-test.html @@ -0,0 +1,63 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/resume-delayed-js.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/resume-delayed-js.h2.py new file mode 100644 index 00000000000..132f038ac90 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/resume-delayed-js.h2.py @@ -0,0 +1,10 @@ +def main(request, response): + id = request.GET.first(b"id") + url_dir = u'/'.join(request.url_parts.path.split(u'/')[:-1]) + u'/' + request.server.stash.put(id, True, url_dir) + headers = [ + ("Content-Type", "text/plain"), + ("Access-Control-Allow-Origin", "*"), + ] + body = "OK" + return (200, "OK"), headers, body diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/square.png b/tests/wpt/web-platform-tests/loading/early-hints/resources/square.png new file mode 100644 index 00000000000..01c9666a8de Binary files /dev/null and b/tests/wpt/web-platform-tests/loading/early-hints/resources/square.png differ diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/square.png.headers b/tests/wpt/web-platform-tests/loading/early-hints/resources/square.png.headers new file mode 100644 index 00000000000..175cdf80464 --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/square.png.headers @@ -0,0 +1 @@ +cache-control: max-age=600 diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/utils.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/utils.py new file mode 100644 index 00000000000..f24638ab3ac --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/utils.py @@ -0,0 +1,45 @@ +import datetime +import json +import time + + +def _url_dir(request): + return u'/'.join(request.url_parts.path.split(u'/')[:-1]) + u'/' + + +def store_request_timing_and_headers(request): + """Store the current timestamp and request's headers in the stash object of + the server. The request must a GET request and must have the "id" parameter. + """ + id = request.GET.first(b"id") + timestamp = datetime.datetime.now().timestamp() + + value = { + "timestamp": timestamp, + "headers": request.raw_headers, + } + + url_dir = _url_dir(request) + request.server.stash.put(id, value, url_dir) + + +def get_request_timing_and_headers(request, id=None): + """Get previously stored timestamp and request headers associated with the + given "id". When "id" is not given the id is retrieved from "request". + """ + if id is None: + id = request.GET.first(b"id") + url_dir = _url_dir(request) + item = request.server.stash.take(id, url_dir) + if not item: + return None + return json.dumps(item) + + +def wait_for_preload_to_finish(request, id): + """Wait until a preload associated with "id" is sent.""" + while True: + if get_request_timing_and_headers(request, id): + break + time.sleep(0.1) + time.sleep(0.1) diff --git a/tests/wpt/web-platform-tests/longtask-timing/containerNames.html b/tests/wpt/web-platform-tests/longtask-timing/containerNames.html index 90dcd6d9aa5..e6a9335dc79 100644 --- a/tests/wpt/web-platform-tests/longtask-timing/containerNames.html +++ b/tests/wpt/web-platform-tests/longtask-timing/containerNames.html @@ -11,19 +11,17 @@ const longContainerName = 'iframeWithLongNameMoreThan100CharactersSpaceHolderSpaceHolderSpaceHolderSpaceHolderSpaceHolderSpaceHolder'; promise_test(async t => { -assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.'); -const initialTime = performance.now(); -return new Promise(resolve => { + assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.'); + const initialTime = performance.now(); + const performanceObserverTimeout = 5 * 1000; + const longTasksPromise = new Promise(resolve => { const observer = new PerformanceObserver(t.step_func(entryList => { - const entries = entryList.getEntries(); - assert_equals(entries.length, 1, - 'Exactly one entry is expected.'); - const longtask = entries[0]; + const entries = entryList.getEntries(); + entries.forEach(longtask => { assert_equals(longtask.entryType, 'longtask'); - if (longtask.name == 'self' || - longtask.name == 'multiple-contexts' || - longtask.name == 'unknown') + if (hasUnrelatedTaskName(longtask.name, 'same-origin-descendant')) { return; + } checkLongTaskEntry(longtask, 'same-origin-descendant'); // Assert the TaskAttributionTiming entry in attribution. assert_equals(longtask.attribution.length, 1, @@ -38,6 +36,7 @@ return new Promise(resolve => { assert_equals(attribution.containerSrc, 'resources/subframe-with-longtask.html'); observer.disconnect(); resolve(); + }) })); observer.observe({entryTypes: ['longtask']}); const iframe = document.createElement('iframe'); @@ -45,7 +44,13 @@ return new Promise(resolve => { iframe.name = longContainerName + '-name'; iframe.src = 'resources/subframe-with-longtask.html'; document.body.appendChild(iframe); -}); + }); + const timeout = new Promise( + (resolve, reject) => t.step_timeout( + () => { reject(new Error('observer failed to find any entries')) }, + performanceObserverTimeout) + ) + return Promise.race([longTasksPromise, timeout]); }, `Performance longtask entries in ${longContainerName} are observable in parent.`); diff --git a/tests/wpt/web-platform-tests/longtask-timing/containerTypes.html b/tests/wpt/web-platform-tests/longtask-timing/containerTypes.html index 2d48bf77b24..0e258050415 100644 --- a/tests/wpt/web-platform-tests/longtask-timing/containerTypes.html +++ b/tests/wpt/web-platform-tests/longtask-timing/containerTypes.html @@ -12,6 +12,7 @@ function Container(name, src) { this.name = name; this.src = src; } + const Containers = [ new Container('iframe', 'src'), new Container('frame', 'src'), @@ -22,39 +23,44 @@ Containers.forEach(container => { promise_test(async t => { assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.'); const initialTime = performance.now(); - return new Promise(resolve => { + const performanceObserverTimeout = 5 * 1000; + const testLongTaskEntry = new Promise(resolve => { const observer = new PerformanceObserver(t.step_func(entryList => { const entries = entryList.getEntries(); - assert_equals(entries.length, 1, - 'Exactly one entry is expected.'); - const longtask = entries[0]; - assert_equals(longtask.entryType, 'longtask'); - if (longtask.name == 'self' || - longtask.name == 'multiple-contexts' || - longtask.name == 'unknown') - return; - checkLongTaskEntry(longtask, 'same-origin-descendant'); - // Assert the TaskAttributionTiming entry in attribution. - assert_equals(longtask.attribution.length, 1, - 'Exactly one attribution entry is expected'); - const attribution = longtask.attribution[0]; - assert_equals(attribution.entryType, 'taskattribution'); - assert_equals(attribution.name, 'unknown'); - assert_equals(attribution.duration, 0); - assert_equals(attribution.startTime, 0); - assert_equals(attribution.containerId, container.name + '-id'); - assert_equals(attribution.containerName, container.name + '-name'); - assert_equals(attribution.containerSrc, 'resources/subframe-with-longtask.html'); - observer.disconnect(); - resolve(); + entries.forEach(longtask => { + assert_equals(longtask.entryType, 'longtask'); + if (hasUnrelatedTaskName(longtask.name, 'same-origin-descendant')) { + return; + } + checkLongTaskEntry(longtask, 'same-origin-descendant'); + // Assert the TaskAttributionTiming entry in attribution. + assert_equals(longtask.attribution.length, 1, + 'Exactly one attribution entry is expected'); + const attribution = longtask.attribution[0]; + assert_equals(attribution.entryType, 'taskattribution'); + assert_equals(attribution.name, 'unknown'); + assert_equals(attribution.duration, 0); + assert_equals(attribution.startTime, 0); + assert_equals(attribution.containerId, container.name + '-id'); + assert_equals(attribution.containerName, container.name + '-name'); + assert_equals(attribution.containerSrc, 'resources/subframe-with-longtask.html'); + observer.disconnect(); + resolve(); + }); })); - observer.observe({entryTypes: ['longtask']}); + observer.observe({ entryTypes: ['longtask'], buffered: false }); const containerObject = document.createElement(container.name); containerObject.id = container.name + '-id'; containerObject.name = container.name + '-name'; containerObject[container.src] = 'resources/subframe-with-longtask.html'; document.body.appendChild(containerObject); }); + const timeout = new Promise( + (resolve, reject) => t.step_timeout( + () => { reject(new Error('observer failed to find any entries')) }, + performanceObserverTimeout) + ); + return Promise.race([testLongTaskEntry, timeout]); }, `Performance longtask entries in ${container.name} are observable in parent.`); }); diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe.html index bc7d69c6957..6618a88b896 100644 --- a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe.html +++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe.html @@ -10,45 +10,54 @@

                                                                      Long Task in Nested Child Iframe

                                                                      diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-externalscript.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-externalscript.html index ad194ac9719..0d8f5ccb67d 100644 --- a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-externalscript.html +++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-externalscript.html @@ -10,37 +10,50 @@

                                                                      Long Task: External Script

                                                                      diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-sync-xhr.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-sync-xhr.html new file mode 100644 index 00000000000..da223cca2ae --- /dev/null +++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-sync-xhr.html @@ -0,0 +1,28 @@ + + +LongTask Timing: synchronous XHR + + + + + + +

                                                                      Long Task: synchronous XHR

                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js b/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js index c022f1a5a7a..36bd6c7bc28 100644 --- a/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js +++ b/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js @@ -6,4 +6,8 @@ function checkLongTaskEntry(longtask, name='self') { assert_greater_than_equal(longtask.startTime, 0); const currentTime = performance.now(); assert_less_than_equal(longtask.startTime, currentTime); -} \ No newline at end of file +} + +function hasUnrelatedTaskName(taskName, expectedTaskName) { + return (taskName !== expectedTaskName); +} diff --git a/tests/wpt/web-platform-tests/longtask-timing/spin-eventloop-not-longtask.html b/tests/wpt/web-platform-tests/longtask-timing/spin-eventloop-not-longtask.html new file mode 100644 index 00000000000..9c83b14e31f --- /dev/null +++ b/tests/wpt/web-platform-tests/longtask-timing/spin-eventloop-not-longtask.html @@ -0,0 +1,25 @@ + + +LongTask Timing: synchronous XHR + + + + + + +

                                                                      Long Task: Spin event loop

                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/magnetometer/META.yml b/tests/wpt/web-platform-tests/magnetometer/META.yml index d7d395ee8f2..9193c0d4590 100644 --- a/tests/wpt/web-platform-tests/magnetometer/META.yml +++ b/tests/wpt/web-platform-tests/magnetometer/META.yml @@ -1,6 +1,5 @@ spec: https://w3c.github.io/magnetometer/ suggested_reviewers: - - zqzhang - riju - Honry - rakuco diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/children-with-negative-block-sizes.html b/tests/wpt/web-platform-tests/mathml/crashtests/children-with-negative-block-sizes.html new file mode 100644 index 00000000000..c50f9be153f --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/children-with-negative-block-sizes.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/children-with-negative-inline-sizes.html b/tests/wpt/web-platform-tests/mathml/crashtests/children-with-negative-inline-sizes.html new file mode 100644 index 00000000000..5c41fc89696 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/children-with-negative-inline-sizes.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1028521-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1028521-1.xhtml new file mode 100644 index 00000000000..b8d0947741d --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1028521-1.xhtml @@ -0,0 +1,5 @@ + + +
                                                                    • + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1061027.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1061027.html new file mode 100644 index 00000000000..3187f500a3f --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1061027.html @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1221888-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1221888-1.html new file mode 100644 index 00000000000..741daa7503f --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1221888-1.html @@ -0,0 +1,15 @@ + + + + + + + +
                                                                      + + + +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1373767-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1373767-1.html new file mode 100644 index 00000000000..a159cec7bef --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1373767-1.html @@ -0,0 +1,22 @@ + + + + + + + +
                                                                      + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1376158.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1376158.html new file mode 100644 index 00000000000..42b6dd73c85 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1376158.html @@ -0,0 +1,6 @@ + + +> + +) + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/151054-1.xml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/151054-1.xml new file mode 100644 index 00000000000..f634d089f3c --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/151054-1.xml @@ -0,0 +1,15 @@ + + + + + Math with position: absolute + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1600635.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1600635.html new file mode 100644 index 00000000000..d6ad3158853 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/1600635.html @@ -0,0 +1,16 @@ + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/289180-1.xml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/289180-1.xml new file mode 100644 index 00000000000..8d1f2e843c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/289180-1.xml @@ -0,0 +1,16 @@ + + + + + x + y + + + + + + x + y + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/307826-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/307826-1.xhtml new file mode 100644 index 00000000000..02d436e8259 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/307826-1.xhtml @@ -0,0 +1,30 @@ + + + + +Testcase for MathML crash + + + + + + + + +
                                                                      Floated div
                                                                      + +mi + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/307839-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/307839-1.xhtml new file mode 100644 index 00000000000..a26e58ac07e --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/307839-1.xhtml @@ -0,0 +1,15 @@ + + + Testcase + + +
                                                                      + + + + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/307839-2.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/307839-2.xhtml new file mode 100644 index 00000000000..05dc08a78f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/307839-2.xhtml @@ -0,0 +1,24 @@ + + +]> + + + +Testcase bug - Evil mrow:hover testcase crashes Mozilla + + + + + + hovering over this should not crash Mozilla + + 10 + times + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323733-1.xml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323733-1.xml new file mode 100644 index 00000000000..5551d8588c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323733-1.xml @@ -0,0 +1,7 @@ + +
                                                                      + + + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323737-1.xml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323737-1.xml new file mode 100644 index 00000000000..ad673f94609 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323737-1.xml @@ -0,0 +1,9 @@ + +
                                                                      + + + + + +
                                                                      + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323738-1.xml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323738-1.xml new file mode 100644 index 00000000000..318aa93b4ee --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323738-1.xml @@ -0,0 +1,11 @@ + +
                                                                      + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323741-1.xml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323741-1.xml new file mode 100644 index 00000000000..8527c1a7835 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323741-1.xml @@ -0,0 +1,13 @@ + +
                                                                      + + + + + + + f + + +
                                                                      + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323742-1.xml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323742-1.xml new file mode 100644 index 00000000000..2cd225990d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/323742-1.xml @@ -0,0 +1,16 @@ + +
                                                                      + + + + + + + + + + + + +
                                                                      + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/336074-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/336074-1.xhtml new file mode 100644 index 00000000000..3d1f5b42237 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/336074-1.xhtml @@ -0,0 +1,25 @@ + + + + + + + + + + +z + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347355-1-inner.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347355-1-inner.xhtml new file mode 100644 index 00000000000..22689c3c129 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347355-1-inner.xhtml @@ -0,0 +1,28 @@ + + + + + + + +
                                                                      + + + + t + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347355-1.gif b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347355-1.gif new file mode 100644 index 00000000000..475ea8c1641 Binary files /dev/null and b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347355-1.gif differ diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347355-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347355-1.html new file mode 100644 index 00000000000..0d61fb9d4a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347355-1.html @@ -0,0 +1,9 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347495-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347495-1.xhtml new file mode 100644 index 00000000000..4a65b8f34d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347495-1.xhtml @@ -0,0 +1,10 @@ + + + +
                                                                      + 1 +
                                                                      + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347507-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347507-1.xhtml new file mode 100644 index 00000000000..274ae48ff21 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/347507-1.xhtml @@ -0,0 +1,29 @@ + + + + + + + + + +
                                                                      + + y + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348492-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348492-1.xhtml new file mode 100644 index 00000000000..f59c9353a42 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348492-1.xhtml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348709-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348709-1.xhtml new file mode 100644 index 00000000000..907ede6abb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348709-1.xhtml @@ -0,0 +1,20 @@ + + + + + + + + +
                                                                      + x y +
                                                                      + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348811-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348811-1.xhtml new file mode 100644 index 00000000000..f6557e5a67b --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348811-1.xhtml @@ -0,0 +1,26 @@ + + + + + + + + +
                                                                      + + + x + +
                                                                      + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348811-2.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348811-2.xhtml new file mode 100644 index 00000000000..d6a741765a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/348811-2.xhtml @@ -0,0 +1,31 @@ + + + + + + + + +
                                                                      + + + + + x + + + + +
                                                                      + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/353612-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/353612-1.xhtml new file mode 100644 index 00000000000..386e66f933d --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/353612-1.xhtml @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/355986-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/355986-1.xhtml new file mode 100644 index 00000000000..787e1f6772c --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/355986-1.xhtml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + +
                                                                      + + + + x + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/364685-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/364685-1.xhtml new file mode 100644 index 00000000000..ab2b56a2f80 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/364685-1.xhtml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/366012-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/366012-1.xhtml new file mode 100644 index 00000000000..55f29f3ac3e --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/366012-1.xhtml @@ -0,0 +1,23 @@ + + + + + + + +
                                                                      +

                                                                      This paragraph disappears.

                                                                      + y0 +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/366564-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/366564-1.xhtml new file mode 100644 index 00000000000..8bb112a30d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/366564-1.xhtml @@ -0,0 +1,44 @@ + + + + + + + + + +
                                                                      + + b + 2 + +
                                                                      + +
                                                                      + j + = + + 55 + +
                                                                      + +
                                                                      + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/367107-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/367107-1.html new file mode 100644 index 00000000000..775ace87e0a --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/367107-1.html @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/368430-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/368430-1.xhtml new file mode 100644 index 00000000000..79e10c46acc --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/368430-1.xhtml @@ -0,0 +1,5 @@ + + +Foo Bar + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/370791-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/370791-1.xhtml new file mode 100644 index 00000000000..d72eb5f709f --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/370791-1.xhtml @@ -0,0 +1,33 @@ + + + + + + + +a

                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/370862-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/370862-1.xhtml new file mode 100644 index 00000000000..fa2f1a4d674 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/370862-1.xhtml @@ -0,0 +1,27 @@ + + + + + + + + +
                                                                      + ++1 + +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/372483-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/372483-1.xhtml new file mode 100644 index 00000000000..41edd7d9b71 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/372483-1.xhtml @@ -0,0 +1,7 @@ + + + +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/373472-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/373472-1.xhtml new file mode 100644 index 00000000000..6c6a304a734 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/373472-1.xhtml @@ -0,0 +1,20 @@ + + + + + + + +

                                                                      Foo -

                                                                      + +

                                                                      + bar

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/373472-2.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/373472-2.xhtml new file mode 100644 index 00000000000..1c7e1c7ade0 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/373472-2.xhtml @@ -0,0 +1,9 @@ + + + + + +

                                                                      k

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/375562-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/375562-1.xhtml new file mode 100644 index 00000000000..7b00d1f91ad --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/375562-1.xhtml @@ -0,0 +1,38 @@ + + + + + + + +
                                                                      + + a + + + b + c + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/377824-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/377824-1.xhtml new file mode 100644 index 00000000000..ddbe7da6644 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/377824-1.xhtml @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/379418-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/379418-1.xhtml new file mode 100644 index 00000000000..dc6e9e57119 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/379418-1.xhtml @@ -0,0 +1,7 @@ + + + +×¢ + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/385226-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/385226-1.xhtml new file mode 100644 index 00000000000..b1d261eb380 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/385226-1.xhtml @@ -0,0 +1,29 @@ + + + + + + + + +
                                                                      + + + + x + y + + + z + w + + + +
                                                                      + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/393760-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/393760-1.xhtml new file mode 100644 index 00000000000..cb5c2d7a129 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/393760-1.xhtml @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/397518-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/397518-1.xhtml new file mode 100644 index 00000000000..bc460ead11c --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/397518-1.xhtml @@ -0,0 +1,15 @@ + + + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/398038-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/398038-1.html new file mode 100644 index 00000000000..b383141c459 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/398038-1.html @@ -0,0 +1,8 @@ + +Crashtest for bug 398038 + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/400475-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/400475-1.xhtml new file mode 100644 index 00000000000..13ff2fcb630 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/400475-1.xhtml @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/402400-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/402400-1.xhtml new file mode 100644 index 00000000000..5212d67f163 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/402400-1.xhtml @@ -0,0 +1,41 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/403156-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/403156-1.xhtml new file mode 100644 index 00000000000..b49bff7d04d --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/403156-1.xhtml @@ -0,0 +1,12 @@ + + + + + + + +c
                                                                      t䦚
                                                                      䦚x䦚䦚2
                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/404485-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/404485-1.xhtml new file mode 100644 index 00000000000..fea18cbd596 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/404485-1.xhtml @@ -0,0 +1,9 @@ + + + + +x + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/405187-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/405187-1.xhtml new file mode 100644 index 00000000000..537512e6292 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/405187-1.xhtml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/405271-1.xml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/405271-1.xml new file mode 100644 index 00000000000..c94525c6383 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/405271-1.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/412237-1.xml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/412237-1.xml new file mode 100644 index 00000000000..2e8f13b73e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/412237-1.xml @@ -0,0 +1,11 @@ + + + + + + + xy + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/413063-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/413063-1.xhtml new file mode 100644 index 00000000000..b595acd1cea --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/413063-1.xhtml @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/416907-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/416907-1.xhtml new file mode 100644 index 00000000000..94a9abde212 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/416907-1.xhtml @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/420420-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/420420-1.xhtml new file mode 100644 index 00000000000..db17b277a78 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/420420-1.xhtml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/431072-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/431072-1.xhtml new file mode 100644 index 00000000000..f25ce28f141 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/431072-1.xhtml @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/443089-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/443089-1.xhtml new file mode 100644 index 00000000000..2630cea1311 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/443089-1.xhtml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/462929-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/462929-1.html new file mode 100644 index 00000000000..386d8e138f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/462929-1.html @@ -0,0 +1,12 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/463763-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/463763-1.xhtml new file mode 100644 index 00000000000..61df8ff0c33 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/463763-1.xhtml @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/463763-2.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/463763-2.xhtml new file mode 100644 index 00000000000..8d41abade0d --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/463763-2.xhtml @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/476547-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/476547-1.xhtml new file mode 100644 index 00000000000..0cece35eaa3 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/476547-1.xhtml @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/541620-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/541620-1.xhtml new file mode 100644 index 00000000000..ccef762e488 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/541620-1.xhtml @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/557474-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/557474-1.html new file mode 100644 index 00000000000..1bf8d534ca2 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/557474-1.html @@ -0,0 +1,11 @@ + + + + Test mpadded + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/654928-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/654928-1.html new file mode 100644 index 00000000000..da52f34b452 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/654928-1.html @@ -0,0 +1,3 @@ + + AB + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/655451-1.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/655451-1.xhtml new file mode 100644 index 00000000000..0d5fb687b79 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/655451-1.xhtml @@ -0,0 +1,15 @@ + + + + +x + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/713606-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/713606-1.html new file mode 100644 index 00000000000..a0d4939a83f --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/713606-1.html @@ -0,0 +1,24 @@ + + + + Crashtest bug 713606 + + + + + X + + Y + + + + + X + + Y + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/716349-1.html b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/716349-1.html new file mode 100644 index 00000000000..9b5895ad64b --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/716349-1.html @@ -0,0 +1,13 @@ + + + + Crashtest bug 716349 + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/767251.xhtml b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/767251.xhtml new file mode 100644 index 00000000000..aa3632a6ba0 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/mozilla/767251.xhtml @@ -0,0 +1 @@ +
                                                                      + + + +
                                                                      + + + * + + +
                                                                      +

                                                                      + +

                                                                      + + + * + + + + + * + * + + + + + * + * + + + + + * + * + * + + + + + * + * + + + + + * + * + + + + + * + * + * + + +

                                                                      + +

                                                                      + + + * + * + * + + * + * + + + + + + + * + + + + + + * + + + + + * + + * + + +

                                                                      + +

                                                                      + + + + * + * + + * + + + + + + * + * + + * + + + + + + * + * + + * + + +

                                                                      + +

                                                                      + + + * + + + * + + + * + * + + + + + * + + + + + * + + +

                                                                      + + + * + + +

                                                                      + + + * + + + * + * + + + * + + + * + + +

                                                                      + +

                                                                      + + + + +
                                                                      + + + * + * + + +
                                                                      +

                                                                      + +

                                                                      + + + * + * + + + * + * + + + * + * + + + * + * + * + + + * + * + + + * + * + + + * + * + * + + +

                                                                      + +

                                                                      + + + * + * + * + + * + * + + + + + * + * + + + + * + + + * + + * + + + + * + * + + * + + +

                                                                      + +

                                                                      + + + + * + * + + * + + + + * + * + + * + + + + * + * + + * + + +

                                                                      + +

                                                                      + + + * + * + + * + + + + + + * + * + + + + + * + * + + +

                                                                      + + + * + * + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-2.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-2.html new file mode 100644 index 00000000000..d54f45c21de --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-2.html @@ -0,0 +1,363 @@ + + + + mo-lspace-rspace-2 + + + + + +

                                                                      + + + * + + + + + * + * + + + + + * + + + + + * + * + + + + + * + + +

                                                                      + +

                                                                      + + + + +
                                                                      + + + * + + +
                                                                      +

                                                                      + +

                                                                      + + + * + + + + + * + * + + + + + * + * + + + + + * + * + * + + + + + * + * + + + + + * + * + + + + + * + * + * + + +

                                                                      + +

                                                                      + + + * + * + * + + * + * + + + + + + + * + + + + + + * + + + + + * + + * + + +

                                                                      + +

                                                                      + + + + * + * + + * + + + + + + * + * + + * + + + + + + * + * + + * + + +

                                                                      +

                                                                      + + + * + + + * + + + * + * + + + + + * + + + + + * + + +

                                                                      + + + * + + +

                                                                      + + + * + + + * + * + + + * + + + * + + +

                                                                      + +

                                                                      + + + + +
                                                                      + + + * + * + + +
                                                                      +

                                                                      + +

                                                                      + + + * + * + + + * + * + + + * + * + + + * + * + * + + + * + * + + + * + * + + + * + * + * + + +

                                                                      + +

                                                                      + + + * + * + * + + * + * + + + + + * + * + + + + * + + + * + + * + + + + * + * + + * + + +

                                                                      + +

                                                                      + + + + * + * + + * + + + + * + * + + * + + + + * + * + + * + + +

                                                                      + +

                                                                      + + + * + * + + * + + + + + + * + * + + + + + * + * + + +

                                                                      + + + * + * + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-3-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-3-ref.html new file mode 100644 index 00000000000..1830e114746 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-3-ref.html @@ -0,0 +1,41 @@ + + + + mo-lspace-rspace-3 (reference) + + +

                                                                      + + * + +

                                                                      +

                                                                      + + * + +

                                                                      +

                                                                      + + * + * + +

                                                                      +

                                                                      + + * + * + +

                                                                      +

                                                                      + + * + * + +

                                                                      +

                                                                      + + * + +

                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-3.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-3.html new file mode 100644 index 00000000000..4574ff39c98 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-3.html @@ -0,0 +1,61 @@ + + + + mo-lspace-rspace-3 + + + +

                                                                      + + * + +

                                                                      +

                                                                      + + * + +

                                                                      +

                                                                      + + * + * + +

                                                                      +

                                                                      + + * + * + +

                                                                      +

                                                                      + + * + +

                                                                      +

                                                                      + + * + * + +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-4-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-4-ref.html new file mode 100644 index 00000000000..ab4c08dde1e --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-4-ref.html @@ -0,0 +1,20 @@ + + + + mo-lspace-rspace-4 (reference) + + +

                                                                      + + _ + + + _ + _ + + + _ + +

                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-4.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-4.html new file mode 100644 index 00000000000..47984548685 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-4.html @@ -0,0 +1,19 @@ + + + + mo-lspace-rspace-4 + + + +

                                                                      + + _ + + _ + _ + + _ + +

                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-ref.html new file mode 100644 index 00000000000..46be5079e6e --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace-ref.html @@ -0,0 +1,41 @@ + + + + mo-lspace-rspace (reference) + + + + +

                                                                      + + + _ + + MO + + _ + +

                                                                      + +

                                                                      + + + _ + + + + _ + +

                                                                      + +

                                                                      + + + _ + + _ + +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace.html new file mode 100644 index 00000000000..5774e4ced01 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-lspace-rspace.html @@ -0,0 +1,38 @@ + + + + mo-lspace-rspace + + + + + +

                                                                      + + + _ + MO + _ + +

                                                                      + +

                                                                      + + + _ + + _ + +

                                                                      + +

                                                                      + + + _ + + _ + +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-1-notref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-1-notref.html new file mode 100644 index 00000000000..5650be19363 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-1-notref.html @@ -0,0 +1,15 @@ + + + + op-dict mo form + + + + + + + + 1 + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-1.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-1.html new file mode 100644 index 00000000000..cdfcca4a576 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-1.html @@ -0,0 +1,15 @@ + + + + op-dict mo form + + + + + + + + 1 + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-12-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-12-ref.html new file mode 100644 index 00000000000..3365b47d395 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-12-ref.html @@ -0,0 +1,14 @@ + + + + op-dict mo movablelimits + + + + + + x + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-12.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-12.html new file mode 100644 index 00000000000..7d75c4c174c --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-12.html @@ -0,0 +1,15 @@ + + + + op-dict mo movablelimits + + + + + + + x + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-13-notref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-13-notref.html new file mode 100644 index 00000000000..e9e7614836a --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-13-notref.html @@ -0,0 +1,14 @@ + + + + op-dict mo movablelimits + + + + + + x + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-13.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-13.html new file mode 100644 index 00000000000..1b7c6bf38f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-13.html @@ -0,0 +1,15 @@ + + + + op-dict mo movablelimits + + + + + + + x + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-2-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-2-ref.html new file mode 100644 index 00000000000..9c910f8411d --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-2-ref.html @@ -0,0 +1,14 @@ + + + + op-dict symmetric + + + + + ( + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-2.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-2.html new file mode 100644 index 00000000000..0a26fcae787 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-2.html @@ -0,0 +1,15 @@ + + + + op-dict symmetric + + + + + + ( + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-3-notref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-3-notref.html new file mode 100644 index 00000000000..9c910f8411d --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-3-notref.html @@ -0,0 +1,14 @@ + + + + op-dict symmetric + + + + + ( + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-3.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-3.html new file mode 100644 index 00000000000..bf54ef85823 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-3.html @@ -0,0 +1,15 @@ + + + + op-dict symmetric + + + + + + ( + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-4-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-4-ref.html new file mode 100644 index 00000000000..a501e45c8c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-4-ref.html @@ -0,0 +1,18 @@ + + + + op-dict stretchy + + + + + ( + + a + b + + ) + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-4.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-4.html new file mode 100644 index 00000000000..f847890aa70 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-4.html @@ -0,0 +1,19 @@ + + + + op-dict stretchy + + + + + + ( + + a + b + + ) + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-5-notref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-5-notref.html new file mode 100644 index 00000000000..7ab29e37692 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-5-notref.html @@ -0,0 +1,18 @@ + + + + op-dict stretchy + + + + + ( + + a + b + + ) + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-5.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-5.html new file mode 100644 index 00000000000..8c8260d4cdd --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-5.html @@ -0,0 +1,19 @@ + + + + op-dict stretchy + + + + + + ( + + a + b + + ) + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-6-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-6-ref.html new file mode 100644 index 00000000000..cb642c49281 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-6-ref.html @@ -0,0 +1,13 @@ + + + + op-dict largeop + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-6.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-6.html new file mode 100644 index 00000000000..6be4cc90a70 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-6.html @@ -0,0 +1,14 @@ + + + + op-dict largeop + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-7-notref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-7-notref.html new file mode 100644 index 00000000000..78dd1955584 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-7-notref.html @@ -0,0 +1,13 @@ + + + + op-dict largeop + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-7.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-7.html new file mode 100644 index 00000000000..04496eb4f3c --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-7.html @@ -0,0 +1,14 @@ + + + + op-dict largeop + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-8-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-8-ref.html new file mode 100644 index 00000000000..b51ce01f36e --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-8-ref.html @@ -0,0 +1,13 @@ + + + + op-dict lspace and rspace + + + + + xy + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-8.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-8.html new file mode 100644 index 00000000000..0f9b81900e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-8.html @@ -0,0 +1,14 @@ + + + + op-dict lspace and rspace + + + + + + xy + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-9-notref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-9-notref.html new file mode 100644 index 00000000000..b976536fac4 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-9-notref.html @@ -0,0 +1,15 @@ + + + + op-dict lspace and rspace + + + + + + xy + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-9.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-9.html new file mode 100644 index 00000000000..1e833e31a0b --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/op-dict-9.html @@ -0,0 +1,14 @@ + + + + op-dict lspace and rspace + + + + + + xy + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-001-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-001-ref.html new file mode 100644 index 00000000000..88e0f5f736b --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-001-ref.html @@ -0,0 +1,20 @@ + + + + + Spacing of Arabic operators (reference) + + + + + +

                                                                      There should be no horizontal gaps between the squares:

                                                                      +

                                                                      _𞻰_

                                                                      +

                                                                      _𞻱_

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-001.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-001.html new file mode 100644 index 00000000000..05d2714af5f --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-001.html @@ -0,0 +1,28 @@ + + + + + Spacing of Arabic operators + + + + + + + + + +

                                                                      There should be no horizontal gaps between the squares:

                                                                      +

                                                                      _𞻰_

                                                                      +

                                                                      _𞻱_

                                                                      + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-002-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-002-ref.html new file mode 100644 index 00000000000..f72fdc84037 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-002-ref.html @@ -0,0 +1,30 @@ + + + + + Stretching of Arabic operators (reference) + + + + +

                                                                      You should see two rectangles of width 3em and height 1em:

                                                                      + +

                                                                      + + + _ + + + +

                                                                      +

                                                                      + + + _ + + + +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-002.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-002.html new file mode 100644 index 00000000000..d116e1778dd --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-arabic-002.html @@ -0,0 +1,39 @@ + + + + + Stretching of Arabic operators + + + + + + + + +

                                                                      You should see two rectangles of width 3em and height 1em:

                                                                      + +

                                                                      + + + 𞻰 + + + +

                                                                      +

                                                                      + + + 𞻱 + + + +

                                                                      + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining.html index 2b4177bb06c..8c891a2a25f 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining.html @@ -33,7 +33,12 @@ var epsilon = 1; var emToPx = 25; - ["equal", "vertical_bar"].forEach(id => { + [ + "equal", + "vertical_bar", + "left_normal_factor_semidirect_product", + "there_exists", + ].forEach(id => { var div = document.getElementById(id); var ref = div.getElementsByClassName("reference")[0]; var totalSpaceRef = spaceBetween(ref, 0, 2); @@ -104,5 +109,51 @@

                                                                      +
                                                                      +

                                                                      + +   + ⋉ +   + +

                                                                      +

                                                                      + +   + ⋉̸ +   + +

                                                                      +

                                                                      + +   + ⋉⃒ +   + +

                                                                      +
                                                                      +
                                                                      +

                                                                      + +   + ∃ +   + +

                                                                      +

                                                                      + +   + ∄ +   + +

                                                                      +

                                                                      + +   + ∃⃒ +   + +

                                                                      +
                                                                      diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-empty-and-three-chars-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-empty-and-three-chars-ref.html new file mode 100644 index 00000000000..2cbed129401 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-empty-and-three-chars-ref.html @@ -0,0 +1,32 @@ + + + + + Spacing of empty and three-char operators (reference) + + + + + +

                                                                      ___

                                                                      + +

                                                                      The spacing after the blue squares and before the yellow squares should be the same as the above reference:

                                                                      + +

                                                                      __

                                                                      +

                                                                      _..._

                                                                      +

                                                                      _lim_ +

                                                                      _max_ +

                                                                      _min_ +

                                                                      _|||_ + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-empty-and-three-chars.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-empty-and-three-chars.html new file mode 100644 index 00000000000..231041c17fe --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-empty-and-three-chars.html @@ -0,0 +1,39 @@ + + + + + Spacing of empty and three-char operators + + + + + + + + + +

                                                                      ___

                                                                      + +

                                                                      The spacing after the blue squares and before the yellow squares should be the same as the above reference:

                                                                      + +

                                                                      __

                                                                      +

                                                                      _..._

                                                                      +

                                                                      _lim_ +

                                                                      _max_ +

                                                                      _min_ +

                                                                      _|||_ + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/tables/table-cell-mrow-layout.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/tables/table-cell-mrow-layout.html new file mode 100644 index 00000000000..1e76e3949a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/tables/table-cell-mrow-layout.html @@ -0,0 +1,74 @@ + + + + +Table cell mrow layout + + + + + + + + + +

                                                                      +

                                                                      + + + + + + + + + + + +

                                                                      +

                                                                      + + + + + + + +

                                                                      +

                                                                      + + + + + + + + + + + + + +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html index e38f8560bf8..388b1415b53 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html @@ -65,29 +65,17 @@ }, `scriptlevel on the ${tag} element is mapped to math-depth(...)`); test(function() { + element.removeAttribute("scriptlevel"); // none and mprescripts appear as scripts - let expected = 0; - element.setAttribute("scriptlevel", "" + expected); - assert_equals(style.getPropertyValue("math-depth"), "" + expected, "no attribute"); - - element.setAttribute("scriptlevel", " +1"); - assert_equals(style.getPropertyValue("math-depth"), "" + expected, "invalid scriptlevel value"); - - element.setAttribute("scriptlevel", " + 1"); - assert_equals(style.getPropertyValue("math-depth"), "" + expected, "invalid scriptlevel value"); - - element.setAttribute("scriptlevel", "2.0"); - assert_equals(style.getPropertyValue("math-depth"), "" + expected, "invalid scriptlevel value"); - - element.setAttribute("scriptlevel", "-3\""); - assert_equals(style.getPropertyValue("math-depth"), "" + expected, "invalid scriptlevel value"); - - element.setAttribute("scriptlevel", "200px"); - assert_equals(style.getPropertyValue("math-depth"), "" + expected, "invalid scriptlevel value"); - - element.setAttribute("scriptlevel", "add(2)"); - assert_equals(style.getPropertyValue("math-depth"), "" + expected, "invalid scriptlevel value"); + let expected = `${tag === "none" || tag === "mprescripts" ? "1" : "0"}`; + assert_equals(style.getPropertyValue("math-depth"), expected, "no attribute"); + // FIXME: Should we test values " +1" and "+1 " here? + // See https://github.com/w3c/mathml/issues/122 + ["+-1", "--1", "+z1", "+ 1", "2.0", "-3\"", "200px", "add(2)"].forEach(invalid_value => { + element.setAttribute("scriptlevel", invalid_value); + assert_equals(style.getPropertyValue("math-depth"), expected, `invalid scriptlevel value '${invalid_value}'`); + }); }, `invalid scriptlevel values on the ${tag} element are not mapped to math-depth(...)`); test(function() { diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/default-properties-on-semantics-and-maction.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/default-properties-on-semantics-and-maction.html new file mode 100644 index 00000000000..23f8b62dfa4 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/default-properties-on-semantics-and-maction.html @@ -0,0 +1,47 @@ + + + + +Default properties on <semantics> and <maction> + + + + + + + + +
                                                                      +
                                                                      + + + 1 + 2 + 3 + 4 + 5 + + + 1 + 2 + 3 + 4 + 5 + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font-ref.html new file mode 100644 index 00000000000..6ebfd75c2fa --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font-ref.html @@ -0,0 +1,15 @@ + + + + + Basic mathvariant transforms with the default font (reference) + + +

                                                                      Test passes if you see three lines of text rendered with corresponding + italic, bold, bold-italic characters from the + Mathematical Alphanumeric Symbols block:

                                                                      +

                                                                      ð¼ð‘¡ð‘Žð‘™ð‘–ð‘

                                                                      +

                                                                      ðð¨ð¥ð

                                                                      +

                                                                      ð‘©ð’ð’ð’…ð‘°ð’•ð’‚ð’ð’Šð’„

                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font.html new file mode 100644 index 00000000000..24c868c4951 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font.html @@ -0,0 +1,20 @@ + + + + + Basic mathvariant transforms with the default font + + + + + + + +

                                                                      Test passes if you see three lines of text rendered with corresponding + italic, bold, bold-italic characters from the + Mathematical Alphanumeric Symbols block:

                                                                      +

                                                                      Italic

                                                                      +

                                                                      Bold

                                                                      +

                                                                      BoldItalic

                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight-ref.html new file mode 100644 index 00000000000..817723a62d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight-ref.html @@ -0,0 +1,25 @@ + + + + + mathvariant="double-struck" and font-style/font-weight (reference) + + + +

                                                                      Test passes if you see three lines with text 𞺡 respectively rendered with italic, bold and bold-italic style:

                                                                      +

                                                                      𞺡

                                                                      +

                                                                      𞺡

                                                                      +

                                                                      𞺡

                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight.html new file mode 100644 index 00000000000..2e283e1d702 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight.html @@ -0,0 +1,30 @@ + + + + + mathvariant="double-struck" and font-style/font-weight + + + + + + + + +

                                                                      Test passes if you see three lines with text 𞺡 respectively rendered with italic, bold and bold-italic style:

                                                                      +

                                                                      ب

                                                                      +

                                                                      ب

                                                                      +

                                                                      ب

                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-font-style-font-weight-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-font-style-font-weight-ref.html new file mode 100644 index 00000000000..c3e586f4dd5 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-font-style-font-weight-ref.html @@ -0,0 +1,44 @@ + + + + + mathvariant attribute and font-style/font-weight (reference) + + + +

                                                                      This test passes if you see six lines of text (italic, italic, bold, bold, bold italic and bold italic) with the corresponding style applied:

                                                                      +

                                                                      + + italic + +

                                                                      +

                                                                      + + italic + +

                                                                      +

                                                                      + + bold + +

                                                                      +

                                                                      + + bold + +

                                                                      +

                                                                      + + bold italic + +

                                                                      +

                                                                      + + bold italic + +

                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-font-style-font-weight.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-font-style-font-weight.html new file mode 100644 index 00000000000..793c687b097 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathvariant-font-style-font-weight.html @@ -0,0 +1,49 @@ + + + + + mathvariant attribute and font-style/font-weight + + + + + + + + +

                                                                      This test passes if you see six lines of text (italic, italic, bold, bold, bold italic and bold italic) with the corresponding style applied:

                                                                      +

                                                                      + + italic + +

                                                                      +

                                                                      + + italic + +

                                                                      +

                                                                      + + bold + +

                                                                      +

                                                                      + + bold + +

                                                                      +

                                                                      + + bold italic + +

                                                                      +

                                                                      + + bold italic + +

                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mi-fontstyle-fontweight-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mi-fontstyle-fontweight-ref.html new file mode 100644 index 00000000000..63e6e2ba9cc --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mi-fontstyle-fontweight-ref.html @@ -0,0 +1,22 @@ + + + + + single-char mi and fontstyle/fontweight attributes (reference) + + + +

                                                                      Test passes if you see 𝜕 rendered twice, without any bold or italic style applied:

                                                                      +

                                                                      𝜕

                                                                      +

                                                                      𝜕

                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mi-fontstyle-fontweight.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mi-fontstyle-fontweight.html new file mode 100644 index 00000000000..b6dd05ea20c --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mi-fontstyle-fontweight.html @@ -0,0 +1,27 @@ + + + + + single-char mi and fontstyle/fontweight attributes + + + + + + + + +

                                                                      Test passes if you see 𝜕 rendered twice, without any bold or italic style applied:

                                                                      +

                                                                      +

                                                                      + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/dynamic-childlist-002.html b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/dynamic-childlist-002.html index e4b4313d6fc..099401eaccc 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/dynamic-childlist-002.html +++ b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/dynamic-childlist-002.html @@ -30,7 +30,17 @@ element.appendChild(mrow); } } - math.appendChild(element); + if (FragmentHelper.isValidChildOfMrow(tag)) { + math.appendChild(element); + } else if (tag === "mtd") { + let mtr = FragmentHelper.createElement("mtr"); + mtr.appendChild(element); + let mtable = FragmentHelper.createElement("mtable"); + mtable.appendChild(mtr); + math.appendChild(mtable); + } else { + throw `Invalid argument: ${tag}`; + } return math; } @@ -38,7 +48,7 @@ window.addEventListener("load", function() { for (tag in MathMLFragments) { - if (!FragmentHelper.isValidChildOfMrow(tag)) + if (!FragmentHelper.isValidChildOfMrow(tag) || tag === "mtd") continue; document.body.insertAdjacentHTML("beforeend", `
                                                                      ${tag}:
                                                                      `); diff --git a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html index d2786d2c889..b924eefa7d3 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html +++ b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html @@ -4,12 +4,11 @@ + - - diff --git a/tests/wpt/web-platform-tests/mathml/relations/text-and-math/basic-mathematical-alphanumeric-symbols-with-default-font.html b/tests/wpt/web-platform-tests/mathml/relations/text-and-math/basic-mathematical-alphanumeric-symbols-with-default-font.html new file mode 100644 index 00000000000..c1e8d409b96 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/text-and-math/basic-mathematical-alphanumeric-symbols-with-default-font.html @@ -0,0 +1,39 @@ + + + + + Basic mathematical alphanumeric symbols with default font + + + + + + +
                                                                      +

                                                                      ð”©

                                                                      +

                                                                      +

                                                                      ð–

                                                                      +

                                                                      ð‘Š

                                                                      +

                                                                      ð‘¾

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mathml/support/operator-dictionary.json b/tests/wpt/web-platform-tests/mathml/support/operator-dictionary.json index 5dd0ab53724..0008f5114ef 100644 --- a/tests/wpt/web-platform-tests/mathml/support/operator-dictionary.json +++ b/tests/wpt/web-platform-tests/mathml/support/operator-dictionary.json @@ -1 +1 @@ -{"comment": "This file was automatically generated by operator-dictionary.py. Do not edit.", "dictionary": {"! postfix": {"lspace": 0, "rspace": 0}, "! prefix": {"lspace": 0, "rspace": 0}, "!! postfix": {"lspace": 0, "rspace": 0}, "!= infix": {"lspace": 5, "rspace": 5}, "\" postfix": {"lspace": 0, "rspace": 0}, "% infix": {"lspace": 3, "rspace": 3}, "& postfix": {"lspace": 0, "rspace": 0}, "&& infix": {"lspace": 4, "rspace": 4}, "' postfix": {"lspace": 0, "rspace": 0}, "( prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, ") postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "* infix": {"lspace": 3, "rspace": 3}, "** infix": {"lspace": 3, "rspace": 3}, "*= infix": {"lspace": 5, "rspace": 5}, "+ infix": {"lspace": 4, "rspace": 4}, "+ prefix": {"lspace": 0, "rspace": 0}, "++ postfix": {"lspace": 0, "rspace": 0}, "+= infix": {"lspace": 5, "rspace": 5}, ", infix": {"lspace": 0, "rspace": 3}, "- infix": {"lspace": 4, "rspace": 4}, "- prefix": {"lspace": 0, "rspace": 0}, "-- postfix": {"lspace": 0, "rspace": 0}, "-= infix": {"lspace": 5, "rspace": 5}, "-> infix": {"lspace": 5, "rspace": 5}, ". infix": {"lspace": 3, "rspace": 3}, ".. postfix": {"lspace": 0, "rspace": 0}, "/ infix": {"lspace": 4, "rspace": 4}, "// infix": {"lspace": 3, "rspace": 3}, "/= infix": {"lspace": 5, "rspace": 5}, ": infix": {"lspace": 0, "rspace": 3}, ":= infix": {"lspace": 5, "rspace": 5}, "; infix": {"lspace": 0, "rspace": 3}, "< infix": {"lspace": 5, "rspace": 5}, "<= infix": {"lspace": 5, "rspace": 5}, "<> infix": {"lspace": 3, "rspace": 3}, "= infix": {"horizontal": true, "lspace": 5, "rspace": 5}, "== infix": {"lspace": 5, "rspace": 5}, "> infix": {"lspace": 5, "rspace": 5}, ">= infix": {"lspace": 5, "rspace": 5}, "? infix": {"lspace": 3, "rspace": 3}, "@ infix": {"lspace": 3, "rspace": 3}, "[ prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\\ infix": {"lspace": 0, "rspace": 0}, "] postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "^ infix": {"horizontal": true, "lspace": 3, "rspace": 3}, "^ postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "_ infix": {"horizontal": true, "lspace": 3, "rspace": 3}, "_ postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "` postfix": {"lspace": 0, "rspace": 0}, "{ prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "| infix": {"lspace": 3, "rspace": 3}, "| postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "| prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "|| infix": {"lspace": 3, "rspace": 3}, "|| postfix": {"lspace": 0, "rspace": 0}, "|| prefix": {"lspace": 0, "rspace": 0}, "} postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "~ postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u00a0 infix": {}, "\u00a0 prefix": {}, "\u00a0 suffix": {}, "\u00a8 postfix": {"lspace": 0, "rspace": 0}, "\u00ac prefix": {"lspace": 0, "rspace": 0}, "\u00af postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u00b0 postfix": {"lspace": 0, "rspace": 0}, "\u00b1 infix": {"lspace": 4, "rspace": 4}, "\u00b1 prefix": {"lspace": 0, "rspace": 0}, "\u00b2 postfix": {"lspace": 0, "rspace": 0}, "\u00b3 postfix": {"lspace": 0, "rspace": 0}, "\u00b4 postfix": {"lspace": 0, "rspace": 0}, "\u00b7 infix": {"lspace": 3, "rspace": 3}, "\u00b8 postfix": {"lspace": 0, "rspace": 0}, "\u00b9 postfix": {"lspace": 0, "rspace": 0}, "\u00d7 infix": {"lspace": 3, "rspace": 3}, "\u00f7 infix": {"lspace": 4, "rspace": 4}, "\u02c6 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u02c7 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u02c9 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u02ca postfix": {"lspace": 0, "rspace": 0}, "\u02cb postfix": {"lspace": 0, "rspace": 0}, "\u02cd postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u02d8 postfix": {"lspace": 0, "rspace": 0}, "\u02d9 postfix": {"lspace": 0, "rspace": 0}, "\u02da postfix": {"lspace": 0, "rspace": 0}, "\u02dc postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u02dd postfix": {"lspace": 0, "rspace": 0}, "\u02f7 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u0302 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u0311 postfix": {"lspace": 0, "rspace": 0}, "\u2016 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2016 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2018 prefix": {"lspace": 0, "rspace": 0}, "\u2019 postfix": {"lspace": 0, "rspace": 0}, "\u201a postfix": {"lspace": 0, "rspace": 0}, "\u201b postfix": {"lspace": 0, "rspace": 0}, "\u201c prefix": {"lspace": 0, "rspace": 0}, "\u201d postfix": {"lspace": 0, "rspace": 0}, "\u201e postfix": {"lspace": 0, "rspace": 0}, "\u201f postfix": {"lspace": 0, "rspace": 0}, "\u2022 infix": {"lspace": 3, "rspace": 3}, "\u2032 postfix": {"lspace": 0, "rspace": 0}, "\u2033 postfix": {"lspace": 0, "rspace": 0}, "\u2034 postfix": {"lspace": 0, "rspace": 0}, "\u2035 postfix": {"lspace": 0, "rspace": 0}, "\u2036 postfix": {"lspace": 0, "rspace": 0}, "\u2037 postfix": {"lspace": 0, "rspace": 0}, "\u203e postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u2043 infix": {"lspace": 3, "rspace": 3}, "\u2044 infix": {"lspace": 4, "rspace": 4}, "\u2057 postfix": {"lspace": 0, "rspace": 0}, "\u2061 infix": {"lspace": 0, "rspace": 0}, "\u2062 infix": {"lspace": 0, "rspace": 0}, "\u2063 infix": {"lspace": 0, "rspace": 0}, "\u2064 infix": {"lspace": 0, "rspace": 0}, "\u20db postfix": {"lspace": 0, "rspace": 0}, "\u20dc postfix": {"lspace": 0, "rspace": 0}, "\u2145 prefix": {"lspace": 3, "rspace": 0}, "\u2146 prefix": {"lspace": 3, "rspace": 0}, "\u2190 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2191 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2192 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2193 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2194 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2195 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2196 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2197 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2198 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2199 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u219a infix": {"lspace": 5, "rspace": 5}, "\u219b infix": {"lspace": 5, "rspace": 5}, "\u219c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u219d infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u219e infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u219f infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21a0 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21a1 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21a2 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21a3 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21a4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21a5 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21a6 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21a7 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21a8 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21a9 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21aa infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ab infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ac infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ad infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ae infix": {"lspace": 5, "rspace": 5}, "\u21af infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21b0 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21b1 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21b2 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21b3 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21b4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21b5 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21b6 infix": {"lspace": 5, "rspace": 5}, "\u21b7 infix": {"lspace": 5, "rspace": 5}, "\u21b8 infix": {"lspace": 5, "rspace": 5}, "\u21b9 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ba infix": {"lspace": 5, "rspace": 5}, "\u21bb infix": {"lspace": 5, "rspace": 5}, "\u21bc infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21bd infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21be infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21bf infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21c0 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21c1 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21c2 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21c3 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21c4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21c5 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21c6 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21c7 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21c8 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21c9 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ca infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21cb infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21cc infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21cd infix": {"lspace": 5, "rspace": 5}, "\u21ce infix": {"lspace": 5, "rspace": 5}, "\u21cf infix": {"lspace": 5, "rspace": 5}, "\u21d0 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21d1 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21d2 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21d3 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21d4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21d5 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21d6 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21d7 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21d8 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21d9 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21da infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21db infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21dc infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21dd infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21de infix": {"lspace": 5, "rspace": 5}, "\u21df infix": {"lspace": 5, "rspace": 5}, "\u21e0 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e1 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21e2 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e3 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21e4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e5 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e6 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e7 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21e8 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e9 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21ea infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21eb infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21ec infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21ed infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21ee infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21ef infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21f0 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21f1 infix": {"lspace": 5, "rspace": 5}, "\u21f2 infix": {"lspace": 5, "rspace": 5}, "\u21f3 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21f4 infix": {"lspace": 5, "rspace": 5}, "\u21f5 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21f6 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21f7 infix": {"lspace": 5, "rspace": 5}, "\u21f8 infix": {"lspace": 5, "rspace": 5}, "\u21f9 infix": {"lspace": 5, "rspace": 5}, "\u21fa infix": {"lspace": 5, "rspace": 5}, "\u21fb infix": {"lspace": 5, "rspace": 5}, "\u21fc infix": {"lspace": 5, "rspace": 5}, "\u21fd infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21fe infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ff infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2200 prefix": {"lspace": 0, "rspace": 0}, "\u2201 prefix": {"lspace": 0, "rspace": 0}, "\u2202 prefix": {"lspace": 3, "rspace": 0}, "\u2203 prefix": {"lspace": 0, "rspace": 0}, "\u2204 prefix": {"lspace": 0, "rspace": 0}, "\u2206 infix": {"lspace": 3, "rspace": 3}, "\u2207 prefix": {"lspace": 0, "rspace": 0}, "\u2208 infix": {"lspace": 5, "rspace": 5}, "\u2209 infix": {"lspace": 5, "rspace": 5}, "\u220a infix": {"lspace": 5, "rspace": 5}, "\u220b infix": {"lspace": 5, "rspace": 5}, "\u220c infix": {"lspace": 5, "rspace": 5}, "\u220d infix": {"lspace": 5, "rspace": 5}, "\u220e infix": {"lspace": 3, "rspace": 3}, "\u220f prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2210 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2211 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2212 infix": {"lspace": 4, "rspace": 4}, "\u2212 prefix": {"lspace": 0, "rspace": 0}, "\u2213 infix": {"lspace": 4, "rspace": 4}, "\u2213 prefix": {"lspace": 0, "rspace": 0}, "\u2214 infix": {"lspace": 4, "rspace": 4}, "\u2215 infix": {"lspace": 4, "rspace": 4}, "\u2216 infix": {"lspace": 4, "rspace": 4}, "\u2217 infix": {"lspace": 3, "rspace": 3}, "\u2218 infix": {"lspace": 4, "rspace": 4}, "\u2219 infix": {"lspace": 5, "rspace": 5}, "\u221a prefix": {"lspace": 3, "rspace": 0}, "\u221b prefix": {"lspace": 3, "rspace": 0}, "\u221c prefix": {"lspace": 3, "rspace": 0}, "\u221d infix": {"lspace": 5, "rspace": 5}, "\u221f prefix": {"lspace": 0, "rspace": 0}, "\u2220 prefix": {"lspace": 0, "rspace": 0}, "\u2221 prefix": {"lspace": 0, "rspace": 0}, "\u2222 prefix": {"lspace": 0, "rspace": 0}, "\u2223 infix": {"lspace": 5, "rspace": 5}, "\u2224 infix": {"lspace": 4, "rspace": 4}, "\u2225 infix": {"lspace": 5, "rspace": 5}, "\u2226 infix": {"lspace": 5, "rspace": 5}, "\u2227 infix": {"lspace": 4, "rspace": 4}, "\u2228 infix": {"lspace": 4, "rspace": 4}, "\u2229 infix": {"lspace": 4, "rspace": 4}, "\u222a infix": {"lspace": 4, "rspace": 4}, "\u222b prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u222c prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u222d prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u222e prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u222f prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2230 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2231 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2232 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2233 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2234 infix": {"lspace": 5, "rspace": 5}, "\u2235 infix": {"lspace": 5, "rspace": 5}, "\u2236 infix": {"lspace": 4, "rspace": 4}, "\u2237 infix": {"lspace": 5, "rspace": 5}, "\u2238 infix": {"lspace": 4, "rspace": 4}, "\u2239 infix": {"lspace": 5, "rspace": 5}, "\u223a infix": {"lspace": 5, "rspace": 5}, "\u223b infix": {"lspace": 5, "rspace": 5}, "\u223c infix": {"lspace": 5, "rspace": 5}, "\u223c prefix": {"lspace": 0, "rspace": 0}, "\u223d infix": {"lspace": 5, "rspace": 5}, "\u223e infix": {"lspace": 5, "rspace": 5}, "\u223f infix": {"lspace": 3, "rspace": 3}, "\u2240 infix": {"lspace": 3, "rspace": 3}, "\u2241 infix": {"lspace": 5, "rspace": 5}, "\u2242 infix": {"lspace": 5, "rspace": 5}, "\u2243 infix": {"lspace": 5, "rspace": 5}, "\u2244 infix": {"lspace": 5, "rspace": 5}, "\u2245 infix": {"lspace": 5, "rspace": 5}, "\u2246 infix": {"lspace": 5, "rspace": 5}, "\u2247 infix": {"lspace": 5, "rspace": 5}, "\u2248 infix": {"lspace": 5, "rspace": 5}, "\u2249 infix": {"lspace": 5, "rspace": 5}, "\u224a infix": {"lspace": 5, "rspace": 5}, "\u224b infix": {"lspace": 5, "rspace": 5}, "\u224c infix": {"lspace": 5, "rspace": 5}, "\u224d infix": {"lspace": 5, "rspace": 5}, "\u224e infix": {"lspace": 5, "rspace": 5}, "\u224f infix": {"lspace": 5, "rspace": 5}, "\u2250 infix": {"lspace": 5, "rspace": 5}, "\u2251 infix": {"lspace": 5, "rspace": 5}, "\u2252 infix": {"lspace": 5, "rspace": 5}, "\u2253 infix": {"lspace": 5, "rspace": 5}, "\u2254 infix": {"lspace": 5, "rspace": 5}, "\u2255 infix": {"lspace": 5, "rspace": 5}, "\u2256 infix": {"lspace": 5, "rspace": 5}, "\u2257 infix": {"lspace": 5, "rspace": 5}, "\u2258 infix": {"lspace": 5, "rspace": 5}, "\u2259 infix": {"lspace": 5, "rspace": 5}, "\u225a infix": {"lspace": 5, "rspace": 5}, "\u225b infix": {"lspace": 5, "rspace": 5}, "\u225c infix": {"lspace": 5, "rspace": 5}, "\u225d infix": {"lspace": 5, "rspace": 5}, "\u225e infix": {"lspace": 5, "rspace": 5}, "\u225f infix": {"lspace": 5, "rspace": 5}, "\u2260 infix": {"lspace": 5, "rspace": 5}, "\u2261 infix": {"lspace": 5, "rspace": 5}, "\u2262 infix": {"lspace": 5, "rspace": 5}, "\u2263 infix": {"lspace": 5, "rspace": 5}, "\u2264 infix": {"lspace": 5, "rspace": 5}, "\u2265 infix": {"lspace": 5, "rspace": 5}, "\u2266 infix": {"lspace": 5, "rspace": 5}, "\u2267 infix": {"lspace": 5, "rspace": 5}, "\u2268 infix": {"lspace": 5, "rspace": 5}, "\u2269 infix": {"lspace": 5, "rspace": 5}, "\u226a infix": {"lspace": 5, "rspace": 5}, "\u226b infix": {"lspace": 5, "rspace": 5}, "\u226c infix": {"lspace": 5, "rspace": 5}, "\u226d infix": {"lspace": 5, "rspace": 5}, "\u226e infix": {"lspace": 5, "rspace": 5}, "\u226f infix": {"lspace": 5, "rspace": 5}, "\u2270 infix": {"lspace": 5, "rspace": 5}, "\u2271 infix": {"lspace": 5, "rspace": 5}, "\u2272 infix": {"lspace": 5, "rspace": 5}, "\u2273 infix": {"lspace": 5, "rspace": 5}, "\u2274 infix": {"lspace": 5, "rspace": 5}, "\u2275 infix": {"lspace": 5, "rspace": 5}, "\u2276 infix": {"lspace": 5, "rspace": 5}, "\u2277 infix": {"lspace": 5, "rspace": 5}, "\u2278 infix": {"lspace": 5, "rspace": 5}, "\u2279 infix": {"lspace": 5, "rspace": 5}, "\u227a infix": {"lspace": 5, "rspace": 5}, "\u227b infix": {"lspace": 5, "rspace": 5}, "\u227c infix": {"lspace": 5, "rspace": 5}, "\u227d infix": {"lspace": 5, "rspace": 5}, "\u227e infix": {"lspace": 5, "rspace": 5}, "\u227f infix": {"lspace": 5, "rspace": 5}, "\u2280 infix": {"lspace": 5, "rspace": 5}, "\u2281 infix": {"lspace": 5, "rspace": 5}, "\u2282 infix": {"lspace": 5, "rspace": 5}, "\u2283 infix": {"lspace": 5, "rspace": 5}, "\u2284 infix": {"lspace": 5, "rspace": 5}, "\u2285 infix": {"lspace": 5, "rspace": 5}, "\u2286 infix": {"lspace": 5, "rspace": 5}, "\u2287 infix": {"lspace": 5, "rspace": 5}, "\u2288 infix": {"lspace": 5, "rspace": 5}, "\u2289 infix": {"lspace": 5, "rspace": 5}, "\u228a infix": {"lspace": 5, "rspace": 5}, "\u228b infix": {"lspace": 5, "rspace": 5}, "\u228c infix": {"lspace": 4, "rspace": 4}, "\u228d infix": {"lspace": 4, "rspace": 4}, "\u228e infix": {"lspace": 4, "rspace": 4}, "\u228f infix": {"lspace": 4, "rspace": 4}, "\u2290 infix": {"lspace": 5, "rspace": 5}, "\u2291 infix": {"lspace": 5, "rspace": 5}, "\u2292 infix": {"lspace": 5, "rspace": 5}, "\u2293 infix": {"lspace": 4, "rspace": 4}, "\u2294 infix": {"lspace": 4, "rspace": 4}, "\u2295 infix": {"lspace": 4, "rspace": 4}, "\u2296 infix": {"lspace": 4, "rspace": 4}, "\u2297 infix": {"lspace": 3, "rspace": 3}, "\u2298 infix": {"lspace": 4, "rspace": 4}, "\u2299 infix": {"lspace": 3, "rspace": 3}, "\u229a infix": {"lspace": 5, "rspace": 5}, "\u229b infix": {"lspace": 5, "rspace": 5}, "\u229c infix": {"lspace": 5, "rspace": 5}, "\u229d infix": {"lspace": 4, "rspace": 4}, "\u229e infix": {"lspace": 4, "rspace": 4}, "\u229f infix": {"lspace": 4, "rspace": 4}, "\u22a0 infix": {"lspace": 3, "rspace": 3}, "\u22a1 infix": {"lspace": 3, "rspace": 3}, "\u22a2 infix": {"lspace": 5, "rspace": 5}, "\u22a3 infix": {"lspace": 5, "rspace": 5}, "\u22a4 infix": {"lspace": 5, "rspace": 5}, "\u22a5 infix": {"lspace": 5, "rspace": 5}, "\u22a6 infix": {"lspace": 5, "rspace": 5}, "\u22a7 infix": {"lspace": 5, "rspace": 5}, "\u22a8 infix": {"lspace": 5, "rspace": 5}, "\u22a9 infix": {"lspace": 5, "rspace": 5}, "\u22aa infix": {"lspace": 5, "rspace": 5}, "\u22ab infix": {"lspace": 5, "rspace": 5}, "\u22ac infix": {"lspace": 5, "rspace": 5}, "\u22ad infix": {"lspace": 5, "rspace": 5}, "\u22ae infix": {"lspace": 5, "rspace": 5}, "\u22af infix": {"lspace": 5, "rspace": 5}, "\u22b0 infix": {"lspace": 5, "rspace": 5}, "\u22b1 infix": {"lspace": 5, "rspace": 5}, "\u22b2 infix": {"lspace": 5, "rspace": 5}, "\u22b3 infix": {"lspace": 5, "rspace": 5}, "\u22b4 infix": {"lspace": 5, "rspace": 5}, "\u22b5 infix": {"lspace": 5, "rspace": 5}, "\u22b6 infix": {"lspace": 5, "rspace": 5}, "\u22b7 infix": {"lspace": 5, "rspace": 5}, "\u22b8 infix": {"lspace": 5, "rspace": 5}, "\u22b9 infix": {"lspace": 5, "rspace": 5}, "\u22ba infix": {"lspace": 5, "rspace": 5}, "\u22bb infix": {"lspace": 4, "rspace": 4}, "\u22bc infix": {"lspace": 4, "rspace": 4}, "\u22bd infix": {"lspace": 4, "rspace": 4}, "\u22be prefix": {"lspace": 0, "rspace": 0}, "\u22bf prefix": {"lspace": 0, "rspace": 0}, "\u22c0 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u22c1 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u22c2 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u22c3 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u22c4 infix": {"lspace": 4, "rspace": 4}, "\u22c5 infix": {"lspace": 3, "rspace": 3}, "\u22c6 infix": {"lspace": 4, "rspace": 4}, "\u22c7 infix": {"lspace": 3, "rspace": 3}, "\u22c8 infix": {"lspace": 5, "rspace": 5}, "\u22c9 infix": {"lspace": 3, "rspace": 3}, "\u22ca infix": {"lspace": 3, "rspace": 3}, "\u22cb infix": {"lspace": 3, "rspace": 3}, "\u22cc infix": {"lspace": 3, "rspace": 3}, "\u22cd infix": {"lspace": 5, "rspace": 5}, "\u22ce infix": {"lspace": 4, "rspace": 4}, "\u22cf infix": {"lspace": 4, "rspace": 4}, "\u22d0 infix": {"lspace": 5, "rspace": 5}, "\u22d1 infix": {"lspace": 5, "rspace": 5}, "\u22d2 infix": {"lspace": 4, "rspace": 4}, "\u22d3 infix": {"lspace": 4, "rspace": 4}, "\u22d4 infix": {"lspace": 5, "rspace": 5}, "\u22d5 infix": {"lspace": 5, "rspace": 5}, "\u22d6 infix": {"lspace": 5, "rspace": 5}, "\u22d7 infix": {"lspace": 5, "rspace": 5}, "\u22d8 infix": {"lspace": 5, "rspace": 5}, "\u22d9 infix": {"lspace": 5, "rspace": 5}, "\u22da infix": {"lspace": 5, "rspace": 5}, "\u22db infix": {"lspace": 5, "rspace": 5}, "\u22dc infix": {"lspace": 5, "rspace": 5}, "\u22dd infix": {"lspace": 5, "rspace": 5}, "\u22de infix": {"lspace": 5, "rspace": 5}, "\u22df infix": {"lspace": 5, "rspace": 5}, "\u22e0 infix": {"lspace": 5, "rspace": 5}, "\u22e1 infix": {"lspace": 5, "rspace": 5}, "\u22e2 infix": {"lspace": 5, "rspace": 5}, "\u22e3 infix": {"lspace": 5, "rspace": 5}, "\u22e4 infix": {"lspace": 5, "rspace": 5}, "\u22e5 infix": {"lspace": 5, "rspace": 5}, "\u22e6 infix": {"lspace": 5, "rspace": 5}, "\u22e7 infix": {"lspace": 5, "rspace": 5}, "\u22e8 infix": {"lspace": 5, "rspace": 5}, "\u22e9 infix": {"lspace": 5, "rspace": 5}, "\u22ea infix": {"lspace": 5, "rspace": 5}, "\u22eb infix": {"lspace": 5, "rspace": 5}, "\u22ec infix": {"lspace": 5, "rspace": 5}, "\u22ed infix": {"lspace": 5, "rspace": 5}, "\u22f2 infix": {"lspace": 5, "rspace": 5}, "\u22f3 infix": {"lspace": 5, "rspace": 5}, "\u22f4 infix": {"lspace": 5, "rspace": 5}, "\u22f5 infix": {"lspace": 5, "rspace": 5}, "\u22f6 infix": {"lspace": 5, "rspace": 5}, "\u22f7 infix": {"lspace": 5, "rspace": 5}, "\u22f8 infix": {"lspace": 5, "rspace": 5}, "\u22f9 infix": {"lspace": 5, "rspace": 5}, "\u22fa infix": {"lspace": 5, "rspace": 5}, "\u22fb infix": {"lspace": 5, "rspace": 5}, "\u22fc infix": {"lspace": 5, "rspace": 5}, "\u22fd infix": {"lspace": 5, "rspace": 5}, "\u22fe infix": {"lspace": 5, "rspace": 5}, "\u22ff infix": {"lspace": 5, "rspace": 5}, "\u2301 infix": {"lspace": 5, "rspace": 5}, "\u2305 infix": {"lspace": 3, "rspace": 3}, "\u2306 infix": {"lspace": 3, "rspace": 3}, "\u2308 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2309 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u230a prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u230b postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2310 prefix": {"lspace": 0, "rspace": 0}, "\u2319 prefix": {"lspace": 0, "rspace": 0}, "\u2322 postfix": {"lspace": 0, "rspace": 0, "stretchy": true}, "\u2323 postfix": {"lspace": 0, "rspace": 0, "stretchy": true}, "\u2329 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u232a postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u237c infix": {"lspace": 5, "rspace": 5}, "\u238b infix": {"lspace": 5, "rspace": 5}, "\u23b4 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23b5 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23cd postfix": {"lspace": 0, "rspace": 0}, "\u23dc postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23dd postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23de postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23df postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23e0 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23e1 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u25a0 infix": {"lspace": 3, "rspace": 3}, "\u25a1 infix": {"lspace": 3, "rspace": 3}, "\u25aa infix": {"lspace": 3, "rspace": 3}, "\u25ab infix": {"lspace": 3, "rspace": 3}, "\u25ad infix": {"lspace": 3, "rspace": 3}, "\u25ae infix": {"lspace": 3, "rspace": 3}, "\u25af infix": {"lspace": 3, "rspace": 3}, "\u25b0 infix": {"lspace": 3, "rspace": 3}, "\u25b1 infix": {"lspace": 3, "rspace": 3}, "\u2758 infix": {"lspace": 5, "rspace": 5}, "\u2772 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2773 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2794 infix": {"lspace": 5, "rspace": 5}, "\u2795 infix": {"lspace": 4, "rspace": 4}, "\u2795 prefix": {"lspace": 0, "rspace": 0}, "\u2796 infix": {"lspace": 4, "rspace": 4}, "\u2796 prefix": {"lspace": 0, "rspace": 0}, "\u2797 infix": {"lspace": 4, "rspace": 4}, "\u2798 infix": {"lspace": 5, "rspace": 5}, "\u2799 infix": {"lspace": 5, "rspace": 5}, "\u279a infix": {"lspace": 5, "rspace": 5}, "\u279b infix": {"lspace": 5, "rspace": 5}, "\u279c infix": {"lspace": 5, "rspace": 5}, "\u279d infix": {"lspace": 5, "rspace": 5}, "\u279e infix": {"lspace": 5, "rspace": 5}, "\u279f infix": {"lspace": 5, "rspace": 5}, "\u27a0 infix": {"lspace": 5, "rspace": 5}, "\u27a1 infix": {"lspace": 5, "rspace": 5}, "\u27a5 infix": {"lspace": 5, "rspace": 5}, "\u27a6 infix": {"lspace": 5, "rspace": 5}, "\u27a7 infix": {"lspace": 5, "rspace": 5}, "\u27a8 infix": {"lspace": 5, "rspace": 5}, "\u27a9 infix": {"lspace": 5, "rspace": 5}, "\u27aa infix": {"lspace": 5, "rspace": 5}, "\u27ab infix": {"lspace": 5, "rspace": 5}, "\u27ac infix": {"lspace": 5, "rspace": 5}, "\u27ad infix": {"lspace": 5, "rspace": 5}, "\u27ae infix": {"lspace": 5, "rspace": 5}, "\u27af infix": {"lspace": 5, "rspace": 5}, "\u27b1 infix": {"lspace": 5, "rspace": 5}, "\u27b2 infix": {"lspace": 5, "rspace": 5}, "\u27b3 infix": {"lspace": 5, "rspace": 5}, "\u27b4 infix": {"lspace": 5, "rspace": 5}, "\u27b5 infix": {"lspace": 5, "rspace": 5}, "\u27b6 infix": {"lspace": 5, "rspace": 5}, "\u27b7 infix": {"lspace": 5, "rspace": 5}, "\u27b8 infix": {"lspace": 5, "rspace": 5}, "\u27b9 infix": {"lspace": 5, "rspace": 5}, "\u27ba infix": {"lspace": 5, "rspace": 5}, "\u27bb infix": {"lspace": 5, "rspace": 5}, "\u27bc infix": {"lspace": 5, "rspace": 5}, "\u27bd infix": {"lspace": 5, "rspace": 5}, "\u27be infix": {"lspace": 5, "rspace": 5}, "\u27c0 prefix": {"lspace": 0, "rspace": 0}, "\u27cb infix": {"lspace": 3, "rspace": 3}, "\u27cd infix": {"lspace": 3, "rspace": 3}, "\u27df infix": {"lspace": 5, "rspace": 5}, "\u27e6 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27e7 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27e8 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27e9 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27ea prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27eb postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27ec prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27ed postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27ee prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27ef postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27f0 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u27f1 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u27f2 infix": {"lspace": 5, "rspace": 5}, "\u27f3 infix": {"lspace": 5, "rspace": 5}, "\u27f4 infix": {"lspace": 4, "rspace": 4}, "\u27f5 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27f6 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27f7 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27f8 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27f9 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27fa infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27fb infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27fc infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27fd infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27fe infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27ff infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2900 infix": {"lspace": 5, "rspace": 5}, "\u2901 infix": {"lspace": 5, "rspace": 5}, "\u2902 infix": {"lspace": 5, "rspace": 5}, "\u2903 infix": {"lspace": 5, "rspace": 5}, "\u2904 infix": {"lspace": 5, "rspace": 5}, "\u2905 infix": {"lspace": 5, "rspace": 5}, "\u2906 infix": {"lspace": 5, "rspace": 5}, "\u2907 infix": {"lspace": 5, "rspace": 5}, "\u2908 infix": {"lspace": 5, "rspace": 5}, "\u2909 infix": {"lspace": 5, "rspace": 5}, "\u290a infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u290b infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u290c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u290d infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u290e infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u290f infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2910 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2911 infix": {"lspace": 5, "rspace": 5}, "\u2912 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2913 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2914 infix": {"lspace": 5, "rspace": 5}, "\u2915 infix": {"lspace": 5, "rspace": 5}, "\u2916 infix": {"lspace": 5, "rspace": 5}, "\u2917 infix": {"lspace": 5, "rspace": 5}, "\u2918 infix": {"lspace": 5, "rspace": 5}, "\u2919 infix": {"lspace": 5, "rspace": 5}, "\u291a infix": {"lspace": 5, "rspace": 5}, "\u291b infix": {"lspace": 5, "rspace": 5}, "\u291c infix": {"lspace": 5, "rspace": 5}, "\u291d infix": {"lspace": 5, "rspace": 5}, "\u291e infix": {"lspace": 5, "rspace": 5}, "\u291f infix": {"lspace": 5, "rspace": 5}, "\u2920 infix": {"lspace": 5, "rspace": 5}, "\u2921 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2922 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2923 infix": {"lspace": 5, "rspace": 5}, "\u2924 infix": {"lspace": 5, "rspace": 5}, "\u2925 infix": {"lspace": 5, "rspace": 5}, "\u2926 infix": {"lspace": 5, "rspace": 5}, "\u2927 infix": {"lspace": 5, "rspace": 5}, "\u2928 infix": {"lspace": 5, "rspace": 5}, "\u2929 infix": {"lspace": 5, "rspace": 5}, "\u292a infix": {"lspace": 5, "rspace": 5}, "\u292b infix": {"lspace": 5, "rspace": 5}, "\u292c infix": {"lspace": 5, "rspace": 5}, "\u292d infix": {"lspace": 5, "rspace": 5}, "\u292e infix": {"lspace": 5, "rspace": 5}, "\u292f infix": {"lspace": 5, "rspace": 5}, "\u2930 infix": {"lspace": 5, "rspace": 5}, "\u2931 infix": {"lspace": 5, "rspace": 5}, "\u2932 infix": {"lspace": 5, "rspace": 5}, "\u2933 infix": {"lspace": 5, "rspace": 5}, "\u2934 infix": {"lspace": 5, "rspace": 5}, "\u2935 infix": {"lspace": 5, "rspace": 5}, "\u2936 infix": {"lspace": 5, "rspace": 5}, "\u2937 infix": {"lspace": 5, "rspace": 5}, "\u2938 infix": {"lspace": 5, "rspace": 5}, "\u2939 infix": {"lspace": 5, "rspace": 5}, "\u293a infix": {"lspace": 5, "rspace": 5}, "\u293b infix": {"lspace": 5, "rspace": 5}, "\u293c infix": {"lspace": 5, "rspace": 5}, "\u293d infix": {"lspace": 5, "rspace": 5}, "\u293e infix": {"lspace": 5, "rspace": 5}, "\u293f infix": {"lspace": 5, "rspace": 5}, "\u2940 infix": {"lspace": 5, "rspace": 5}, "\u2941 infix": {"lspace": 5, "rspace": 5}, "\u2942 infix": {"lspace": 5, "rspace": 5}, "\u2943 infix": {"lspace": 5, "rspace": 5}, "\u2944 infix": {"lspace": 5, "rspace": 5}, "\u2945 infix": {"lspace": 5, "rspace": 5}, "\u2946 infix": {"lspace": 5, "rspace": 5}, "\u2947 infix": {"lspace": 5, "rspace": 5}, "\u2948 infix": {"lspace": 5, "rspace": 5}, "\u2949 infix": {"lspace": 5, "rspace": 5}, "\u294a infix": {"lspace": 5, "rspace": 5}, "\u294b infix": {"lspace": 5, "rspace": 5}, "\u294c infix": {"lspace": 5, "rspace": 5}, "\u294d infix": {"lspace": 5, "rspace": 5}, "\u294e infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u294f infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2950 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2951 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2952 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2953 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2954 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2955 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2956 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2957 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2958 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2959 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u295a infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u295b infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u295c infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u295d infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u295e infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u295f infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2960 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2961 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2962 infix": {"lspace": 5, "rspace": 5}, "\u2963 infix": {"lspace": 5, "rspace": 5}, "\u2964 infix": {"lspace": 5, "rspace": 5}, "\u2965 infix": {"lspace": 5, "rspace": 5}, "\u2966 infix": {"lspace": 5, "rspace": 5}, "\u2967 infix": {"lspace": 5, "rspace": 5}, "\u2968 infix": {"lspace": 5, "rspace": 5}, "\u2969 infix": {"lspace": 5, "rspace": 5}, "\u296a infix": {"lspace": 5, "rspace": 5}, "\u296b infix": {"lspace": 5, "rspace": 5}, "\u296c infix": {"lspace": 5, "rspace": 5}, "\u296d infix": {"lspace": 5, "rspace": 5}, "\u296e infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u296f infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2970 infix": {"lspace": 5, "rspace": 5}, "\u2971 infix": {"lspace": 5, "rspace": 5}, "\u2972 infix": {"lspace": 5, "rspace": 5}, "\u2973 infix": {"lspace": 5, "rspace": 5}, "\u2974 infix": {"lspace": 5, "rspace": 5}, "\u2975 infix": {"lspace": 5, "rspace": 5}, "\u2976 infix": {"lspace": 5, "rspace": 5}, "\u2977 infix": {"lspace": 5, "rspace": 5}, "\u2978 infix": {"lspace": 5, "rspace": 5}, "\u2979 infix": {"lspace": 5, "rspace": 5}, "\u297a infix": {"lspace": 5, "rspace": 5}, "\u297b infix": {"lspace": 5, "rspace": 5}, "\u297c infix": {"lspace": 5, "rspace": 5}, "\u297d infix": {"lspace": 5, "rspace": 5}, "\u297e infix": {"lspace": 5, "rspace": 5}, "\u297f infix": {"lspace": 5, "rspace": 5}, "\u2980 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2980 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2981 infix": {"lspace": 3, "rspace": 3}, "\u2982 infix": {"lspace": 3, "rspace": 3}, "\u2983 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2984 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2985 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2986 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2987 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2988 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2989 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298a postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298b prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298c postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298d prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298e postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298f prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2990 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2991 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2992 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2993 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2994 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2995 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2996 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2997 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2998 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2999 infix": {"lspace": 3, "rspace": 3}, "\u299a infix": {"lspace": 3, "rspace": 3}, "\u299b prefix": {"lspace": 0, "rspace": 0}, "\u299c prefix": {"lspace": 0, "rspace": 0}, "\u299d prefix": {"lspace": 0, "rspace": 0}, "\u299e prefix": {"lspace": 0, "rspace": 0}, "\u299f prefix": {"lspace": 0, "rspace": 0}, "\u29a0 prefix": {"lspace": 0, "rspace": 0}, "\u29a1 prefix": {"lspace": 0, "rspace": 0}, "\u29a2 prefix": {"lspace": 0, "rspace": 0}, "\u29a3 prefix": {"lspace": 0, "rspace": 0}, "\u29a4 prefix": {"lspace": 0, "rspace": 0}, "\u29a5 prefix": {"lspace": 0, "rspace": 0}, "\u29a6 prefix": {"lspace": 0, "rspace": 0}, "\u29a7 prefix": {"lspace": 0, "rspace": 0}, "\u29a8 prefix": {"lspace": 0, "rspace": 0}, "\u29a9 prefix": {"lspace": 0, "rspace": 0}, "\u29aa prefix": {"lspace": 0, "rspace": 0}, "\u29ab prefix": {"lspace": 0, "rspace": 0}, "\u29ac prefix": {"lspace": 0, "rspace": 0}, "\u29ad prefix": {"lspace": 0, "rspace": 0}, "\u29ae prefix": {"lspace": 0, "rspace": 0}, "\u29af prefix": {"lspace": 0, "rspace": 0}, "\u29b5 infix": {"lspace": 3, "rspace": 3}, "\u29b6 infix": {"lspace": 5, "rspace": 5}, "\u29b7 infix": {"lspace": 5, "rspace": 5}, "\u29b8 infix": {"lspace": 5, "rspace": 5}, "\u29b9 infix": {"lspace": 5, "rspace": 5}, "\u29ba infix": {"lspace": 5, "rspace": 5}, "\u29bb infix": {"lspace": 5, "rspace": 5}, "\u29bc infix": {"lspace": 4, "rspace": 4}, "\u29bd infix": {"lspace": 5, "rspace": 5}, "\u29be infix": {"lspace": 5, "rspace": 5}, "\u29bf infix": {"lspace": 5, "rspace": 5}, "\u29c0 infix": {"lspace": 5, "rspace": 5}, "\u29c1 infix": {"lspace": 5, "rspace": 5}, "\u29c2 infix": {"lspace": 3, "rspace": 3}, "\u29c3 infix": {"lspace": 3, "rspace": 3}, "\u29c4 infix": {"lspace": 5, "rspace": 5}, "\u29c5 infix": {"lspace": 5, "rspace": 5}, "\u29c6 infix": {"lspace": 5, "rspace": 5}, "\u29c7 infix": {"lspace": 5, "rspace": 5}, "\u29c8 infix": {"lspace": 5, "rspace": 5}, "\u29c9 infix": {"lspace": 3, "rspace": 3}, "\u29ca infix": {"lspace": 3, "rspace": 3}, "\u29cb infix": {"lspace": 3, "rspace": 3}, "\u29cc infix": {"lspace": 3, "rspace": 3}, "\u29cd infix": {"lspace": 3, "rspace": 3}, "\u29ce infix": {"lspace": 5, "rspace": 5}, "\u29cf infix": {"lspace": 5, "rspace": 5}, "\u29d1 infix": {"lspace": 5, "rspace": 5}, "\u29d2 infix": {"lspace": 5, "rspace": 5}, "\u29d3 infix": {"lspace": 5, "rspace": 5}, "\u29d4 infix": {"lspace": 5, "rspace": 5}, "\u29d5 infix": {"lspace": 5, "rspace": 5}, "\u29d6 infix": {"lspace": 5, "rspace": 5}, "\u29d7 infix": {"lspace": 5, "rspace": 5}, "\u29d8 infix": {"lspace": 3, "rspace": 3}, "\u29d9 infix": {"lspace": 3, "rspace": 3}, "\u29db infix": {"lspace": 3, "rspace": 3}, "\u29df infix": {"lspace": 3, "rspace": 3}, "\u29e0 infix": {"lspace": 3, "rspace": 3}, "\u29e1 infix": {"lspace": 5, "rspace": 5}, "\u29e2 infix": {"lspace": 3, "rspace": 3}, "\u29e3 infix": {"lspace": 5, "rspace": 5}, "\u29e4 infix": {"lspace": 5, "rspace": 5}, "\u29e5 infix": {"lspace": 5, "rspace": 5}, "\u29e6 infix": {"lspace": 5, "rspace": 5}, "\u29e7 infix": {"lspace": 3, "rspace": 3}, "\u29e8 infix": {"lspace": 3, "rspace": 3}, "\u29e9 infix": {"lspace": 3, "rspace": 3}, "\u29ea infix": {"lspace": 3, "rspace": 3}, "\u29eb infix": {"lspace": 3, "rspace": 3}, "\u29ec infix": {"lspace": 3, "rspace": 3}, "\u29ed infix": {"lspace": 3, "rspace": 3}, "\u29f4 infix": {"lspace": 5, "rspace": 5}, "\u29f5 infix": {"lspace": 5, "rspace": 5}, "\u29f6 infix": {"lspace": 4, "rspace": 4}, "\u29f7 infix": {"lspace": 5, "rspace": 5}, "\u29f8 infix": {"lspace": 3, "rspace": 3}, "\u29f9 infix": {"lspace": 3, "rspace": 3}, "\u29fa infix": {"lspace": 3, "rspace": 3}, "\u29fb infix": {"lspace": 3, "rspace": 3}, "\u29fc prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u29fd postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2a00 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a01 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a02 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a03 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a04 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a05 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a06 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a07 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a08 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a09 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a0a prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a0b prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a0c prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a0d prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a0e prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a0f prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a10 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a11 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a12 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a13 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a14 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a15 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a16 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a17 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a18 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a19 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a1a prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a1b prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a1c prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a1d infix": {"lspace": 3, "rspace": 3}, "\u2a1e infix": {"lspace": 3, "rspace": 3}, "\u2a1f infix": {"lspace": 3, "rspace": 3}, "\u2a20 infix": {"lspace": 3, "rspace": 3}, "\u2a21 infix": {"lspace": 3, "rspace": 3}, "\u2a22 infix": {"lspace": 4, "rspace": 4}, "\u2a23 infix": {"lspace": 4, "rspace": 4}, "\u2a24 infix": {"lspace": 4, "rspace": 4}, "\u2a25 infix": {"lspace": 4, "rspace": 4}, "\u2a26 infix": {"lspace": 4, "rspace": 4}, "\u2a27 infix": {"lspace": 4, "rspace": 4}, "\u2a28 infix": {"lspace": 4, "rspace": 4}, "\u2a29 infix": {"lspace": 4, "rspace": 4}, "\u2a2a infix": {"lspace": 4, "rspace": 4}, "\u2a2b infix": {"lspace": 4, "rspace": 4}, "\u2a2c infix": {"lspace": 4, "rspace": 4}, "\u2a2d infix": {"lspace": 4, "rspace": 4}, "\u2a2e infix": {"lspace": 4, "rspace": 4}, "\u2a2f infix": {"lspace": 3, "rspace": 3}, "\u2a30 infix": {"lspace": 3, "rspace": 3}, "\u2a31 infix": {"lspace": 3, "rspace": 3}, "\u2a32 infix": {"lspace": 3, "rspace": 3}, "\u2a33 infix": {"lspace": 3, "rspace": 3}, "\u2a34 infix": {"lspace": 3, "rspace": 3}, "\u2a35 infix": {"lspace": 3, "rspace": 3}, "\u2a36 infix": {"lspace": 3, "rspace": 3}, "\u2a37 infix": {"lspace": 3, "rspace": 3}, "\u2a38 infix": {"lspace": 4, "rspace": 4}, "\u2a39 infix": {"lspace": 4, "rspace": 4}, "\u2a3a infix": {"lspace": 4, "rspace": 4}, "\u2a3b infix": {"lspace": 3, "rspace": 3}, "\u2a3c infix": {"lspace": 3, "rspace": 3}, "\u2a3d infix": {"lspace": 3, "rspace": 3}, "\u2a3e infix": {"lspace": 5, "rspace": 5}, "\u2a3f infix": {"lspace": 3, "rspace": 3}, "\u2a40 infix": {"lspace": 4, "rspace": 4}, "\u2a41 infix": {"lspace": 4, "rspace": 4}, "\u2a42 infix": {"lspace": 4, "rspace": 4}, "\u2a43 infix": {"lspace": 4, "rspace": 4}, "\u2a44 infix": {"lspace": 4, "rspace": 4}, "\u2a45 infix": {"lspace": 4, "rspace": 4}, "\u2a46 infix": {"lspace": 4, "rspace": 4}, "\u2a47 infix": {"lspace": 4, "rspace": 4}, "\u2a48 infix": {"lspace": 4, "rspace": 4}, "\u2a49 infix": {"lspace": 4, "rspace": 4}, "\u2a4a infix": {"lspace": 4, "rspace": 4}, "\u2a4b infix": {"lspace": 4, "rspace": 4}, "\u2a4c infix": {"lspace": 4, "rspace": 4}, "\u2a4d infix": {"lspace": 4, "rspace": 4}, "\u2a4e infix": {"lspace": 4, "rspace": 4}, "\u2a4f infix": {"lspace": 4, "rspace": 4}, "\u2a50 infix": {"lspace": 3, "rspace": 3}, "\u2a51 infix": {"lspace": 4, "rspace": 4}, "\u2a52 infix": {"lspace": 4, "rspace": 4}, "\u2a53 infix": {"lspace": 4, "rspace": 4}, "\u2a54 infix": {"lspace": 4, "rspace": 4}, "\u2a55 infix": {"lspace": 4, "rspace": 4}, "\u2a56 infix": {"lspace": 4, "rspace": 4}, "\u2a57 infix": {"lspace": 4, "rspace": 4}, "\u2a58 infix": {"lspace": 4, "rspace": 4}, "\u2a59 infix": {"lspace": 4, "rspace": 4}, "\u2a5a infix": {"lspace": 4, "rspace": 4}, "\u2a5b infix": {"lspace": 4, "rspace": 4}, "\u2a5c infix": {"lspace": 4, "rspace": 4}, "\u2a5d infix": {"lspace": 4, "rspace": 4}, "\u2a5e infix": {"lspace": 4, "rspace": 4}, "\u2a5f infix": {"lspace": 4, "rspace": 4}, "\u2a60 infix": {"lspace": 4, "rspace": 4}, "\u2a61 infix": {"lspace": 4, "rspace": 4}, "\u2a62 infix": {"lspace": 4, "rspace": 4}, "\u2a63 infix": {"lspace": 4, "rspace": 4}, "\u2a64 infix": {"lspace": 5, "rspace": 5}, "\u2a65 infix": {"lspace": 5, "rspace": 5}, "\u2a66 infix": {"lspace": 5, "rspace": 5}, "\u2a67 infix": {"lspace": 5, "rspace": 5}, "\u2a68 infix": {"lspace": 5, "rspace": 5}, "\u2a69 infix": {"lspace": 5, "rspace": 5}, "\u2a6a infix": {"lspace": 5, "rspace": 5}, "\u2a6b infix": {"lspace": 5, "rspace": 5}, "\u2a6c infix": {"lspace": 5, "rspace": 5}, "\u2a6d infix": {"lspace": 5, "rspace": 5}, "\u2a6e infix": {"lspace": 5, "rspace": 5}, "\u2a6f infix": {"lspace": 5, "rspace": 5}, "\u2a70 infix": {"lspace": 5, "rspace": 5}, "\u2a71 infix": {"lspace": 5, "rspace": 5}, "\u2a72 infix": {"lspace": 5, "rspace": 5}, "\u2a73 infix": {"lspace": 5, "rspace": 5}, "\u2a74 infix": {"lspace": 5, "rspace": 5}, "\u2a75 infix": {"lspace": 5, "rspace": 5}, "\u2a76 infix": {"lspace": 5, "rspace": 5}, "\u2a77 infix": {"lspace": 5, "rspace": 5}, "\u2a78 infix": {"lspace": 5, "rspace": 5}, "\u2a79 infix": {"lspace": 5, "rspace": 5}, "\u2a7a infix": {"lspace": 5, "rspace": 5}, "\u2a7b infix": {"lspace": 5, "rspace": 5}, "\u2a7c infix": {"lspace": 5, "rspace": 5}, "\u2a7d infix": {"lspace": 5, "rspace": 5}, "\u2a7e infix": {"lspace": 5, "rspace": 5}, "\u2a7f infix": {"lspace": 5, "rspace": 5}, "\u2a80 infix": {"lspace": 5, "rspace": 5}, "\u2a81 infix": {"lspace": 5, "rspace": 5}, "\u2a82 infix": {"lspace": 5, "rspace": 5}, "\u2a83 infix": {"lspace": 5, "rspace": 5}, "\u2a84 infix": {"lspace": 5, "rspace": 5}, "\u2a85 infix": {"lspace": 5, "rspace": 5}, "\u2a86 infix": {"lspace": 5, "rspace": 5}, "\u2a87 infix": {"lspace": 5, "rspace": 5}, "\u2a88 infix": {"lspace": 5, "rspace": 5}, "\u2a89 infix": {"lspace": 5, "rspace": 5}, "\u2a8a infix": {"lspace": 5, "rspace": 5}, "\u2a8b infix": {"lspace": 5, "rspace": 5}, "\u2a8c infix": {"lspace": 5, "rspace": 5}, "\u2a8d infix": {"lspace": 5, "rspace": 5}, "\u2a8e infix": {"lspace": 5, "rspace": 5}, "\u2a8f infix": {"lspace": 5, "rspace": 5}, "\u2a90 infix": {"lspace": 5, "rspace": 5}, "\u2a91 infix": {"lspace": 5, "rspace": 5}, "\u2a92 infix": {"lspace": 5, "rspace": 5}, "\u2a93 infix": {"lspace": 5, "rspace": 5}, "\u2a94 infix": {"lspace": 5, "rspace": 5}, "\u2a95 infix": {"lspace": 5, "rspace": 5}, "\u2a96 infix": {"lspace": 5, "rspace": 5}, "\u2a97 infix": {"lspace": 5, "rspace": 5}, "\u2a98 infix": {"lspace": 5, "rspace": 5}, "\u2a99 infix": {"lspace": 5, "rspace": 5}, "\u2a9a infix": {"lspace": 5, "rspace": 5}, "\u2a9b infix": {"lspace": 5, "rspace": 5}, "\u2a9c infix": {"lspace": 5, "rspace": 5}, "\u2a9d infix": {"lspace": 5, "rspace": 5}, "\u2a9e infix": {"lspace": 5, "rspace": 5}, "\u2a9f infix": {"lspace": 5, "rspace": 5}, "\u2aa0 infix": {"lspace": 5, "rspace": 5}, "\u2aa1 infix": {"lspace": 5, "rspace": 5}, "\u2aa2 infix": {"lspace": 5, "rspace": 5}, "\u2aa3 infix": {"lspace": 5, "rspace": 5}, "\u2aa4 infix": {"lspace": 5, "rspace": 5}, "\u2aa5 infix": {"lspace": 5, "rspace": 5}, "\u2aa6 infix": {"lspace": 5, "rspace": 5}, "\u2aa7 infix": {"lspace": 5, "rspace": 5}, "\u2aa8 infix": {"lspace": 5, "rspace": 5}, "\u2aa9 infix": {"lspace": 5, "rspace": 5}, "\u2aaa infix": {"lspace": 5, "rspace": 5}, "\u2aab infix": {"lspace": 5, "rspace": 5}, "\u2aac infix": {"lspace": 5, "rspace": 5}, "\u2aad infix": {"lspace": 5, "rspace": 5}, "\u2aae infix": {"lspace": 5, "rspace": 5}, "\u2aaf infix": {"lspace": 5, "rspace": 5}, "\u2ab0 infix": {"lspace": 5, "rspace": 5}, "\u2ab1 infix": {"lspace": 5, "rspace": 5}, "\u2ab2 infix": {"lspace": 5, "rspace": 5}, "\u2ab3 infix": {"lspace": 5, "rspace": 5}, "\u2ab4 infix": {"lspace": 5, "rspace": 5}, "\u2ab5 infix": {"lspace": 5, "rspace": 5}, "\u2ab6 infix": {"lspace": 5, "rspace": 5}, "\u2ab7 infix": {"lspace": 5, "rspace": 5}, "\u2ab8 infix": {"lspace": 5, "rspace": 5}, "\u2ab9 infix": {"lspace": 5, "rspace": 5}, "\u2aba infix": {"lspace": 5, "rspace": 5}, "\u2abb infix": {"lspace": 5, "rspace": 5}, "\u2abc infix": {"lspace": 5, "rspace": 5}, "\u2abd infix": {"lspace": 5, "rspace": 5}, "\u2abe infix": {"lspace": 5, "rspace": 5}, "\u2abf infix": {"lspace": 5, "rspace": 5}, "\u2ac0 infix": {"lspace": 5, "rspace": 5}, "\u2ac1 infix": {"lspace": 5, "rspace": 5}, "\u2ac2 infix": {"lspace": 5, "rspace": 5}, "\u2ac3 infix": {"lspace": 5, "rspace": 5}, "\u2ac4 infix": {"lspace": 5, "rspace": 5}, "\u2ac5 infix": {"lspace": 5, "rspace": 5}, "\u2ac6 infix": {"lspace": 5, "rspace": 5}, "\u2ac7 infix": {"lspace": 5, "rspace": 5}, "\u2ac8 infix": {"lspace": 5, "rspace": 5}, "\u2ac9 infix": {"lspace": 5, "rspace": 5}, "\u2aca infix": {"lspace": 5, "rspace": 5}, "\u2acb infix": {"lspace": 5, "rspace": 5}, "\u2acc infix": {"lspace": 5, "rspace": 5}, "\u2acd infix": {"lspace": 5, "rspace": 5}, "\u2ace infix": {"lspace": 5, "rspace": 5}, "\u2acf infix": {"lspace": 5, "rspace": 5}, "\u2ad0 infix": {"lspace": 5, "rspace": 5}, "\u2ad1 infix": {"lspace": 5, "rspace": 5}, "\u2ad2 infix": {"lspace": 5, "rspace": 5}, "\u2ad3 infix": {"lspace": 5, "rspace": 5}, "\u2ad4 infix": {"lspace": 5, "rspace": 5}, "\u2ad5 infix": {"lspace": 5, "rspace": 5}, "\u2ad6 infix": {"lspace": 5, "rspace": 5}, "\u2ad7 infix": {"lspace": 5, "rspace": 5}, "\u2ad8 infix": {"lspace": 5, "rspace": 5}, "\u2ad9 infix": {"lspace": 5, "rspace": 5}, "\u2ada infix": {"lspace": 4, "rspace": 4}, "\u2adb infix": {"lspace": 4, "rspace": 4}, "\u2adc infix": {"lspace": 3, "rspace": 3}, "\u2add infix": {"lspace": 3, "rspace": 3}, "\u2ade infix": {"lspace": 5, "rspace": 5}, "\u2adf infix": {"lspace": 5, "rspace": 5}, "\u2ae0 infix": {"lspace": 5, "rspace": 5}, "\u2ae1 infix": {"lspace": 5, "rspace": 5}, "\u2ae2 infix": {"lspace": 5, "rspace": 5}, "\u2ae3 infix": {"lspace": 5, "rspace": 5}, "\u2ae4 infix": {"lspace": 5, "rspace": 5}, "\u2ae5 infix": {"lspace": 5, "rspace": 5}, "\u2ae6 infix": {"lspace": 5, "rspace": 5}, "\u2ae7 infix": {"lspace": 5, "rspace": 5}, "\u2ae8 infix": {"lspace": 5, "rspace": 5}, "\u2ae9 infix": {"lspace": 5, "rspace": 5}, "\u2aea infix": {"lspace": 5, "rspace": 5}, "\u2aeb infix": {"lspace": 5, "rspace": 5}, "\u2aec prefix": {"lspace": 0, "rspace": 0}, "\u2aed prefix": {"lspace": 0, "rspace": 0}, "\u2aee infix": {"lspace": 5, "rspace": 5}, "\u2aef infix": {"lspace": 5, "rspace": 5}, "\u2af0 infix": {"lspace": 5, "rspace": 5}, "\u2af1 infix": {"lspace": 5, "rspace": 5}, "\u2af2 infix": {"lspace": 5, "rspace": 5}, "\u2af3 infix": {"lspace": 5, "rspace": 5}, "\u2af4 infix": {"lspace": 5, "rspace": 5}, "\u2af5 infix": {"lspace": 5, "rspace": 5}, "\u2af6 infix": {"lspace": 5, "rspace": 5}, "\u2af7 infix": {"lspace": 5, "rspace": 5}, "\u2af8 infix": {"lspace": 5, "rspace": 5}, "\u2af9 infix": {"lspace": 5, "rspace": 5}, "\u2afa infix": {"lspace": 5, "rspace": 5}, "\u2afb infix": {"lspace": 4, "rspace": 4}, "\u2afc prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2afd infix": {"lspace": 4, "rspace": 4}, "\u2afe infix": {"lspace": 3, "rspace": 3}, "\u2aff prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2b00 infix": {"lspace": 5, "rspace": 5}, "\u2b01 infix": {"lspace": 5, "rspace": 5}, "\u2b02 infix": {"lspace": 5, "rspace": 5}, "\u2b03 infix": {"lspace": 5, "rspace": 5}, "\u2b04 infix": {"lspace": 5, "rspace": 5}, "\u2b05 infix": {"lspace": 5, "rspace": 5}, "\u2b06 infix": {"lspace": 5, "rspace": 5}, "\u2b07 infix": {"lspace": 5, "rspace": 5}, "\u2b08 infix": {"lspace": 5, "rspace": 5}, "\u2b09 infix": {"lspace": 5, "rspace": 5}, "\u2b0a infix": {"lspace": 5, "rspace": 5}, "\u2b0b infix": {"lspace": 5, "rspace": 5}, "\u2b0c infix": {"lspace": 5, "rspace": 5}, "\u2b0d infix": {"lspace": 5, "rspace": 5}, "\u2b0e infix": {"lspace": 5, "rspace": 5}, "\u2b0f infix": {"lspace": 5, "rspace": 5}, "\u2b10 infix": {"lspace": 5, "rspace": 5}, "\u2b11 infix": {"lspace": 5, "rspace": 5}, "\u2b30 infix": {"lspace": 5, "rspace": 5}, "\u2b31 infix": {"lspace": 5, "rspace": 5}, "\u2b32 infix": {"lspace": 4, "rspace": 4}, "\u2b33 infix": {"lspace": 5, "rspace": 5}, "\u2b34 infix": {"lspace": 5, "rspace": 5}, "\u2b35 infix": {"lspace": 5, "rspace": 5}, "\u2b36 infix": {"lspace": 5, "rspace": 5}, "\u2b37 infix": {"lspace": 5, "rspace": 5}, "\u2b38 infix": {"lspace": 5, "rspace": 5}, "\u2b39 infix": {"lspace": 5, "rspace": 5}, "\u2b3a infix": {"lspace": 5, "rspace": 5}, "\u2b3b infix": {"lspace": 5, "rspace": 5}, "\u2b3c infix": {"lspace": 5, "rspace": 5}, "\u2b3d infix": {"lspace": 5, "rspace": 5}, "\u2b3e infix": {"lspace": 5, "rspace": 5}, "\u2b3f infix": {"lspace": 5, "rspace": 5}, "\u2b40 infix": {"lspace": 5, "rspace": 5}, "\u2b41 infix": {"lspace": 5, "rspace": 5}, "\u2b42 infix": {"lspace": 5, "rspace": 5}, "\u2b43 infix": {"lspace": 5, "rspace": 5}, "\u2b44 infix": {"lspace": 5, "rspace": 5}, "\u2b45 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b46 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b47 infix": {"lspace": 5, "rspace": 5}, "\u2b48 infix": {"lspace": 5, "rspace": 5}, "\u2b49 infix": {"lspace": 5, "rspace": 5}, "\u2b4a infix": {"lspace": 5, "rspace": 5}, "\u2b4b infix": {"lspace": 5, "rspace": 5}, "\u2b4c infix": {"lspace": 5, "rspace": 5}, "\u2b4d infix": {"lspace": 5, "rspace": 5}, "\u2b4e infix": {"lspace": 5, "rspace": 5}, "\u2b4f infix": {"lspace": 5, "rspace": 5}, "\u2b5a infix": {"lspace": 5, "rspace": 5}, "\u2b5b infix": {"lspace": 5, "rspace": 5}, "\u2b5c infix": {"lspace": 5, "rspace": 5}, "\u2b5d infix": {"lspace": 5, "rspace": 5}, "\u2b5e infix": {"lspace": 5, "rspace": 5}, "\u2b5f infix": {"lspace": 5, "rspace": 5}, "\u2b60 infix": {"lspace": 5, "rspace": 5}, "\u2b61 infix": {"lspace": 5, "rspace": 5}, "\u2b62 infix": {"lspace": 5, "rspace": 5}, "\u2b63 infix": {"lspace": 5, "rspace": 5}, "\u2b64 infix": {"lspace": 5, "rspace": 5}, "\u2b65 infix": {"lspace": 5, "rspace": 5}, "\u2b66 infix": {"lspace": 5, "rspace": 5}, "\u2b67 infix": {"lspace": 5, "rspace": 5}, "\u2b68 infix": {"lspace": 5, "rspace": 5}, "\u2b69 infix": {"lspace": 5, "rspace": 5}, "\u2b6a infix": {"lspace": 5, "rspace": 5}, "\u2b6b infix": {"lspace": 5, "rspace": 5}, "\u2b6c infix": {"lspace": 5, "rspace": 5}, "\u2b6d infix": {"lspace": 5, "rspace": 5}, "\u2b6e infix": {"lspace": 5, "rspace": 5}, "\u2b6f infix": {"lspace": 5, "rspace": 5}, "\u2b70 infix": {"lspace": 5, "rspace": 5}, "\u2b71 infix": {"lspace": 5, "rspace": 5}, "\u2b72 infix": {"lspace": 5, "rspace": 5}, "\u2b73 infix": {"lspace": 5, "rspace": 5}, "\u2b76 infix": {"lspace": 5, "rspace": 5}, "\u2b77 infix": {"lspace": 5, "rspace": 5}, "\u2b78 infix": {"lspace": 5, "rspace": 5}, "\u2b79 infix": {"lspace": 5, "rspace": 5}, "\u2b7a infix": {"lspace": 5, "rspace": 5}, "\u2b7b infix": {"lspace": 5, "rspace": 5}, "\u2b7c infix": {"lspace": 5, "rspace": 5}, "\u2b7d infix": {"lspace": 5, "rspace": 5}, "\u2b80 infix": {"lspace": 5, "rspace": 5}, "\u2b81 infix": {"lspace": 5, "rspace": 5}, "\u2b82 infix": {"lspace": 5, "rspace": 5}, "\u2b83 infix": {"lspace": 5, "rspace": 5}, "\u2b84 infix": {"lspace": 5, "rspace": 5}, "\u2b85 infix": {"lspace": 5, "rspace": 5}, "\u2b86 infix": {"lspace": 5, "rspace": 5}, "\u2b87 infix": {"lspace": 5, "rspace": 5}, "\u2b88 infix": {"lspace": 5, "rspace": 5}, "\u2b89 infix": {"lspace": 5, "rspace": 5}, "\u2b8a infix": {"lspace": 5, "rspace": 5}, "\u2b8b infix": {"lspace": 5, "rspace": 5}, "\u2b8c infix": {"lspace": 5, "rspace": 5}, "\u2b8d infix": {"lspace": 5, "rspace": 5}, "\u2b8e infix": {"lspace": 5, "rspace": 5}, "\u2b8f infix": {"lspace": 5, "rspace": 5}, "\u2b94 infix": {"lspace": 5, "rspace": 5}, "\u2b95 infix": {"lspace": 5, "rspace": 5}, "\u2ba0 infix": {"lspace": 5, "rspace": 5}, "\u2ba1 infix": {"lspace": 5, "rspace": 5}, "\u2ba2 infix": {"lspace": 5, "rspace": 5}, "\u2ba3 infix": {"lspace": 5, "rspace": 5}, "\u2ba4 infix": {"lspace": 5, "rspace": 5}, "\u2ba5 infix": {"lspace": 5, "rspace": 5}, "\u2ba6 infix": {"lspace": 5, "rspace": 5}, "\u2ba7 infix": {"lspace": 5, "rspace": 5}, "\u2ba8 infix": {"lspace": 5, "rspace": 5}, "\u2ba9 infix": {"lspace": 5, "rspace": 5}, "\u2baa infix": {"lspace": 5, "rspace": 5}, "\u2bab infix": {"lspace": 5, "rspace": 5}, "\u2bac infix": {"lspace": 5, "rspace": 5}, "\u2bad infix": {"lspace": 5, "rspace": 5}, "\u2bae infix": {"lspace": 5, "rspace": 5}, "\u2baf infix": {"lspace": 5, "rspace": 5}, "\u2bb0 infix": {"lspace": 5, "rspace": 5}, "\u2bb1 infix": {"lspace": 5, "rspace": 5}, "\u2bb2 infix": {"lspace": 5, "rspace": 5}, "\u2bb3 infix": {"lspace": 5, "rspace": 5}, "\u2bb4 infix": {"lspace": 5, "rspace": 5}, "\u2bb5 infix": {"lspace": 5, "rspace": 5}, "\u2bb6 infix": {"lspace": 5, "rspace": 5}, "\u2bb7 infix": {"lspace": 5, "rspace": 5}, "\u2bb8 infix": {"lspace": 5, "rspace": 5}, "\u2bd1 infix": {"lspace": 5, "rspace": 5}, "\ud83b\udef0 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\ud83b\udef1 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\ud83e\udc00 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc01 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc02 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc03 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc04 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc05 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc06 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc07 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc08 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc09 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc0a infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc0b infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc10 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc11 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc12 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc13 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc14 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc15 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc16 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc17 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc18 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc19 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc1a infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc1b infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc1c infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc1d infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc1e infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc1f infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc20 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc21 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc22 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc23 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc24 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc25 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc26 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc27 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc28 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc29 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc2a infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc2b infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc2c infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc2d infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc2e infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc2f infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc30 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc31 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc32 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc33 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc34 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc35 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc36 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc37 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc38 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc39 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc3a infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc3b infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc3c infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc3d infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc3e infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc3f infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc40 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc41 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc42 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc43 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc44 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc45 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc46 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc47 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc50 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc51 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc52 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc53 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc54 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc55 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc56 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc57 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc58 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc59 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc60 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc61 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc62 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc63 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc64 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc65 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc66 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc67 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc68 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc69 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc6a infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc6b infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc6c infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc6d infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc6e infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc6f infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc70 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc71 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc72 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc73 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc74 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc75 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc76 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc77 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc78 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc79 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc7a infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc7b infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc7c infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc7d infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc7e infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc7f infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc80 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc81 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc82 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc83 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc84 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc85 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc86 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc87 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc98 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc99 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc9a infix": {"lspace": 5, "rspace": 5}, "\ud83e\udc9b infix": {"lspace": 5, "rspace": 5}, "\ud83e\udca0 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udca1 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udca2 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udca3 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udca4 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udca5 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udca6 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udca7 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udca8 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udca9 infix": {"lspace": 5, "rspace": 5}, "\ud83e\udcaa infix": {"lspace": 5, "rspace": 5}, "\ud83e\udcab infix": {"lspace": 5, "rspace": 5}}} \ No newline at end of file +{"comment": "This file was automatically generated by operator-dictionary.py. Do not edit.", "dictionary": {"! postfix": {"lspace": 0, "rspace": 0}, "! prefix": {"lspace": 0, "rspace": 0}, "!! postfix": {"lspace": 0, "rspace": 0}, "!= infix": {"lspace": 5, "rspace": 5}, "\" postfix": {"lspace": 0, "rspace": 0}, "% infix": {"lspace": 3, "rspace": 3}, "% postfix": {"lspace": 0, "rspace": 0}, "& postfix": {"lspace": 0, "rspace": 0}, "&& infix": {"lspace": 4, "rspace": 4}, "' postfix": {"lspace": 0, "rspace": 0}, "( prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, ") postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "* infix": {"lspace": 3, "rspace": 3}, "** infix": {"lspace": 3, "rspace": 3}, "*= infix": {"lspace": 5, "rspace": 5}, "+ infix": {"lspace": 4, "rspace": 4}, "+ prefix": {"lspace": 0, "rspace": 0}, "++ postfix": {"lspace": 0, "rspace": 0}, "+= infix": {"lspace": 5, "rspace": 5}, ", infix": {"lspace": 0, "rspace": 3}, "- infix": {"lspace": 4, "rspace": 4}, "- prefix": {"lspace": 0, "rspace": 0}, "-- postfix": {"lspace": 0, "rspace": 0}, "-= infix": {"lspace": 5, "rspace": 5}, "-> infix": {"lspace": 5, "rspace": 5}, ". infix": {"lspace": 3, "rspace": 3}, "/ infix": {"lspace": 4, "rspace": 4}, "// infix": {"lspace": 5, "rspace": 5}, "/= infix": {"lspace": 5, "rspace": 5}, ": infix": {"lspace": 0, "rspace": 3}, ":= infix": {"lspace": 5, "rspace": 5}, "; infix": {"lspace": 0, "rspace": 3}, "< infix": {"lspace": 5, "rspace": 5}, "<= infix": {"lspace": 5, "rspace": 5}, "<> infix": {"lspace": 3, "rspace": 3}, "= infix": {"horizontal": true, "lspace": 5, "rspace": 5}, "== infix": {"lspace": 5, "rspace": 5}, "> infix": {"lspace": 5, "rspace": 5}, ">= infix": {"lspace": 5, "rspace": 5}, "? infix": {"lspace": 3, "rspace": 3}, "@ infix": {"lspace": 3, "rspace": 3}, "[ prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\\ infix": {"lspace": 0, "rspace": 0}, "] postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "^ infix": {"horizontal": true, "lspace": 3, "rspace": 3}, "^ postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "_ infix": {"horizontal": true, "lspace": 0, "rspace": 0}, "_ postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "` postfix": {"lspace": 0, "rspace": 0}, "{ prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "| infix": {"lspace": 5, "rspace": 5}, "| postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "| prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "|| infix": {"lspace": 5, "rspace": 5}, "|| postfix": {"lspace": 0, "rspace": 0}, "|| prefix": {"lspace": 0, "rspace": 0}, "} postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "~ postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u00a0 infix": {}, "\u00a0 prefix": {}, "\u00a0 suffix": {}, "\u00a8 postfix": {"lspace": 0, "rspace": 0}, "\u00ac prefix": {"lspace": 0, "rspace": 0}, "\u00af postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u00b0 postfix": {"lspace": 0, "rspace": 0}, "\u00b1 infix": {"lspace": 4, "rspace": 4}, "\u00b1 prefix": {"lspace": 0, "rspace": 0}, "\u00b2 postfix": {"lspace": 0, "rspace": 0}, "\u00b3 postfix": {"lspace": 0, "rspace": 0}, "\u00b4 postfix": {"lspace": 0, "rspace": 0}, "\u00b7 infix": {"lspace": 3, "rspace": 3}, "\u00b8 postfix": {"lspace": 0, "rspace": 0}, "\u00b9 postfix": {"lspace": 0, "rspace": 0}, "\u00d7 infix": {"lspace": 3, "rspace": 3}, "\u00f7 infix": {"lspace": 4, "rspace": 4}, "\u02c6 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u02c7 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u02c9 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u02ca postfix": {"lspace": 0, "rspace": 0}, "\u02cb postfix": {"lspace": 0, "rspace": 0}, "\u02cd postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u02d8 postfix": {"lspace": 0, "rspace": 0}, "\u02d9 postfix": {"lspace": 0, "rspace": 0}, "\u02da postfix": {"lspace": 0, "rspace": 0}, "\u02dc postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u02dd postfix": {"lspace": 0, "rspace": 0}, "\u02f7 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u0302 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u0311 postfix": {"lspace": 0, "rspace": 0}, "\u2016 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2016 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2018 prefix": {"lspace": 0, "rspace": 0}, "\u2019 postfix": {"lspace": 0, "rspace": 0}, "\u201a postfix": {"lspace": 0, "rspace": 0}, "\u201b postfix": {"lspace": 0, "rspace": 0}, "\u201c prefix": {"lspace": 0, "rspace": 0}, "\u201d postfix": {"lspace": 0, "rspace": 0}, "\u201e postfix": {"lspace": 0, "rspace": 0}, "\u201f postfix": {"lspace": 0, "rspace": 0}, "\u2022 infix": {"lspace": 3, "rspace": 3}, "\u2032 postfix": {"lspace": 0, "rspace": 0}, "\u2033 postfix": {"lspace": 0, "rspace": 0}, "\u2034 postfix": {"lspace": 0, "rspace": 0}, "\u2035 postfix": {"lspace": 0, "rspace": 0}, "\u2036 postfix": {"lspace": 0, "rspace": 0}, "\u2037 postfix": {"lspace": 0, "rspace": 0}, "\u203e postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u2043 infix": {"lspace": 3, "rspace": 3}, "\u2044 infix": {"lspace": 4, "rspace": 4}, "\u2057 postfix": {"lspace": 0, "rspace": 0}, "\u2061 infix": {"lspace": 0, "rspace": 0}, "\u2062 infix": {"lspace": 0, "rspace": 0}, "\u2063 infix": {"lspace": 0, "rspace": 0}, "\u2064 infix": {"lspace": 0, "rspace": 0}, "\u20db postfix": {"lspace": 0, "rspace": 0}, "\u20dc postfix": {"lspace": 0, "rspace": 0}, "\u2145 prefix": {"lspace": 3, "rspace": 0}, "\u2146 prefix": {"lspace": 3, "rspace": 0}, "\u2190 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2191 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2192 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2193 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2194 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2195 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2196 infix": {"lspace": 5, "rspace": 5}, "\u2197 infix": {"lspace": 5, "rspace": 5}, "\u2198 infix": {"horizontal": true, "lspace": 5, "rspace": 5}, "\u2199 infix": {"horizontal": true, "lspace": 5, "rspace": 5}, "\u219a infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u219b infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u219c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u219d infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u219e infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u219f infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21a0 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21a1 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21a2 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21a3 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21a4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21a5 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21a6 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21a7 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21a8 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21a9 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21aa infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ab infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ac infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ad infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ae infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21af infix": {"lspace": 5, "rspace": 5}, "\u21b0 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21b1 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21b2 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21b3 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21b4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21b5 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21b6 infix": {"lspace": 5, "rspace": 5}, "\u21b7 infix": {"lspace": 5, "rspace": 5}, "\u21b8 infix": {"lspace": 5, "rspace": 5}, "\u21b9 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ba infix": {"lspace": 5, "rspace": 5}, "\u21bb infix": {"lspace": 5, "rspace": 5}, "\u21bc infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21bd infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21be infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21bf infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21c0 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21c1 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21c2 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21c3 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21c4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21c5 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21c6 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21c7 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21c8 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21c9 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ca infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21cb infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21cc infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21cd infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ce infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21cf infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21d0 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21d1 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21d2 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21d3 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21d4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21d5 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21d6 infix": {"lspace": 5, "rspace": 5}, "\u21d7 infix": {"lspace": 5, "rspace": 5}, "\u21d8 infix": {"lspace": 5, "rspace": 5}, "\u21d9 infix": {"lspace": 5, "rspace": 5}, "\u21da infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21db infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21dc infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21dd infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21de infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21df infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21e0 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e1 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21e2 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e3 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21e4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e5 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e6 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e7 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21e8 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21e9 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21ea infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21eb infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21ec infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21ed infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21ee infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21ef infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21f0 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21f1 infix": {"lspace": 5, "rspace": 5}, "\u21f2 infix": {"lspace": 5, "rspace": 5}, "\u21f3 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21f4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21f5 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u21f6 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21f7 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21f8 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21f9 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21fa infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21fb infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21fc infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21fd infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21fe infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u21ff infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2200 prefix": {"lspace": 0, "rspace": 0}, "\u2201 prefix": {"lspace": 0, "rspace": 0}, "\u2202 prefix": {"lspace": 3, "rspace": 0}, "\u2203 prefix": {"lspace": 0, "rspace": 0}, "\u2204 prefix": {"lspace": 0, "rspace": 0}, "\u2206 infix": {"lspace": 0, "rspace": 0}, "\u2207 prefix": {"lspace": 0, "rspace": 0}, "\u2208 infix": {"lspace": 5, "rspace": 5}, "\u2209 infix": {"lspace": 5, "rspace": 5}, "\u220a infix": {"lspace": 5, "rspace": 5}, "\u220b infix": {"lspace": 5, "rspace": 5}, "\u220c infix": {"lspace": 5, "rspace": 5}, "\u220d infix": {"lspace": 5, "rspace": 5}, "\u220f prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2210 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2211 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2212 infix": {"lspace": 4, "rspace": 4}, "\u2212 prefix": {"lspace": 0, "rspace": 0}, "\u2213 infix": {"lspace": 4, "rspace": 4}, "\u2213 prefix": {"lspace": 0, "rspace": 0}, "\u2214 infix": {"lspace": 4, "rspace": 4}, "\u2215 infix": {"lspace": 4, "rspace": 4}, "\u2216 infix": {"lspace": 4, "rspace": 4}, "\u2217 infix": {"lspace": 3, "rspace": 3}, "\u2218 infix": {"lspace": 3, "rspace": 3}, "\u2219 infix": {"lspace": 3, "rspace": 3}, "\u221a prefix": {"lspace": 3, "rspace": 0}, "\u221b prefix": {"lspace": 3, "rspace": 0}, "\u221c prefix": {"lspace": 3, "rspace": 0}, "\u221d infix": {"lspace": 5, "rspace": 5}, "\u221f prefix": {"lspace": 0, "rspace": 0}, "\u2220 prefix": {"lspace": 0, "rspace": 0}, "\u2221 prefix": {"lspace": 0, "rspace": 0}, "\u2222 prefix": {"lspace": 0, "rspace": 0}, "\u2223 infix": {"lspace": 5, "rspace": 5}, "\u2224 infix": {"lspace": 5, "rspace": 5}, "\u2225 infix": {"lspace": 5, "rspace": 5}, "\u2226 infix": {"lspace": 5, "rspace": 5}, "\u2227 infix": {"lspace": 4, "rspace": 4}, "\u2228 infix": {"lspace": 4, "rspace": 4}, "\u2229 infix": {"lspace": 4, "rspace": 4}, "\u222a infix": {"lspace": 4, "rspace": 4}, "\u222b prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u222c prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u222d prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u222e prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u222f prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2230 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2231 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2232 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2233 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2234 prefix": {"lspace": 0, "rspace": 0}, "\u2235 prefix": {"lspace": 0, "rspace": 0}, "\u2236 infix": {"lspace": 4, "rspace": 4}, "\u2237 infix": {"lspace": 5, "rspace": 5}, "\u2238 infix": {"lspace": 4, "rspace": 4}, "\u2239 infix": {"lspace": 5, "rspace": 5}, "\u223a infix": {"lspace": 5, "rspace": 5}, "\u223b infix": {"lspace": 5, "rspace": 5}, "\u223c infix": {"lspace": 5, "rspace": 5}, "\u223c prefix": {"lspace": 0, "rspace": 0}, "\u223d infix": {"lspace": 5, "rspace": 5}, "\u223e infix": {"lspace": 5, "rspace": 5}, "\u2240 infix": {"lspace": 3, "rspace": 3}, "\u2241 infix": {"lspace": 5, "rspace": 5}, "\u2242 infix": {"lspace": 5, "rspace": 5}, "\u2243 infix": {"lspace": 5, "rspace": 5}, "\u2244 infix": {"lspace": 5, "rspace": 5}, "\u2245 infix": {"lspace": 5, "rspace": 5}, "\u2246 infix": {"lspace": 5, "rspace": 5}, "\u2247 infix": {"lspace": 5, "rspace": 5}, "\u2248 infix": {"lspace": 5, "rspace": 5}, "\u2249 infix": {"lspace": 5, "rspace": 5}, "\u224a infix": {"lspace": 5, "rspace": 5}, "\u224b infix": {"lspace": 5, "rspace": 5}, "\u224c infix": {"lspace": 5, "rspace": 5}, "\u224d infix": {"lspace": 5, "rspace": 5}, "\u224e infix": {"lspace": 5, "rspace": 5}, "\u224f infix": {"lspace": 5, "rspace": 5}, "\u2250 infix": {"lspace": 5, "rspace": 5}, "\u2251 infix": {"lspace": 5, "rspace": 5}, "\u2252 infix": {"lspace": 5, "rspace": 5}, "\u2253 infix": {"lspace": 5, "rspace": 5}, "\u2254 infix": {"lspace": 5, "rspace": 5}, "\u2255 infix": {"lspace": 5, "rspace": 5}, "\u2256 infix": {"lspace": 5, "rspace": 5}, "\u2257 infix": {"lspace": 5, "rspace": 5}, "\u2258 infix": {"lspace": 5, "rspace": 5}, "\u2259 infix": {"lspace": 5, "rspace": 5}, "\u225a infix": {"lspace": 5, "rspace": 5}, "\u225b infix": {"lspace": 5, "rspace": 5}, "\u225c infix": {"lspace": 5, "rspace": 5}, "\u225d infix": {"lspace": 5, "rspace": 5}, "\u225e infix": {"lspace": 5, "rspace": 5}, "\u225f infix": {"lspace": 5, "rspace": 5}, "\u2260 infix": {"lspace": 5, "rspace": 5}, "\u2261 infix": {"lspace": 5, "rspace": 5}, "\u2262 infix": {"lspace": 5, "rspace": 5}, "\u2263 infix": {"lspace": 5, "rspace": 5}, "\u2264 infix": {"lspace": 5, "rspace": 5}, "\u2265 infix": {"lspace": 5, "rspace": 5}, "\u2266 infix": {"lspace": 5, "rspace": 5}, "\u2267 infix": {"lspace": 5, "rspace": 5}, "\u2268 infix": {"lspace": 5, "rspace": 5}, "\u2269 infix": {"lspace": 5, "rspace": 5}, "\u226a infix": {"lspace": 5, "rspace": 5}, "\u226b infix": {"lspace": 5, "rspace": 5}, "\u226c infix": {"lspace": 5, "rspace": 5}, "\u226d infix": {"lspace": 5, "rspace": 5}, "\u226e infix": {"lspace": 5, "rspace": 5}, "\u226f infix": {"lspace": 5, "rspace": 5}, "\u2270 infix": {"lspace": 5, "rspace": 5}, "\u2271 infix": {"lspace": 5, "rspace": 5}, "\u2272 infix": {"lspace": 5, "rspace": 5}, "\u2273 infix": {"lspace": 5, "rspace": 5}, "\u2274 infix": {"lspace": 5, "rspace": 5}, "\u2275 infix": {"lspace": 5, "rspace": 5}, "\u2276 infix": {"lspace": 5, "rspace": 5}, "\u2277 infix": {"lspace": 5, "rspace": 5}, "\u2278 infix": {"lspace": 5, "rspace": 5}, "\u2279 infix": {"lspace": 5, "rspace": 5}, "\u227a infix": {"lspace": 5, "rspace": 5}, "\u227b infix": {"lspace": 5, "rspace": 5}, "\u227c infix": {"lspace": 5, "rspace": 5}, "\u227d infix": {"lspace": 5, "rspace": 5}, "\u227e infix": {"lspace": 5, "rspace": 5}, "\u227f infix": {"lspace": 5, "rspace": 5}, "\u2280 infix": {"lspace": 5, "rspace": 5}, "\u2281 infix": {"lspace": 5, "rspace": 5}, "\u2282 infix": {"lspace": 5, "rspace": 5}, "\u2283 infix": {"lspace": 5, "rspace": 5}, "\u2284 infix": {"lspace": 5, "rspace": 5}, "\u2285 infix": {"lspace": 5, "rspace": 5}, "\u2286 infix": {"lspace": 5, "rspace": 5}, "\u2287 infix": {"lspace": 5, "rspace": 5}, "\u2288 infix": {"lspace": 5, "rspace": 5}, "\u2289 infix": {"lspace": 5, "rspace": 5}, "\u228a infix": {"lspace": 5, "rspace": 5}, "\u228b infix": {"lspace": 5, "rspace": 5}, "\u228c infix": {"lspace": 4, "rspace": 4}, "\u228d infix": {"lspace": 4, "rspace": 4}, "\u228e infix": {"lspace": 4, "rspace": 4}, "\u228f infix": {"lspace": 5, "rspace": 5}, "\u2290 infix": {"lspace": 5, "rspace": 5}, "\u2291 infix": {"lspace": 5, "rspace": 5}, "\u2292 infix": {"lspace": 5, "rspace": 5}, "\u2293 infix": {"lspace": 4, "rspace": 4}, "\u2294 infix": {"lspace": 4, "rspace": 4}, "\u2295 infix": {"lspace": 4, "rspace": 4}, "\u2296 infix": {"lspace": 4, "rspace": 4}, "\u2297 infix": {"lspace": 3, "rspace": 3}, "\u2298 infix": {"lspace": 4, "rspace": 4}, "\u2299 infix": {"lspace": 3, "rspace": 3}, "\u229a infix": {"lspace": 3, "rspace": 3}, "\u229b infix": {"lspace": 3, "rspace": 3}, "\u229c infix": {"lspace": 5, "rspace": 5}, "\u229d infix": {"lspace": 4, "rspace": 4}, "\u229e infix": {"lspace": 4, "rspace": 4}, "\u229f infix": {"lspace": 4, "rspace": 4}, "\u22a0 infix": {"lspace": 3, "rspace": 3}, "\u22a1 infix": {"lspace": 3, "rspace": 3}, "\u22a2 infix": {"lspace": 5, "rspace": 5}, "\u22a3 infix": {"lspace": 5, "rspace": 5}, "\u22a6 infix": {"lspace": 5, "rspace": 5}, "\u22a7 infix": {"lspace": 5, "rspace": 5}, "\u22a8 infix": {"lspace": 5, "rspace": 5}, "\u22a9 infix": {"lspace": 5, "rspace": 5}, "\u22aa infix": {"lspace": 5, "rspace": 5}, "\u22ab infix": {"lspace": 5, "rspace": 5}, "\u22ac infix": {"lspace": 5, "rspace": 5}, "\u22ad infix": {"lspace": 5, "rspace": 5}, "\u22ae infix": {"lspace": 5, "rspace": 5}, "\u22af infix": {"lspace": 5, "rspace": 5}, "\u22b0 infix": {"lspace": 5, "rspace": 5}, "\u22b1 infix": {"lspace": 5, "rspace": 5}, "\u22b2 infix": {"lspace": 5, "rspace": 5}, "\u22b3 infix": {"lspace": 5, "rspace": 5}, "\u22b4 infix": {"lspace": 5, "rspace": 5}, "\u22b5 infix": {"lspace": 5, "rspace": 5}, "\u22b6 infix": {"lspace": 5, "rspace": 5}, "\u22b7 infix": {"lspace": 5, "rspace": 5}, "\u22b8 infix": {"lspace": 5, "rspace": 5}, "\u22ba infix": {"lspace": 3, "rspace": 3}, "\u22bb infix": {"lspace": 4, "rspace": 4}, "\u22bc infix": {"lspace": 4, "rspace": 4}, "\u22bd infix": {"lspace": 4, "rspace": 4}, "\u22be prefix": {"lspace": 0, "rspace": 0}, "\u22bf prefix": {"lspace": 0, "rspace": 0}, "\u22c0 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u22c1 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u22c2 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u22c3 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u22c4 infix": {"lspace": 3, "rspace": 3}, "\u22c5 infix": {"lspace": 3, "rspace": 3}, "\u22c6 infix": {"lspace": 3, "rspace": 3}, "\u22c7 infix": {"lspace": 3, "rspace": 3}, "\u22c8 infix": {"lspace": 5, "rspace": 5}, "\u22c9 infix": {"lspace": 3, "rspace": 3}, "\u22ca infix": {"lspace": 3, "rspace": 3}, "\u22cb infix": {"lspace": 3, "rspace": 3}, "\u22cc infix": {"lspace": 3, "rspace": 3}, "\u22cd infix": {"lspace": 5, "rspace": 5}, "\u22ce infix": {"lspace": 4, "rspace": 4}, "\u22cf infix": {"lspace": 4, "rspace": 4}, "\u22d0 infix": {"lspace": 5, "rspace": 5}, "\u22d1 infix": {"lspace": 5, "rspace": 5}, "\u22d2 infix": {"lspace": 4, "rspace": 4}, "\u22d3 infix": {"lspace": 4, "rspace": 4}, "\u22d4 infix": {"lspace": 5, "rspace": 5}, "\u22d5 infix": {"lspace": 5, "rspace": 5}, "\u22d6 infix": {"lspace": 5, "rspace": 5}, "\u22d7 infix": {"lspace": 5, "rspace": 5}, "\u22d8 infix": {"lspace": 5, "rspace": 5}, "\u22d9 infix": {"lspace": 5, "rspace": 5}, "\u22da infix": {"lspace": 5, "rspace": 5}, "\u22db infix": {"lspace": 5, "rspace": 5}, "\u22dc infix": {"lspace": 5, "rspace": 5}, "\u22dd infix": {"lspace": 5, "rspace": 5}, "\u22de infix": {"lspace": 5, "rspace": 5}, "\u22df infix": {"lspace": 5, "rspace": 5}, "\u22e0 infix": {"lspace": 5, "rspace": 5}, "\u22e1 infix": {"lspace": 5, "rspace": 5}, "\u22e2 infix": {"lspace": 5, "rspace": 5}, "\u22e3 infix": {"lspace": 5, "rspace": 5}, "\u22e4 infix": {"lspace": 5, "rspace": 5}, "\u22e5 infix": {"lspace": 5, "rspace": 5}, "\u22e6 infix": {"lspace": 5, "rspace": 5}, "\u22e7 infix": {"lspace": 5, "rspace": 5}, "\u22e8 infix": {"lspace": 5, "rspace": 5}, "\u22e9 infix": {"lspace": 5, "rspace": 5}, "\u22ea infix": {"lspace": 5, "rspace": 5}, "\u22eb infix": {"lspace": 5, "rspace": 5}, "\u22ec infix": {"lspace": 5, "rspace": 5}, "\u22ed infix": {"lspace": 5, "rspace": 5}, "\u22f2 infix": {"lspace": 5, "rspace": 5}, "\u22f3 infix": {"lspace": 5, "rspace": 5}, "\u22f4 infix": {"lspace": 5, "rspace": 5}, "\u22f5 infix": {"lspace": 5, "rspace": 5}, "\u22f6 infix": {"lspace": 5, "rspace": 5}, "\u22f7 infix": {"lspace": 5, "rspace": 5}, "\u22f8 infix": {"lspace": 5, "rspace": 5}, "\u22f9 infix": {"lspace": 5, "rspace": 5}, "\u22fa infix": {"lspace": 5, "rspace": 5}, "\u22fb infix": {"lspace": 5, "rspace": 5}, "\u22fc infix": {"lspace": 5, "rspace": 5}, "\u22fd infix": {"lspace": 5, "rspace": 5}, "\u22fe infix": {"lspace": 5, "rspace": 5}, "\u22ff infix": {"lspace": 5, "rspace": 5}, "\u2301 infix": {"lspace": 5, "rspace": 5}, "\u2305 infix": {"lspace": 3, "rspace": 3}, "\u2306 infix": {"lspace": 3, "rspace": 3}, "\u2308 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2309 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u230a prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u230b postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2310 prefix": {"lspace": 0, "rspace": 0}, "\u2319 prefix": {"lspace": 0, "rspace": 0}, "\u2322 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u2323 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u2329 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u232a postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u237c infix": {"lspace": 5, "rspace": 5}, "\u238b infix": {"lspace": 5, "rspace": 5}, "\u23b4 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23b5 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23cd postfix": {"lspace": 0, "rspace": 0}, "\u23dc postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23dd postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23de postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23df postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23e0 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u23e1 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\u2772 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2773 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2794 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2795 infix": {"lspace": 4, "rspace": 4}, "\u2795 prefix": {"lspace": 0, "rspace": 0}, "\u2796 infix": {"lspace": 4, "rspace": 4}, "\u2796 prefix": {"lspace": 0, "rspace": 0}, "\u2797 infix": {"lspace": 4, "rspace": 4}, "\u2798 infix": {"lspace": 5, "rspace": 5}, "\u2799 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u279a infix": {"lspace": 5, "rspace": 5}, "\u279b infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u279c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u279d infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u279e infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u279f infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27a0 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27a1 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27a5 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27a6 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27a7 infix": {"lspace": 5, "rspace": 5}, "\u27a8 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27a9 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27aa infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27ab infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27ac infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27ad infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27ae infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27af infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27b1 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27b2 infix": {"lspace": 5, "rspace": 5}, "\u27b3 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27b4 infix": {"lspace": 5, "rspace": 5}, "\u27b5 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27b6 infix": {"lspace": 5, "rspace": 5}, "\u27b7 infix": {"lspace": 5, "rspace": 5}, "\u27b8 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27b9 infix": {"lspace": 5, "rspace": 5}, "\u27ba infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27bb infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27bc infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27bd infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27be infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27c0 prefix": {"lspace": 0, "rspace": 0}, "\u27c2 infix": {"lspace": 5, "rspace": 5}, "\u27cb infix": {"lspace": 3, "rspace": 3}, "\u27cd infix": {"lspace": 3, "rspace": 3}, "\u27e6 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27e7 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27e8 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27e9 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27ea prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27eb postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27ec prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27ed postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27ee prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27ef postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u27f0 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u27f1 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u27f2 infix": {"lspace": 5, "rspace": 5}, "\u27f3 infix": {"lspace": 5, "rspace": 5}, "\u27f4 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27f5 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27f6 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27f7 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27f8 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27f9 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27fa infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27fb infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27fc infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27fd infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27fe infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u27ff infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2900 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2901 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2902 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2903 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2904 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2905 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2906 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2907 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2908 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2909 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u290a infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u290b infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u290c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u290d infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u290e infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u290f infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2910 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2911 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2912 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2913 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2914 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2915 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2916 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2917 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2918 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2919 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u291a infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u291b infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u291c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u291d infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u291e infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u291f infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2920 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2921 infix": {"lspace": 5, "rspace": 5}, "\u2922 infix": {"lspace": 5, "rspace": 5}, "\u2923 infix": {"lspace": 5, "rspace": 5}, "\u2924 infix": {"lspace": 5, "rspace": 5}, "\u2925 infix": {"lspace": 5, "rspace": 5}, "\u2926 infix": {"lspace": 5, "rspace": 5}, "\u2927 infix": {"lspace": 5, "rspace": 5}, "\u2928 infix": {"lspace": 5, "rspace": 5}, "\u2929 infix": {"lspace": 5, "rspace": 5}, "\u292a infix": {"lspace": 5, "rspace": 5}, "\u292b infix": {"lspace": 5, "rspace": 5}, "\u292c infix": {"lspace": 5, "rspace": 5}, "\u292d infix": {"lspace": 5, "rspace": 5}, "\u292e infix": {"lspace": 5, "rspace": 5}, "\u292f infix": {"lspace": 5, "rspace": 5}, "\u2930 infix": {"lspace": 5, "rspace": 5}, "\u2931 infix": {"lspace": 5, "rspace": 5}, "\u2932 infix": {"lspace": 5, "rspace": 5}, "\u2933 infix": {"lspace": 5, "rspace": 5}, "\u2934 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2935 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2936 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2937 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2938 infix": {"lspace": 5, "rspace": 5}, "\u2939 infix": {"lspace": 5, "rspace": 5}, "\u293a infix": {"lspace": 5, "rspace": 5}, "\u293b infix": {"lspace": 5, "rspace": 5}, "\u293c infix": {"lspace": 5, "rspace": 5}, "\u293d infix": {"lspace": 5, "rspace": 5}, "\u293e infix": {"lspace": 5, "rspace": 5}, "\u293f infix": {"lspace": 5, "rspace": 5}, "\u2940 infix": {"lspace": 5, "rspace": 5}, "\u2941 infix": {"lspace": 5, "rspace": 5}, "\u2942 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2943 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2944 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2945 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2946 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2947 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2948 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2949 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u294a infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u294b infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u294c infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u294d infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u294e infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u294f infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2950 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2951 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2952 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2953 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2954 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2955 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2956 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2957 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2958 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2959 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u295a infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u295b infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u295c infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u295d infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u295e infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u295f infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2960 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2961 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2962 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2963 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2964 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2965 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2966 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2967 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2968 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2969 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u296a infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u296b infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u296c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u296d infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u296e infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u296f infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2970 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2971 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2972 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2973 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2974 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2975 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2976 infix": {"lspace": 5, "rspace": 5}, "\u2977 infix": {"lspace": 5, "rspace": 5}, "\u2978 infix": {"lspace": 5, "rspace": 5}, "\u2979 infix": {"lspace": 5, "rspace": 5}, "\u297a infix": {"lspace": 5, "rspace": 5}, "\u297b infix": {"lspace": 5, "rspace": 5}, "\u297c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u297d infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u297e infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u297f infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2980 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2980 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2981 infix": {"lspace": 5, "rspace": 5}, "\u2982 infix": {"lspace": 5, "rspace": 5}, "\u2983 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2984 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2985 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2986 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2987 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2988 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2989 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298a postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298b prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298c postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298d prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298e postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u298f prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2990 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2991 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2992 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2993 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2994 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2995 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2996 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2997 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2998 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2999 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2999 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u299b prefix": {"lspace": 0, "rspace": 0}, "\u299c prefix": {"lspace": 0, "rspace": 0}, "\u299d prefix": {"lspace": 0, "rspace": 0}, "\u299e prefix": {"lspace": 0, "rspace": 0}, "\u299f prefix": {"lspace": 0, "rspace": 0}, "\u29a0 prefix": {"lspace": 0, "rspace": 0}, "\u29a1 prefix": {"lspace": 0, "rspace": 0}, "\u29a2 prefix": {"lspace": 0, "rspace": 0}, "\u29a3 prefix": {"lspace": 0, "rspace": 0}, "\u29a4 prefix": {"lspace": 0, "rspace": 0}, "\u29a5 prefix": {"lspace": 0, "rspace": 0}, "\u29a6 prefix": {"lspace": 0, "rspace": 0}, "\u29a7 prefix": {"lspace": 0, "rspace": 0}, "\u29a8 prefix": {"lspace": 0, "rspace": 0}, "\u29a9 prefix": {"lspace": 0, "rspace": 0}, "\u29aa prefix": {"lspace": 0, "rspace": 0}, "\u29ab prefix": {"lspace": 0, "rspace": 0}, "\u29ac prefix": {"lspace": 0, "rspace": 0}, "\u29ad prefix": {"lspace": 0, "rspace": 0}, "\u29ae prefix": {"lspace": 0, "rspace": 0}, "\u29af prefix": {"lspace": 0, "rspace": 0}, "\u29b6 infix": {"lspace": 5, "rspace": 5}, "\u29b7 infix": {"lspace": 5, "rspace": 5}, "\u29b8 infix": {"lspace": 4, "rspace": 4}, "\u29b9 infix": {"lspace": 5, "rspace": 5}, "\u29bc infix": {"lspace": 4, "rspace": 4}, "\u29c0 infix": {"lspace": 5, "rspace": 5}, "\u29c1 infix": {"lspace": 5, "rspace": 5}, "\u29c4 infix": {"lspace": 4, "rspace": 4}, "\u29c5 infix": {"lspace": 4, "rspace": 4}, "\u29c6 infix": {"lspace": 3, "rspace": 3}, "\u29c7 infix": {"lspace": 3, "rspace": 3}, "\u29c8 infix": {"lspace": 3, "rspace": 3}, "\u29ce infix": {"lspace": 5, "rspace": 5}, "\u29cf infix": {"lspace": 5, "rspace": 5}, "\u29d0 infix": {"lspace": 5, "rspace": 5}, "\u29d1 infix": {"lspace": 5, "rspace": 5}, "\u29d2 infix": {"lspace": 5, "rspace": 5}, "\u29d3 infix": {"lspace": 5, "rspace": 5}, "\u29d4 infix": {"lspace": 3, "rspace": 3}, "\u29d5 infix": {"lspace": 3, "rspace": 3}, "\u29d6 infix": {"lspace": 3, "rspace": 3}, "\u29d7 infix": {"lspace": 3, "rspace": 3}, "\u29d8 prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u29d9 postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u29da prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u29db postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u29df infix": {"lspace": 5, "rspace": 5}, "\u29e1 infix": {"lspace": 5, "rspace": 5}, "\u29e2 infix": {"lspace": 3, "rspace": 3}, "\u29e3 infix": {"lspace": 5, "rspace": 5}, "\u29e4 infix": {"lspace": 5, "rspace": 5}, "\u29e5 infix": {"lspace": 5, "rspace": 5}, "\u29e6 infix": {"lspace": 5, "rspace": 5}, "\u29f4 infix": {"lspace": 5, "rspace": 5}, "\u29f5 infix": {"lspace": 4, "rspace": 4}, "\u29f6 infix": {"lspace": 4, "rspace": 4}, "\u29f7 infix": {"lspace": 4, "rspace": 4}, "\u29f8 infix": {"lspace": 4, "rspace": 4}, "\u29f9 infix": {"lspace": 4, "rspace": 4}, "\u29fa infix": {"lspace": 4, "rspace": 4}, "\u29fb infix": {"lspace": 4, "rspace": 4}, "\u29fc prefix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u29fd postfix": {"lspace": 0, "rspace": 0, "stretchy": true, "symmetric": true}, "\u2a00 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a01 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a02 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a03 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a04 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a05 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a06 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a07 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a08 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a09 prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a0a prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a0b prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a0c prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a0d prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a0e prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a0f prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a10 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a11 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a12 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a13 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a14 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a15 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a16 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a17 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a18 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a19 prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a1a prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a1b prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a1c prefix": {"largeop": true, "lspace": 3, "rspace": 3, "symmetric": true}, "\u2a1d infix": {"lspace": 3, "rspace": 3}, "\u2a1d prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a1e infix": {"lspace": 3, "rspace": 3}, "\u2a1e prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2a1f infix": {"lspace": 4, "rspace": 4}, "\u2a20 infix": {"lspace": 4, "rspace": 4}, "\u2a21 infix": {"lspace": 4, "rspace": 4}, "\u2a22 infix": {"lspace": 4, "rspace": 4}, "\u2a23 infix": {"lspace": 4, "rspace": 4}, "\u2a24 infix": {"lspace": 4, "rspace": 4}, "\u2a25 infix": {"lspace": 4, "rspace": 4}, "\u2a26 infix": {"lspace": 4, "rspace": 4}, "\u2a27 infix": {"lspace": 4, "rspace": 4}, "\u2a28 infix": {"lspace": 4, "rspace": 4}, "\u2a29 infix": {"lspace": 4, "rspace": 4}, "\u2a2a infix": {"lspace": 4, "rspace": 4}, "\u2a2b infix": {"lspace": 4, "rspace": 4}, "\u2a2c infix": {"lspace": 4, "rspace": 4}, "\u2a2d infix": {"lspace": 4, "rspace": 4}, "\u2a2e infix": {"lspace": 4, "rspace": 4}, "\u2a2f infix": {"lspace": 3, "rspace": 3}, "\u2a30 infix": {"lspace": 3, "rspace": 3}, "\u2a31 infix": {"lspace": 3, "rspace": 3}, "\u2a32 infix": {"lspace": 3, "rspace": 3}, "\u2a33 infix": {"lspace": 3, "rspace": 3}, "\u2a34 infix": {"lspace": 3, "rspace": 3}, "\u2a35 infix": {"lspace": 3, "rspace": 3}, "\u2a36 infix": {"lspace": 3, "rspace": 3}, "\u2a37 infix": {"lspace": 3, "rspace": 3}, "\u2a38 infix": {"lspace": 4, "rspace": 4}, "\u2a39 infix": {"lspace": 4, "rspace": 4}, "\u2a3a infix": {"lspace": 4, "rspace": 4}, "\u2a3b infix": {"lspace": 3, "rspace": 3}, "\u2a3c infix": {"lspace": 3, "rspace": 3}, "\u2a3d infix": {"lspace": 3, "rspace": 3}, "\u2a3e infix": {"lspace": 4, "rspace": 4}, "\u2a3f infix": {"lspace": 3, "rspace": 3}, "\u2a40 infix": {"lspace": 4, "rspace": 4}, "\u2a41 infix": {"lspace": 4, "rspace": 4}, "\u2a42 infix": {"lspace": 4, "rspace": 4}, "\u2a43 infix": {"lspace": 4, "rspace": 4}, "\u2a44 infix": {"lspace": 4, "rspace": 4}, "\u2a45 infix": {"lspace": 4, "rspace": 4}, "\u2a46 infix": {"lspace": 4, "rspace": 4}, "\u2a47 infix": {"lspace": 4, "rspace": 4}, "\u2a48 infix": {"lspace": 4, "rspace": 4}, "\u2a49 infix": {"lspace": 4, "rspace": 4}, "\u2a4a infix": {"lspace": 4, "rspace": 4}, "\u2a4b infix": {"lspace": 4, "rspace": 4}, "\u2a4c infix": {"lspace": 4, "rspace": 4}, "\u2a4d infix": {"lspace": 4, "rspace": 4}, "\u2a4e infix": {"lspace": 4, "rspace": 4}, "\u2a4f infix": {"lspace": 4, "rspace": 4}, "\u2a50 infix": {"lspace": 3, "rspace": 3}, "\u2a51 infix": {"lspace": 4, "rspace": 4}, "\u2a52 infix": {"lspace": 4, "rspace": 4}, "\u2a53 infix": {"lspace": 4, "rspace": 4}, "\u2a54 infix": {"lspace": 4, "rspace": 4}, "\u2a55 infix": {"lspace": 4, "rspace": 4}, "\u2a56 infix": {"lspace": 4, "rspace": 4}, "\u2a57 infix": {"lspace": 4, "rspace": 4}, "\u2a58 infix": {"lspace": 4, "rspace": 4}, "\u2a59 infix": {"lspace": 4, "rspace": 4}, "\u2a5a infix": {"lspace": 4, "rspace": 4}, "\u2a5b infix": {"lspace": 4, "rspace": 4}, "\u2a5c infix": {"lspace": 4, "rspace": 4}, "\u2a5d infix": {"lspace": 4, "rspace": 4}, "\u2a5e infix": {"lspace": 4, "rspace": 4}, "\u2a5f infix": {"lspace": 4, "rspace": 4}, "\u2a60 infix": {"lspace": 4, "rspace": 4}, "\u2a61 infix": {"lspace": 4, "rspace": 4}, "\u2a62 infix": {"lspace": 4, "rspace": 4}, "\u2a63 infix": {"lspace": 4, "rspace": 4}, "\u2a64 infix": {"lspace": 3, "rspace": 3}, "\u2a65 infix": {"lspace": 3, "rspace": 3}, "\u2a66 infix": {"lspace": 5, "rspace": 5}, "\u2a67 infix": {"lspace": 5, "rspace": 5}, "\u2a68 infix": {"lspace": 5, "rspace": 5}, "\u2a69 infix": {"lspace": 5, "rspace": 5}, "\u2a6a infix": {"lspace": 5, "rspace": 5}, "\u2a6b infix": {"lspace": 5, "rspace": 5}, "\u2a6c infix": {"lspace": 5, "rspace": 5}, "\u2a6d infix": {"lspace": 5, "rspace": 5}, "\u2a6e infix": {"lspace": 5, "rspace": 5}, "\u2a6f infix": {"lspace": 5, "rspace": 5}, "\u2a70 infix": {"lspace": 5, "rspace": 5}, "\u2a71 infix": {"lspace": 5, "rspace": 5}, "\u2a72 infix": {"lspace": 5, "rspace": 5}, "\u2a73 infix": {"lspace": 5, "rspace": 5}, "\u2a74 infix": {"lspace": 5, "rspace": 5}, "\u2a75 infix": {"lspace": 5, "rspace": 5}, "\u2a76 infix": {"lspace": 5, "rspace": 5}, "\u2a77 infix": {"lspace": 5, "rspace": 5}, "\u2a78 infix": {"lspace": 5, "rspace": 5}, "\u2a79 infix": {"lspace": 5, "rspace": 5}, "\u2a7a infix": {"lspace": 5, "rspace": 5}, "\u2a7b infix": {"lspace": 5, "rspace": 5}, "\u2a7c infix": {"lspace": 5, "rspace": 5}, "\u2a7d infix": {"lspace": 5, "rspace": 5}, "\u2a7e infix": {"lspace": 5, "rspace": 5}, "\u2a7f infix": {"lspace": 5, "rspace": 5}, "\u2a80 infix": {"lspace": 5, "rspace": 5}, "\u2a81 infix": {"lspace": 5, "rspace": 5}, "\u2a82 infix": {"lspace": 5, "rspace": 5}, "\u2a83 infix": {"lspace": 5, "rspace": 5}, "\u2a84 infix": {"lspace": 5, "rspace": 5}, "\u2a85 infix": {"lspace": 5, "rspace": 5}, "\u2a86 infix": {"lspace": 5, "rspace": 5}, "\u2a87 infix": {"lspace": 5, "rspace": 5}, "\u2a88 infix": {"lspace": 5, "rspace": 5}, "\u2a89 infix": {"lspace": 5, "rspace": 5}, "\u2a8a infix": {"lspace": 5, "rspace": 5}, "\u2a8b infix": {"lspace": 5, "rspace": 5}, "\u2a8c infix": {"lspace": 5, "rspace": 5}, "\u2a8d infix": {"lspace": 5, "rspace": 5}, "\u2a8e infix": {"lspace": 5, "rspace": 5}, "\u2a8f infix": {"lspace": 5, "rspace": 5}, "\u2a90 infix": {"lspace": 5, "rspace": 5}, "\u2a91 infix": {"lspace": 5, "rspace": 5}, "\u2a92 infix": {"lspace": 5, "rspace": 5}, "\u2a93 infix": {"lspace": 5, "rspace": 5}, "\u2a94 infix": {"lspace": 5, "rspace": 5}, "\u2a95 infix": {"lspace": 5, "rspace": 5}, "\u2a96 infix": {"lspace": 5, "rspace": 5}, "\u2a97 infix": {"lspace": 5, "rspace": 5}, "\u2a98 infix": {"lspace": 5, "rspace": 5}, "\u2a99 infix": {"lspace": 5, "rspace": 5}, "\u2a9a infix": {"lspace": 5, "rspace": 5}, "\u2a9b infix": {"lspace": 5, "rspace": 5}, "\u2a9c infix": {"lspace": 5, "rspace": 5}, "\u2a9d infix": {"lspace": 5, "rspace": 5}, "\u2a9e infix": {"lspace": 5, "rspace": 5}, "\u2a9f infix": {"lspace": 5, "rspace": 5}, "\u2aa0 infix": {"lspace": 5, "rspace": 5}, "\u2aa1 infix": {"lspace": 5, "rspace": 5}, "\u2aa2 infix": {"lspace": 5, "rspace": 5}, "\u2aa3 infix": {"lspace": 5, "rspace": 5}, "\u2aa4 infix": {"lspace": 5, "rspace": 5}, "\u2aa5 infix": {"lspace": 5, "rspace": 5}, "\u2aa6 infix": {"lspace": 5, "rspace": 5}, "\u2aa7 infix": {"lspace": 5, "rspace": 5}, "\u2aa8 infix": {"lspace": 5, "rspace": 5}, "\u2aa9 infix": {"lspace": 5, "rspace": 5}, "\u2aaa infix": {"lspace": 5, "rspace": 5}, "\u2aab infix": {"lspace": 5, "rspace": 5}, "\u2aac infix": {"lspace": 5, "rspace": 5}, "\u2aad infix": {"lspace": 5, "rspace": 5}, "\u2aae infix": {"lspace": 5, "rspace": 5}, "\u2aaf infix": {"lspace": 5, "rspace": 5}, "\u2ab0 infix": {"lspace": 5, "rspace": 5}, "\u2ab1 infix": {"lspace": 5, "rspace": 5}, "\u2ab2 infix": {"lspace": 5, "rspace": 5}, "\u2ab3 infix": {"lspace": 5, "rspace": 5}, "\u2ab4 infix": {"lspace": 5, "rspace": 5}, "\u2ab5 infix": {"lspace": 5, "rspace": 5}, "\u2ab6 infix": {"lspace": 5, "rspace": 5}, "\u2ab7 infix": {"lspace": 5, "rspace": 5}, "\u2ab8 infix": {"lspace": 5, "rspace": 5}, "\u2ab9 infix": {"lspace": 5, "rspace": 5}, "\u2aba infix": {"lspace": 5, "rspace": 5}, "\u2abb infix": {"lspace": 5, "rspace": 5}, "\u2abc infix": {"lspace": 5, "rspace": 5}, "\u2abd infix": {"lspace": 5, "rspace": 5}, "\u2abe infix": {"lspace": 5, "rspace": 5}, "\u2abf infix": {"lspace": 5, "rspace": 5}, "\u2ac0 infix": {"lspace": 5, "rspace": 5}, "\u2ac1 infix": {"lspace": 5, "rspace": 5}, "\u2ac2 infix": {"lspace": 5, "rspace": 5}, "\u2ac3 infix": {"lspace": 5, "rspace": 5}, "\u2ac4 infix": {"lspace": 5, "rspace": 5}, "\u2ac5 infix": {"lspace": 5, "rspace": 5}, "\u2ac6 infix": {"lspace": 5, "rspace": 5}, "\u2ac7 infix": {"lspace": 5, "rspace": 5}, "\u2ac8 infix": {"lspace": 5, "rspace": 5}, "\u2ac9 infix": {"lspace": 5, "rspace": 5}, "\u2aca infix": {"lspace": 5, "rspace": 5}, "\u2acb infix": {"lspace": 5, "rspace": 5}, "\u2acc infix": {"lspace": 5, "rspace": 5}, "\u2acd infix": {"lspace": 5, "rspace": 5}, "\u2ace infix": {"lspace": 5, "rspace": 5}, "\u2acf infix": {"lspace": 5, "rspace": 5}, "\u2ad0 infix": {"lspace": 5, "rspace": 5}, "\u2ad1 infix": {"lspace": 5, "rspace": 5}, "\u2ad2 infix": {"lspace": 5, "rspace": 5}, "\u2ad3 infix": {"lspace": 5, "rspace": 5}, "\u2ad4 infix": {"lspace": 5, "rspace": 5}, "\u2ad5 infix": {"lspace": 5, "rspace": 5}, "\u2ad6 infix": {"lspace": 5, "rspace": 5}, "\u2ad7 infix": {"lspace": 5, "rspace": 5}, "\u2ad8 infix": {"lspace": 5, "rspace": 5}, "\u2ad9 infix": {"lspace": 5, "rspace": 5}, "\u2ada infix": {"lspace": 5, "rspace": 5}, "\u2adb infix": {"lspace": 4, "rspace": 4}, "\u2adc infix": {"lspace": 3, "rspace": 3}, "\u2add infix": {"lspace": 3, "rspace": 3}, "\u2ade infix": {"lspace": 5, "rspace": 5}, "\u2adf infix": {"lspace": 5, "rspace": 5}, "\u2ae0 infix": {"lspace": 5, "rspace": 5}, "\u2ae1 infix": {"lspace": 5, "rspace": 5}, "\u2ae2 infix": {"lspace": 5, "rspace": 5}, "\u2ae3 infix": {"lspace": 5, "rspace": 5}, "\u2ae4 infix": {"lspace": 5, "rspace": 5}, "\u2ae5 infix": {"lspace": 5, "rspace": 5}, "\u2ae6 infix": {"lspace": 5, "rspace": 5}, "\u2ae7 infix": {"lspace": 5, "rspace": 5}, "\u2ae8 infix": {"lspace": 5, "rspace": 5}, "\u2ae9 infix": {"lspace": 5, "rspace": 5}, "\u2aea infix": {"lspace": 5, "rspace": 5}, "\u2aeb infix": {"lspace": 5, "rspace": 5}, "\u2aec prefix": {"lspace": 0, "rspace": 0}, "\u2aed prefix": {"lspace": 0, "rspace": 0}, "\u2aee infix": {"lspace": 5, "rspace": 5}, "\u2af2 infix": {"lspace": 5, "rspace": 5}, "\u2af3 infix": {"lspace": 5, "rspace": 5}, "\u2af4 infix": {"lspace": 5, "rspace": 5}, "\u2af5 infix": {"lspace": 5, "rspace": 5}, "\u2af6 infix": {"lspace": 4, "rspace": 4}, "\u2af7 infix": {"lspace": 5, "rspace": 5}, "\u2af8 infix": {"lspace": 5, "rspace": 5}, "\u2af9 infix": {"lspace": 5, "rspace": 5}, "\u2afa infix": {"lspace": 5, "rspace": 5}, "\u2afb infix": {"lspace": 4, "rspace": 4}, "\u2afc prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2afd infix": {"lspace": 4, "rspace": 4}, "\u2afe infix": {"lspace": 3, "rspace": 3}, "\u2aff prefix": {"largeop": true, "lspace": 3, "movablelimits": true, "rspace": 3, "symmetric": true}, "\u2b00 infix": {"lspace": 5, "rspace": 5}, "\u2b01 infix": {"lspace": 5, "rspace": 5}, "\u2b02 infix": {"lspace": 5, "rspace": 5}, "\u2b03 infix": {"lspace": 5, "rspace": 5}, "\u2b04 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b05 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b06 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b07 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b08 infix": {"lspace": 5, "rspace": 5}, "\u2b09 infix": {"lspace": 5, "rspace": 5}, "\u2b0a infix": {"lspace": 5, "rspace": 5}, "\u2b0b infix": {"lspace": 5, "rspace": 5}, "\u2b0c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b0d infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b0e infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b0f infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b10 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b11 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b30 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b31 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b32 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b33 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b34 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b35 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b36 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b37 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b38 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b39 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b3a infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b3b infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b3c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b3d infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b3e infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b3f infix": {"lspace": 5, "rspace": 5}, "\u2b40 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b41 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b42 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b43 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b44 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b45 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b46 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b47 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b48 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b49 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b4a infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b4b infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b4c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b4d infix": {"lspace": 5, "rspace": 5}, "\u2b4e infix": {"lspace": 5, "rspace": 5}, "\u2b4f infix": {"lspace": 5, "rspace": 5}, "\u2b5a infix": {"lspace": 5, "rspace": 5}, "\u2b5b infix": {"lspace": 5, "rspace": 5}, "\u2b5c infix": {"lspace": 5, "rspace": 5}, "\u2b5d infix": {"lspace": 5, "rspace": 5}, "\u2b5e infix": {"lspace": 5, "rspace": 5}, "\u2b5f infix": {"lspace": 5, "rspace": 5}, "\u2b60 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b61 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b62 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b63 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b64 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b65 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b66 infix": {"lspace": 5, "rspace": 5}, "\u2b67 infix": {"lspace": 5, "rspace": 5}, "\u2b68 infix": {"lspace": 5, "rspace": 5}, "\u2b69 infix": {"lspace": 5, "rspace": 5}, "\u2b6a infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b6b infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b6c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b6d infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b6e infix": {"lspace": 5, "rspace": 5}, "\u2b6f infix": {"lspace": 5, "rspace": 5}, "\u2b70 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b71 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b72 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b73 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b76 infix": {"lspace": 5, "rspace": 5}, "\u2b77 infix": {"lspace": 5, "rspace": 5}, "\u2b78 infix": {"lspace": 5, "rspace": 5}, "\u2b79 infix": {"lspace": 5, "rspace": 5}, "\u2b7a infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b7b infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b7c infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b7d infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b80 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b81 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b82 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b83 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b84 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b85 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b86 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2b87 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2b88 infix": {"lspace": 5, "rspace": 5}, "\u2b89 infix": {"lspace": 5, "rspace": 5}, "\u2b8a infix": {"lspace": 5, "rspace": 5}, "\u2b8b infix": {"lspace": 5, "rspace": 5}, "\u2b8c infix": {"lspace": 5, "rspace": 5}, "\u2b8d infix": {"lspace": 5, "rspace": 5}, "\u2b8e infix": {"lspace": 5, "rspace": 5}, "\u2b8f infix": {"lspace": 5, "rspace": 5}, "\u2b94 infix": {"lspace": 5, "rspace": 5}, "\u2b95 infix": {"horizontal": true, "lspace": 5, "rspace": 5, "stretchy": true}, "\u2ba0 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2ba1 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2ba2 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2ba3 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2ba4 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2ba5 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2ba6 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2ba7 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2ba8 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2ba9 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2baa infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2bab infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2bac infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2bad infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2bae infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2baf infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2bb0 infix": {"lspace": 5, "rspace": 5}, "\u2bb1 infix": {"lspace": 5, "rspace": 5}, "\u2bb2 infix": {"lspace": 5, "rspace": 5}, "\u2bb3 infix": {"lspace": 5, "rspace": 5}, "\u2bb4 infix": {"lspace": 5, "rspace": 5}, "\u2bb5 infix": {"lspace": 5, "rspace": 5}, "\u2bb6 infix": {"lspace": 5, "rspace": 5}, "\u2bb7 infix": {"lspace": 5, "rspace": 5}, "\u2bb8 infix": {"lspace": 5, "rspace": 5, "stretchy": true}, "\u2bd1 infix": {"lspace": 5, "rspace": 5}, "\ud83b\udef0 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}, "\ud83b\udef1 postfix": {"horizontal": true, "lspace": 0, "rspace": 0, "stretchy": true}}} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mathml/tools/operator-dictionary.py b/tests/wpt/web-platform-tests/mathml/tools/operator-dictionary.py index 38257a57fd0..22009c9efce 100755 --- a/tests/wpt/web-platform-tests/mathml/tools/operator-dictionary.py +++ b/tests/wpt/web-platform-tests/mathml/tools/operator-dictionary.py @@ -91,7 +91,15 @@ font.math.StretchStackTopShiftUp = 0 font.math.AccentBaseHeight = 2 * mathfont.em font.math.OverbarVerticalGap = 0 -mathfont.createSizeVariants(font) +mathfont.createSizeVariants(font, True) + +# Ensure a glyph exists for the combining characters that are handled specially +# in the specification: +# U+0338 COMBINING LONG SOLIDUS OVERLAY +# U+20D2 COMBINING LONG VERTICAL LINE OVERLAY +for combining_character in [0x338, 0x20D2]: + mathfont.createSquareGlyph(font, combining_character) + for key in operatorDictionary: value = operatorDictionary[key] for c in value["characters"]: diff --git a/tests/wpt/web-platform-tests/mathml/tools/operator-dictionary.xsl b/tests/wpt/web-platform-tests/mathml/tools/operator-dictionary.xsl index d00097555a4..8c75317672e 100644 --- a/tests/wpt/web-platform-tests/mathml/tools/operator-dictionary.xsl +++ b/tests/wpt/web-platform-tests/mathml/tools/operator-dictionary.xsl @@ -1,7 +1,4 @@ - diff --git a/tests/wpt/web-platform-tests/mathml/tools/utils/mathfont.py b/tests/wpt/web-platform-tests/mathml/tools/utils/mathfont.py index 830b0bd2f4c..d030c9f2ce0 100644 --- a/tests/wpt/web-platform-tests/mathml/tools/utils/mathfont.py +++ b/tests/wpt/web-platform-tests/mathml/tools/utils/mathfont.py @@ -1,5 +1,6 @@ import fontforge +PUA_startCodePoint = 0xE000 em = 1000 def create(aName, aCopyRight): @@ -170,12 +171,20 @@ def createGlyphFromValue(aFont, aCodePoint): g.width = 5 * em / 2 g.stroke("circular", em / 10, "square", "miter", "cleanup") -def createSizeVariants(aFont): +def createSizeVariants(aFont, aUsePUA = False): + if aUsePUA: + codePoint = PUA_startCodePoint + else: + codePoint = -1 for size in (0, 1, 2, 3): - g = aFont.createChar(-1, "v%d" % size) + g = aFont.createChar(codePoint, "v%d" % size) drawRectangleGlyph(g, em, (size + 1) * em, 0) - g = aFont.createChar(-1, "h%d" % size) + if aUsePUA: + codePoint += 1 + g = aFont.createChar(codePoint, "h%d" % size) drawRectangleGlyph(g, (size + 1) * em, em, 0) + if aUsePUA: + codePoint += 1 def createStretchy(aFont, codePoint, isHorizontal): if isHorizontal: diff --git a/tests/wpt/web-platform-tests/mathml/tools/utils/misc.py b/tests/wpt/web-platform-tests/mathml/tools/utils/misc.py index b92443dfbb2..89ec1bdf806 100644 --- a/tests/wpt/web-platform-tests/mathml/tools/utils/misc.py +++ b/tests/wpt/web-platform-tests/mathml/tools/utils/misc.py @@ -2,7 +2,7 @@ import os import progressbar from urllib.request import urlopen -UnicodeXMLURL = "https://github.com/w3c/xml-entities/blob/u14/unicode.xml?raw=true" +UnicodeXMLURL = "https://raw.githubusercontent.com/w3c/xml-entities/gh-pages/unicode.xml" InlineAxisOperatorsURL = "https://w3c.github.io/mathml-core/tables/inline-axis-operators.txt" def downloadWithProgressBar(url, outputDirectory="./", forceDownload=False): diff --git a/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js b/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js index 772d47e8729..061a226e3f6 100644 --- a/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js +++ b/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js @@ -122,6 +122,29 @@ promise_test(t => { })); }, "Test that decodingInfo rejects if the video configuration contentType isn't of type video"); +promise_test(t => { + return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({ + type: 'file', + video: { + contentType: 'application/ogg; codec=vorbis', + width: 800, + height: 600, + bitrate: 3000, + framerate: 24, + }, + })); +}, "Test that decodingInfo rejects if the video configuration contentType is of type audio"); + +promise_test(t => { + return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({ + type: 'file', + audio: { + contentType: 'application/ogg; codec=theora', + channels: 2, + }, + })); +}, "Test that decodingInfo rejects if the audio configuration contentType is of type video"); + promise_test(t => { return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({ type: 'file', diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-message-util.js b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-message-util.js index f2682e30bcf..c62eb8e3f7d 100644 --- a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-message-util.js +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-message-util.js @@ -2,8 +2,15 @@ // and worker thread communication. const messageSubject = { - ERROR: "error", - OBJECT_URL: "object url", + ERROR: "error", // info field may contain more detail + OBJECT_URL: "object url", // info field contains object URL + HANDLE: "handle", // info field contains the MediaSourceHandle STARTED_BUFFERING: "started buffering", FINISHED_BUFFERING: "finished buffering", -} + VERIFY_DURATION: "verify duration", // info field contains expected duration + AWAIT_DURATION: "await duration", // wait for element duration to match the expected duration in the info field + VERIFY_HAVE_NOTHING: "verify have nothing readyState", + VERIFY_AT_LEAST_HAVE_METADATA: "verify readyState is at least HAVE_METADATA", + ACK_VERIFIED: "verified", // info field contains the message values that requested the verification + WORKER_DONE: "worker done", // this lets worker signal main to successfully end the test +}; diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-detach-element.html b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-detach-element.html index 7b00c59a07b..0f74d953723 100644 --- a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-detach-element.html +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-detach-element.html @@ -7,11 +7,11 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-duration.js b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-duration.js new file mode 100644 index 00000000000..2a2c7bac0b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-duration.js @@ -0,0 +1,290 @@ +importScripts("mediasource-worker-util.js"); + +// Note, we do not use testharness.js utilities within the worker context +// because it also communicates using postMessage to the main HTML document's +// harness, and would confuse the test case message parsing there. + +let util = new MediaSourceWorkerUtil(); +let sourceBuffer; + +// Phases of this test case, in sequence: +const testPhase = { + // Main thread verifies initial unattached HTMLMediaElement duration is NaN + // and readyState is HAVE_NOTHING, then starts this worker. + // This worker creates a MediaSource, verifies its initial duration + // is NaN, creates an object URL for the MediaSource and sends the URL to the + // main thread. + kInitial: "Initial", + + // Main thread receives MediaSourceHandle, re-verifies that the media element + // duration is still NaN and readyState is still HAVE_NOTHING, and then sets + // the handle as the srcObject of the media element, eventually causing worker + // mediaSource 'onsourceopen' event dispatch. + kAttaching: "Awaiting sourceopen event that signals attachment is setup", + + kRequestNaNDurationCheck: + "Sending request to main thread to verify expected duration of the freshly setup attachment", + kConfirmNaNDurationResult: + "Checking that main thread correctly ACK'ed the freshly setup attachment's duration verification request", + + kRequestHaveNothingReadyStateCheck: + "Sending request to main thread to verify expected readyState of HAVE_NOTHING of the freshly setup attachment", + kConfirmHaveNothingReadyStateResult: + "Checking that main thread correctly ACK'ed the freshly setup attachment's readyState HAVE_NOTHING verification request", + + kRequestSetDurationCheck: + "Sending request to main thread to verify explicitly set duration before any media data has been appended", + kConfirmSetDurationResult: + "Checking that main thread correctly ACK'ed the duration verification request of explicitly set duration before any media data has been appended", + + kRequestHaveNothingReadyStateRecheck: + "Sending request to main thread to recheck that the readyState is still HAVE_NOTHING", + kConfirmHaveNothingReadyStateRecheckResult: + "Checking that main thread correctly ACK'ed the request to recheck readyState of HAVE_NOTHING", + + kRequestAwaitNewDurationCheck: + "Buffering media and then sending request to main thread to await duration reaching the expected value due to buffering", + kConfirmAwaitNewDurationResult: + "Checking that main thread correctly ACK'ed the request to await duration reaching the expected value due to buffering", + + kRequestAtLeastHaveMetadataReadyStateCheck: + "Sending request to main thread to verify expected readyState of at least HAVE_METADATA due to buffering", + kConfirmAtLeastHaveMetadataReadyStateResult: + "Checking that main thread correctly ACK'ed the request to verify expected readyState of at least HAVE_METADATA due to buffering", + +}; + +let phase = testPhase.kInitial; + +// Setup handler for receipt of attachment completion. +util.mediaSource.addEventListener("sourceopen", () => { + assert(phase === testPhase.kAttaching, "Unexpected sourceopen received by Worker mediaSource."); + phase = testPhase.kRequestNaNDurationCheck; + processPhase(); +}, { once : true }); + +// Setup handler for receipt of acknowledgement of successful verifications from +// main thread. |ackVerificationData| contains the round-tripped verification +// request that the main thread just sent, and is used in processPhase to ensure +// the ACK for this phase matched the request for verification. +let ackVerificationData; +onmessage = e => { + if (e.data === undefined || e.data.subject !== messageSubject.ACK_VERIFIED || e.data.info === undefined) { + postMessage({ + subject: messageSubject.ERROR, + info: "Invalid message received by Worker" + }); + return; + } + + ackVerificationData = e.data.info; + processPhase(/* isResponseToAck */ true); +}; + +processPhase(); + + +// Returns true if checks succeed, false otherwise. +function checkAckVerificationData(expectedRequest) { + + // Compares only subject and info fields. Uses logic similar to testharness.js's + // same_value(x,y) to correctly handle NaN, but doesn't distinguish +0 from -0. + function messageValuesEqual(m1, m2) { + if (m1.subject !== m1.subject) { + // NaN case + if (m2.subject === m2.subject) + return false; + } else if (m1.subject !== m2.subject) { + return false; + } + + if (m1.info !== m1.info) { + // NaN case + return (m2.info !== m2.info); + } + + return m1.info === m2.info; + } + + if (messageValuesEqual(expectedRequest, ackVerificationData)) { + ackVerificationData = undefined; + return true; + } + + postMessage({ + subject: messageSubject.ERROR, + info: "ACK_VERIFIED message from main thread was for a mismatching request for this phase. phase=[" + phase + + "], expected request that would produce ACK in this phase=[" + JSON.stringify(expectedRequest) + + "], actual request reported with the ACK=[" + JSON.stringify(ackVerificationData) + "]" + }); + + ackVerificationData = undefined; + return false; +} + +function bufferMediaAndSendDurationVerificationRequest() { + sourceBuffer = util.mediaSource.addSourceBuffer(util.mediaMetadata.type); + sourceBuffer.onerror = (err) => { + postMessage({ subject: messageSubject.ERROR, info: err }); + }; + sourceBuffer.onupdateend = () => { + // Sanity check the duration. + // Unnecessary for this buffering, except helps with test coverage. + var duration = util.mediaSource.duration; + if (isNaN(duration) || duration <= 0.0) { + postMessage({ + subject: messageSubject.ERROR, + info: "mediaSource.duration " + duration + " is not within expected range (0,1)" + }); + return; + } + + // Await the main thread media element duration matching the worker + // mediaSource duration. + postMessage(getAwaitCurrentDurationRequest()); + }; + + util.mediaLoadPromise.then(mediaData => { sourceBuffer.appendBuffer(mediaData); }, + err => { postMessage({ subject: messageSubject.ERROR, info: err }) }); +} + + +function getAwaitCurrentDurationRequest() { + // Sanity check that we have a numeric duration value now. + const dur = util.mediaSource.duration; + assert(!Number.isNaN(dur), "Unexpected NaN duration in worker"); + return { subject: messageSubject.AWAIT_DURATION, info: dur }; +} + +function assert(conditionBool, description) { + if (conditionBool !== true) { + postMessage({ + subject: messageSubject.ERROR, + info: "Current test phase [" + phase + "] failed worker assertion. " + description + }); + } +} + +function processPhase(isResponseToAck = false) { + assert(!isResponseToAck || (phase !== testPhase.kInitial && phase !== testPhase.kAttaching), + "Phase does not expect verification ack receipt from main thread"); + + // Some static request messages useful in transmission and ACK verification. + const nanDurationCheckRequest = { subject: messageSubject.VERIFY_DURATION, info: NaN }; + const haveNothingReadyStateCheckRequest = { subject: messageSubject.VERIFY_HAVE_NOTHING }; + const setDurationCheckRequest = { subject: messageSubject.AWAIT_DURATION, info: 0.1 }; + const atLeastHaveMetadataReadyStateCheckRequest = { subject: messageSubject.VERIFY_AT_LEAST_HAVE_METADATA }; + + switch (phase) { + + case testPhase.kInitial: + assert(Number.isNaN(util.mediaSource.duration), "Initial unattached MediaSource duration must be NaN, but instead is " + util.mediaSource.duration); + phase = testPhase.kAttaching; + let handle = util.mediaSource.handle; + postMessage({ subject: messageSubject.HANDLE, info: handle }, { transfer: [handle] } ); + break; + + case testPhase.kAttaching: + postMessage({ + subject: messageSubject.ERROR, + info: "kAttaching phase is handled by main thread and by worker onsourceopen, not this switch case." + }); + break; + + case testPhase.kRequestNaNDurationCheck: + assert(!isResponseToAck); + postMessage(nanDurationCheckRequest); + phase = testPhase.kConfirmNaNDurationResult; + break; + + case testPhase.kConfirmNaNDurationResult: + assert(isResponseToAck); + if (checkAckVerificationData(nanDurationCheckRequest)) { + phase = testPhase.kRequestHaveNothingReadyStateCheck; + processPhase(); + } + break; + + case testPhase.kRequestHaveNothingReadyStateCheck: + assert(!isResponseToAck); + postMessage(haveNothingReadyStateCheckRequest); + phase = testPhase.kConfirmHaveNothingReadyStateResult; + break; + + case testPhase.kConfirmHaveNothingReadyStateResult: + assert(isResponseToAck); + if (checkAckVerificationData(haveNothingReadyStateCheckRequest)) { + phase = testPhase.kRequestSetDurationCheck; + processPhase(); + } + break; + + case testPhase.kRequestSetDurationCheck: + assert(!isResponseToAck); + const newDuration = setDurationCheckRequest.info; + assert(!Number.isNaN(newDuration) && newDuration > 0); + + // Set the duration, then request verification. + util.mediaSource.duration = newDuration; + postMessage(setDurationCheckRequest); + phase = testPhase.kConfirmSetDurationResult; + break; + + case testPhase.kConfirmSetDurationResult: + assert(isResponseToAck); + if (checkAckVerificationData(setDurationCheckRequest)) { + phase = testPhase.kRequestHaveNothingReadyStateRecheck; + processPhase(); + } + break; + + case testPhase.kRequestHaveNothingReadyStateRecheck: + assert(!isResponseToAck); + postMessage(haveNothingReadyStateCheckRequest); + phase = testPhase.kConfirmHaveNothingReadyStateRecheckResult; + break; + + case testPhase.kConfirmHaveNothingReadyStateRecheckResult: + assert(isResponseToAck); + if (checkAckVerificationData(haveNothingReadyStateCheckRequest)) { + phase = testPhase.kRequestAwaitNewDurationCheck; + processPhase(); + } + break; + + case testPhase.kRequestAwaitNewDurationCheck: + assert(!isResponseToAck); + bufferMediaAndSendDurationVerificationRequest(); + phase = testPhase.kConfirmAwaitNewDurationResult; + break; + + case testPhase.kConfirmAwaitNewDurationResult: + assert(isResponseToAck); + if (checkAckVerificationData(getAwaitCurrentDurationRequest())) { + phase = testPhase.kRequestAtLeastHaveMetadataReadyStateCheck; + processPhase(); + } + break; + + case testPhase.kRequestAtLeastHaveMetadataReadyStateCheck: + assert(!isResponseToAck); + postMessage(atLeastHaveMetadataReadyStateCheckRequest); + phase = testPhase.kConfirmAtLeastHaveMetadataReadyStateResult; + break; + + case testPhase.kConfirmAtLeastHaveMetadataReadyStateResult: + assert(isResponseToAck); + if (checkAckVerificationData(atLeastHaveMetadataReadyStateCheckRequest)) { + postMessage({ subject: messageSubject.WORKER_DONE }); + } + phase = "No further phase processing should occur once WORKER_DONE message has been sent"; + break; + + default: + postMessage({ + subject: messageSubject.ERROR, + info: "Unexpected test phase in worker:" + phase, + }); + } + +} diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-get-objecturl.js b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-get-objecturl.js new file mode 100644 index 00000000000..e9a5af6c812 --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-get-objecturl.js @@ -0,0 +1,13 @@ +importScripts("mediasource-worker-util.js"); + +// Note, we do not use testharness.js utilities within the worker context +// because it also communicates using postMessage to the main HTML document's +// harness, and would confuse the test case message parsing there. + +onmessage = function(evt) { + postMessage({ subject: messageSubject.ERROR, info: "No message expected by Worker"}); +}; + +let util = new MediaSourceWorkerUtil(); + +postMessage({ subject: messageSubject.OBJECT_URL, info: URL.createObjectURL(util.mediaSource) }); diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle-transfer-to-main.js b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle-transfer-to-main.js new file mode 100644 index 00000000000..15cccb1a0e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle-transfer-to-main.js @@ -0,0 +1,10 @@ +importScripts('mediasource-message-util.js'); + +// Note, we do not use testharness.js utilities within the worker context +// because it also communicates using postMessage to the main HTML document's +// harness, and would confuse the test case message parsing there. + +// Just obtain a MediaSourceHandle and transfer it to creator of our context. +let handle = new MediaSource().handle; +postMessage( + {subject: messageSubject.HANDLE, info: handle}, {transfer: [handle]}); diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle-transfer.html b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle-transfer.html new file mode 100644 index 00000000000..2db71c049d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle-transfer.html @@ -0,0 +1,316 @@ + + +Test MediaSourceHandle transfer characteristics + + + + + + + diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle-transfer.js b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle-transfer.js new file mode 100644 index 00000000000..803da44e23c --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle-transfer.js @@ -0,0 +1,19 @@ +importScripts('/resources/testharness.js'); + +test(t => { + let handle = new MediaSource().handle; + assert_true(handle instanceof MediaSourceHandle); + assert_throws_dom('DataCloneError', function() { + postMessage(handle); + }, 'serializing handle without transfer'); +}, 'MediaSourceHandle serialization without transfer must fail, tested in worker'); + +test(t => { + let handle = new MediaSource().handle; + assert_true(handle instanceof MediaSourceHandle); + assert_throws_dom('DataCloneError', function() { + postMessage(handle, [handle, handle]); + }, 'transferring same handle more than once in same postMessage'); +}, 'Same MediaSourceHandle transferred multiple times in single postMessage must fail, tested in worker'); + +done(); diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle.html b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle.html new file mode 100644 index 00000000000..6129e05ffb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle.html @@ -0,0 +1,61 @@ + + +Test MediaSource object and handle creation, with MediaSource in dedicated worker + + + + + diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle.js b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle.js new file mode 100644 index 00000000000..d35cb877c2a --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-handle.js @@ -0,0 +1,70 @@ +importScripts("/resources/testharness.js"); + +test(t => { + // The Window test html conditionally fetches and runs these tests only if the + // implementation exposes a true-valued static canConstructInDedicatedWorker + // attribute on MediaSource in the Window context. So, the implementation must + // agree on support here in the dedicated worker context. + + // Ensure we're executing in a dedicated worker context. + assert_true(self instanceof DedicatedWorkerGlobalScope, "self instanceof DedicatedWorkerGlobalScope"); + assert_true(MediaSource.hasOwnProperty("canConstructInDedicatedWorker", "DedicatedWorker MediaSource hasOwnProperty 'canConstructInDedicatedWorker'")); + assert_true(MediaSource.canConstructInDedicatedWorker, "DedicatedWorker MediaSource.canConstructInDedicatedWorker"); +}, "MediaSource in DedicatedWorker context must have true-valued canConstructInDedicatedWorker if Window context had it"); + +test(t => { + assert_true( + 'handle' in MediaSource.prototype, + 'dedicated worker MediaSource must have handle in prototype'); + assert_true(self.hasOwnProperty("MediaSourceHandle"), "dedicated worker must have MediaSourceHandle visibility"); +}, 'MediaSource prototype in DedicatedWorker context must have \'handle\', and worker must have MediaSourceHandle'); + +test(t => { + const ms = new MediaSource(); + assert_equals(ms.readyState, "closed"); +}, "MediaSource construction succeeds with initial closed readyState in DedicatedWorker"); + +test(t => { + const ms = new MediaSource(); + const handle = ms.handle; + assert_not_equals(handle, null, 'must have a non-null \'handle\' attribute'); + assert_true(handle instanceof MediaSourceHandle, "must be a MediaSourceHandle"); +}, 'mediaSource.handle in DedicatedWorker returns a MediaSourceHandle'); + +test(t => { + const msA = new MediaSource(); + const msB = new MediaSource(); + const handleA1 = msA.handle; + const handleA2 = msA.handle; + const handleA3 = msA['handle']; + const handleB1 = msB.handle; + const handleB2 = msB.handle; + assert_true( + handleA1 === handleA2 && handleB1 === handleB2 && handleA1 != handleB1, + 'SameObject is observed for mediaSource.handle, and different MediaSource instances have different handles'); + assert_true( + handleA1 === handleA3, + 'SameObject is observed even when accessing handle differently'); + assert_true( + handleA1 instanceof MediaSourceHandle && + handleB1 instanceof MediaSourceHandle, + 'handle property returns MediaSourceHandles'); +}, 'mediaSource.handle observes SameObject property correctly'); + +test(t => { + const ms1 = new MediaSource(); + const handle1 = ms1.handle; + const ms2 = new MediaSource(); + const handle2 = ms2.handle; + assert_true( + handle1 !== handle2, + 'distinct MediaSource instances must have distinct handles'); + + // Verify attempt to change value of the handle property does not succeed. + ms1.handle = handle2; + assert_true( + ms1.handle === handle1 && ms2.handle === handle2, + 'MediaSource handle is readonly, so should not have changed'); +}, 'Attempt to set MediaSource handle property should fail to change it, since it is readonly'); + +done(); diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.html b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.html index 5553b5c631e..ae601996725 100644 --- a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.html +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.html @@ -1,6 +1,6 @@ -Test MediaSource object and objectUrl creation and revocation, with MediaSource in dedicated worker +Test MediaSource object and objectUrl creation and load via that url should fail, with MediaSource in dedicated worker @@ -11,7 +11,7 @@ async_test(t => { assert_true(MediaSource.hasOwnProperty("canConstructInDedicatedWorker"), "MediaSource hasOwnProperty 'canConstructInDedicatedWorker'"); assert_true(MediaSource.canConstructInDedicatedWorker, "MediaSource.canConstructInDedicatedWorker"); - let worker = new Worker("mediasource-worker-play.js"); + let worker = new Worker("mediasource-worker-get-objecturl.js"); worker.onmessage = t.step_func(e => { let subject = e.data.subject; assert_true(subject != undefined, "message must have a subject field"); @@ -21,19 +21,21 @@ async_test(t => { break; case messageSubject.OBJECT_URL: const url = e.data.info; - assert_true(url.match(/^blob:.+/) != null); - URL.revokeObjectURL(url); - // TODO(crbug.com/1196040): Revoking MediaSource objectURLs on thread - // that didn't create them is at best a no-op. This test case is - // possibly obsolete. - t.done(); + const video = document.createElement("video"); + document.body.appendChild(video); + video.onerror = t.step_func((target) => { + assert_true(video.error != null); + assert_equals(video.error.code, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED); + t.done(); + }); + video.onended = t.unreached_func("video should not have successfully loaded and played to end"); + video.src = url; break; default: assert_unreached("Unexpected message subject: " + subject); - } }); -}, "Test main context revocation of DedicatedWorker MediaSource object URL"); +}, "Test main context load of a DedicatedWorker MediaSource object URL should fail"); if (MediaSource.hasOwnProperty("canConstructInDedicatedWorker") && MediaSource.canConstructInDedicatedWorker === true) { // If implementation claims support for MSE-in-Workers, then fetch and run diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.js b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.js index 9a7195fc5bd..2e70d994181 100644 --- a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.js +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.js @@ -20,9 +20,7 @@ test(t => { test(t => { const ms = new MediaSource(); const url = URL.createObjectURL(ms); - assert_true(url != null); - assert_true(url.match(/^blob:.+/) != null); -}, "URL.createObjectURL(mediaSource) in DedicatedWorker returns a Blob URI"); +}, "URL.createObjectURL(mediaSource) in DedicatedWorker does not throw exception"); test(t => { const ms = new MediaSource(); diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html index ca8b6970f89..d6496afd6f4 100644 --- a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html @@ -40,7 +40,7 @@ function startWorkerAndTerminateWorker(test, when_to_start_timeouts, timeouts_to video.loop = true; } - if (when_to_start_timeouts == "before setting src") { + if (when_to_start_timeouts == "before setting srcObject") { terminateWorkerAfterMultipleSetTimeouts(test, worker, timeouts_to_await); } @@ -51,11 +51,10 @@ function startWorkerAndTerminateWorker(test, when_to_start_timeouts, timeouts_to case messageSubject.ERROR: assert_unreached("Worker error: " + e.data.info); break; - case messageSubject.OBJECT_URL: - const url = e.data.info; - assert_true(url.match(/^blob:.+/) != null); - video.src = url; - if (when_to_start_timeouts == "after setting src") { + case messageSubject.HANDLE: + const handle = e.data.info; + video.srcObject = handle; + if (when_to_start_timeouts == "after setting srcObject") { terminateWorkerAfterMultipleSetTimeouts(test, worker, timeouts_to_await); } video.play().catch(error => { @@ -73,7 +72,7 @@ function startWorkerAndTerminateWorker(test, when_to_start_timeouts, timeouts_to }); } -[ "before setting src", "after setting src", "after first ended event" ].forEach(when => { +[ "before setting srcObject", "after setting srcObject", "after first ended event" ].forEach(when => { for (let timeouts = 0; timeouts < 10; ++timeouts) { async_test(test => { startWorkerAndTerminateWorker(test, when, timeouts); }, "Test worker MediaSource termination after at least " + timeouts + diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.html b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.html index 07317e6d0c9..455a224069d 100644 --- a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.html +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.html @@ -9,37 +9,40 @@ async_test(t => { // Fail fast if MSE-in-Workers is not supported. - assert_true(MediaSource.hasOwnProperty("canConstructInDedicatedWorker"), "MediaSource hasOwnProperty 'canConstructInDedicatedWorker'"); - assert_true(MediaSource.canConstructInDedicatedWorker, "MediaSource.canConstructInDedicatedWorker"); + assert_true( + MediaSource.hasOwnProperty('canConstructInDedicatedWorker'), + 'MediaSource hasOwnProperty \'canConstructInDedicatedWorker\''); + assert_true( + MediaSource.canConstructInDedicatedWorker, + 'MediaSource.canConstructInDedicatedWorker'); - const video = document.createElement("video"); + const video = document.createElement('video'); document.body.appendChild(video); - video.onerror = t.unreached_func("video element error"); + video.onerror = t.unreached_func('video element error'); video.onended = t.step_func_done(); - let worker = new Worker("mediasource-worker-play.js"); - worker.onerror = t.unreached_func("worker error"); + let worker = new Worker('mediasource-worker-play.js'); + worker.onerror = t.unreached_func('worker error'); worker.onmessage = t.step_func(e => { let subject = e.data.subject; - assert_true(subject != undefined, "message must have a subject field"); + assert_true(subject != undefined, 'message must have a subject field'); switch (subject) { case messageSubject.ERROR: - assert_unreached("Worker error: " + e.data.info); + assert_unreached('Worker error: ' + e.data.info); break; - case messageSubject.OBJECT_URL: - const url = e.data.info; - assert_true(url.match(/^blob:.+/) != null); - video.src = url; + case messageSubject.HANDLE: + const handle = e.data.info; + video.srcObject = handle; video.play(); break; default: - assert_unreached("Unexpected message subject: " + subject); + assert_unreached('Unexpected message subject: ' + subject); } }); -}, "Test worker MediaSource construction, attachment, buffering and basic playback"); +}, 'Test worker MediaSource construction, attachment, buffering and basic playback'); -// TODO(https://crbug.com/878133): Test multiple attachments to same worker -// MediaSource racing each other: precisely one should win the race. +// See mediasource-worker-handle-transfer.html for a case that tests race of +// multiple simultaneous attachments of same handle to multiple elements. diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.js b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.js index 0312f16fd99..5c4760bf7b1 100644 --- a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.js +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.js @@ -9,9 +9,37 @@ onmessage = function(evt) { }; let util = new MediaSourceWorkerUtil(); +let handle = util.mediaSource.handle; + +util.mediaSource.addEventListener('sourceopen', () => { + // Immediately re-verify the SameObject property of the handle we transferred. + if (handle !== util.mediaSource.handle) { + postMessage({ + subject: messageSubject.ERROR, + info: 'mediaSource.handle changed from the original value' + }); + } + + // Also verify that transferring the already-transferred handle instance is + // prevented correctly. + try { + postMessage( + { + subject: messageSubject.ERROR, + info: + 'This postMessage should fail: the handle has already been transferred', + extra_info: util.mediaSource.handle + }, + {transfer: [util.mediaSource.handle]}); + } catch (e) { + if (e.name != 'DataCloneError') { + postMessage({ + subject: messageSubject.ERROR, + info: 'Expected handle retransfer exception did not occur' + }); + } + } -util.mediaSource.addEventListener("sourceopen", () => { - URL.revokeObjectURL(util.mediaSourceObjectUrl); sourceBuffer = util.mediaSource.addSourceBuffer(util.mediaMetadata.type); sourceBuffer.onerror = (err) => { postMessage({ subject: messageSubject.ERROR, info: err }); @@ -41,6 +69,6 @@ util.mediaSource.addEventListener("sourceopen", () => { }; util.mediaLoadPromise.then(mediaData => { sourceBuffer.appendBuffer(mediaData); }, err => { postMessage({ subject: messageSubject.ERROR, info: err }) }); -}, { once : true }); +}, {once: true}); -postMessage({ subject: messageSubject.OBJECT_URL, info: util.mediaSourceObjectUrl }); +postMessage({ subject: messageSubject.HANDLE, info: handle }, { transfer: [handle] }); diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-util.js b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-util.js index 695d1179d39..7adaf82508d 100644 --- a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-util.js +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-util.js @@ -22,7 +22,6 @@ let MEDIA_LIST = [ class MediaSourceWorkerUtil { constructor() { this.mediaSource = new MediaSource(); - this.mediaSourceObjectUrl = URL.createObjectURL(this.mediaSource); // Find supported test media, if any. this.foundSupportedMedia = false; diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-detach.html b/tests/wpt/web-platform-tests/media-source/mediasource-detach.html index b25b5c6f02f..3f87d9a3d5a 100644 --- a/tests/wpt/web-platform-tests/media-source/mediasource-detach.html +++ b/tests/wpt/web-platform-tests/media-source/mediasource-detach.html @@ -38,12 +38,16 @@ mediasource_detach_test(function(test, mediaElement, mediaSource, sourceBuffer, mediaData) { - sourceBuffer.addEventListener('updateend', test.step_func(function (event) + test.expectEvent(sourceBuffer, 'updateend', 'updateend after appending data'); + test.expectEvent(mediaElement, 'loadedmetadata', 'media element loadedmetata'); + test.waitForExpectedEvents(() => { - assert_greater_than(mediaElement.readyState, HTMLMediaElement.HAVE_NOTHING, 'media readyState is greater than "HAVE_NOTHING"') + assert_greater_than(mediaElement.readyState, HTMLMediaElement.HAVE_NOTHING, + 'media element readyState is greater than "HAVE_NOTHING"'); assert_false(sourceBuffer.updating, 'updating attribute is false'); + assert_equals(mediaSource.readyState, 'open'); mediaElement.load(); - })); + }); sourceBuffer.appendBuffer(mediaData); }, 'Test media.load() after appending data will trigger MediaSource detaching from a media element.'); diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-is-type-supported.html b/tests/wpt/web-platform-tests/media-source/mediasource-is-type-supported.html index 1981af7b941..93b067c6926 100644 --- a/tests/wpt/web-platform-tests/media-source/mediasource-is-type-supported.html +++ b/tests/wpt/web-platform-tests/media-source/mediasource-is-type-supported.html @@ -95,8 +95,10 @@ 'video/mp4;codecs="avc1.4d001e,mp4a.40.2"', 'video/mp4;codecs="mp4a.40.2 , avc1.4d001e "', 'video/mp4;codecs="avc1.4d001e,mp4a.40.5"', - 'audio/mp4;codecs="opus"', - 'video/mp4;codecs="opus"' + 'audio/mp4;codecs="Opus"', + 'video/mp4;codecs="Opus"', + 'audio/mp4;codecs="fLaC"', + 'video/mp4;codecs="fLaC"' ], true, 'Test valid MP4 type'); diff --git a/tests/wpt/web-platform-tests/mediacapture-depth/META.yml b/tests/wpt/web-platform-tests/mediacapture-depth/META.yml deleted file mode 100644 index 434612091df..00000000000 --- a/tests/wpt/web-platform-tests/mediacapture-depth/META.yml +++ /dev/null @@ -1,5 +0,0 @@ -spec: https://w3c.github.io/mediacapture-depth/ -suggested_reviewers: - - anssiko - - Honry - - robman diff --git a/tests/wpt/web-platform-tests/mediacapture-depth/dictionary-helper.js b/tests/wpt/web-platform-tests/mediacapture-depth/dictionary-helper.js deleted file mode 100644 index 46853525f08..00000000000 --- a/tests/wpt/web-platform-tests/mediacapture-depth/dictionary-helper.js +++ /dev/null @@ -1,141 +0,0 @@ -"use strict"; - -// Helper assertion functions to validate dictionary fields -// on dictionary objects returned from APIs - -function assert_string(object) { - assert_equals(typeof object, "string", - `Expect ${object} to be string`); -} - -function assert_string_field(object, field) { - const str = object[field]; - assert_equals(typeof str, "string", - `Expect dictionary.${field} to be string`); -} - -function assert_number_field(object, field) { - const num = object[field]; - assert_equals(typeof num, "number", - `Expect dictionary.${field} to be number`); -} - -function assert_boolean_field(object, field, value = "") { - const bool = object[field]; - assert_equals(typeof bool, "boolean", - `Expect dictionary.${field} to be boolean`); - if (object[field] !== "") { - assert_equals(object[field], value, - `Expect default value of dictionary.${field} to be ${value}`); - } -} - -function assert_array_field(object, field) { - assert_true(Array.isArray(object[field]), - `Expect dictionary.${field} to be array`); -} - -function assert_enum_field(object, field, validValues) { - assert_string_field(object, field); - assert_true(validValues.includes(object[field]), - `Expect dictionary.${field} to have one of the valid enum values: ${validValues}`); -} - -function assert_number_range_field(object, field, key) { - const num = object[field][key]; - assert_equals(typeof num, "number", - `Expect dictionary.${field}.${key} to be number`); -} - -function assert_boolean_range_field(object, field, key) { - const bool = object[field][key]; - assert_equals(typeof bool, "boolean", - `Expect dictionary.${field}.${key} to be boolean`); -} - -function assert_number_or_number_range_field(object, field) { - if (typeof object[field] !== "object") { - assert_number_field(object, field); - } else { - if (object[field]["max"] !== undefined) - assert_number_range_field(object, field, "max"); - if (object[field]["min"] !== undefined) - assert_number_range_field(object, field, "min"); - if (object[field]["max"] === undefined && - object[field]["min"] === undefined) - assert_unreached(); - } -} - -function assert_constrain_string_field(object, field) { - // test DOMString type - if (typeof object[field] !== "object") { - assert_string_field(object, field); - // test ConstrainDOMStringParameters type - } else if (typeof object[field]["exact"] !== undefined || typeof object[field]["ideal"] !== undefined) { - if (object[field]["exact"] !== undefined) { - // test DOMString type key value of ConstrainDOMStringParameters dictionary - if (typeof object[field] !== "object") { - assert_string_field(object[field], "exact"); - // test sequence type key value of ConstrainDOMStringParameters dictionary - } else { - assert_array_field(object[field], "exact"); - for(const item of object[field]["exact"]) { - assert_string(item); - } - } - } - if (object[field]["ideal"] !== undefined) { - // test DOMString type key value of ConstrainDOMStringParameters dictionary - if (typeof object[field] !== "object") { - assert_string_field(object[field], "ideal"); - // test sequence type key value of ConstrainDOMStringParameters dictionary - } else { - assert_array_field(object[field], "ideal"); - for(const item of object[field]["ideal"]) { - assert_string(item); - } - } - } - // test sequence type - } else { - assert_array_field(object, field); - for(const item of object[field]) { - assert_string(item); - } - } -} - -function assert_constrain_number_field(object, field) { - if (typeof object[field] !== "object") { - assert_number_field(object, field); - } else { - if (object[field]["max"] !== undefined) - assert_number_range_field(object, field, "max"); - if (object[field]["min"] !== undefined) - assert_number_range_field(object, field, "min"); - if (object[field]["exact"] !== undefined) - assert_number_range_field(object, field, "exact"); - if (object[field]["ideal"] !== undefined) - assert_number_range_field(object, field, "ideal"); - if (object[field]["max"] === undefined && - object[field]["min"] === undefined && - object[field]["exact"] === undefined && - object[field]["ideal"] === undefined) - assert_unreached(); - } -} - -function assert_constrain_boolean_field(object, field) { - if (typeof object[field] !== "object") { - assert_boolean_field(object, field); - } else { - if (object[field]["exact"] !== undefined) - assert_boolean_range_field(object, field, "exact"); - if (object[field]["ideal"] !== undefined) - assert_boolean_range_field(object, field, "ideal"); - if (object[field]["exact"] === undefined && - object[field]["ideal"] === undefined) - assert_unreached(); - } -} diff --git a/tests/wpt/web-platform-tests/mediacapture-depth/dictionary-manual.https.html b/tests/wpt/web-platform-tests/mediacapture-depth/dictionary-manual.https.html deleted file mode 100644 index 0a5b8248815..00000000000 --- a/tests/wpt/web-platform-tests/mediacapture-depth/dictionary-manual.https.html +++ /dev/null @@ -1,85 +0,0 @@ - - -Media Capture Depth Dictionary Test - - - - - - - -

                                                                      Preconditions

                                                                      -
                                                                        -
                                                                      1. - Use a test device with depth camera(embedded or external). -
                                                                      2. -
                                                                      3. - When prompted, accept to share your depth/color(RGB) stream. -
                                                                      4. -
                                                                      - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html b/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html deleted file mode 100644 index 963229aaca3..00000000000 --- a/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - Media Capture Depth Stream Extensions IDL test - - - - - - - - - -
                                                                      - - - diff --git a/tests/wpt/web-platform-tests/mediacapture-extensions/GUM-backgroundBlur.https.html b/tests/wpt/web-platform-tests/mediacapture-extensions/GUM-backgroundBlur.https.html new file mode 100644 index 00000000000..605a4e08319 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-extensions/GUM-backgroundBlur.https.html @@ -0,0 +1,150 @@ + + + +Test background blur support + + + +

                                                                      Description

                                                                      +

                                                                      This test checks background blur support.

                                                                      +
                                                                      + + + + + diff --git a/tests/wpt/web-platform-tests/mediacapture-fromelement/idlharness.window.js b/tests/wpt/web-platform-tests/mediacapture-fromelement/idlharness.window.js index c58e63ff12a..970f3cd5c62 100644 --- a/tests/wpt/web-platform-tests/mediacapture-fromelement/idlharness.window.js +++ b/tests/wpt/web-platform-tests/mediacapture-fromelement/idlharness.window.js @@ -9,11 +9,16 @@ idl_test( ['mediacapture-fromelement'], ['mediacapture-streams', 'html', 'dom'], idl_array => { - // Ignored errors will be surfaced when media/canvas undefined below. + // Ignored errors will be surfaced when the elements are undefined below. try { - self.media = document.createElement('media'); - media.width = media.height = 10; - document.body.appendChild(media); + self.video = document.createElement('video'); + video.width = video.height = 10; + document.body.appendChild(video); + } catch (e) { } + + try { + self.audio = document.createElement('audio'); + document.body.appendChild(audio); } catch (e) { } try { @@ -24,7 +29,8 @@ idl_test( } catch (e) { } idl_array.add_objects({ - HTMLMediaElement: ['media'], + HTMLVideoElement: ['video'], + HTMLAudioElement: ['audio'], HTMLCanvasElement: ['canvas'], CanvasCaptureMediaStreamTrack: ['track'], }); diff --git a/tests/wpt/web-platform-tests/mediacapture-handle/identity/MediaDevices-setCaptureHandleConfig.https.window.js b/tests/wpt/web-platform-tests/mediacapture-handle/identity/MediaDevices-setCaptureHandleConfig.https.window.js new file mode 100644 index 00000000000..6fa01ad2b95 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-handle/identity/MediaDevices-setCaptureHandleConfig.https.window.js @@ -0,0 +1,54 @@ +'use strict'; + +test(() => { + assert_true(!!navigator.mediaDevices.setCaptureHandleConfig); + navigator.mediaDevices.setCaptureHandleConfig({handle: 'X'.repeat(1024)}); +}, 'setCaptureHandleConfig does not throw if handle length is 1024.'); + +test(() => { + assert_true(!!navigator.mediaDevices.setCaptureHandleConfig); + assert_throws_js( + TypeError, + () => navigator.mediaDevices.setCaptureHandleConfig( + {handle: 'X'.repeat(1025)}), + 'handle length must be 1024 characters or less'); +}, 'setCaptureHandleConfig raises TypeError if handle is invalid.'); + +test(() => { + assert_true(!!navigator.mediaDevices.setCaptureHandleConfig); + navigator.mediaDevices.setCaptureHandleConfig({permittedOrigins: ['*']}); +}, 'setCaptureHandleConfig does not throw if asterisk character appears only once.'); + +test(() => { + assert_true(!!navigator.mediaDevices.setCaptureHandleConfig); + assert_throws_dom( + 'NotSupportedError', + () => navigator.mediaDevices.setCaptureHandleConfig( + {permittedOrigins: ['*', '*']}), + 'two asterisk characters are not allowed'); + + assert_throws_dom( + 'NotSupportedError', + () => navigator.mediaDevices.setCaptureHandleConfig( + {permittedOrigins: ['*', 'http://example.com']}), + 'asterisk character is not allowed with valid origins'); + + assert_throws_dom( + 'NotSupportedError', + () => navigator.mediaDevices.setCaptureHandleConfig( + {permittedOrigins: ['about://blank']}), + 'origins must be valid'); +}, 'setCaptureHandleConfig raises NotSupportedError if permittedOrigins is invalid.'); + + +test(() => { + assert_true(!!navigator.mediaDevices.setCaptureHandleConfig); + const iframe = document.createElement('iframe'); + document.body.appendChild(iframe); + const mediaDevices = iframe.contentWindow.navigator.mediaDevices; + const iframeDOMException = iframe.contentWindow.DOMException; + + assert_throws_dom('InvalidStateError', iframeDOMException, () => { + mediaDevices.setCaptureHandleConfig(); + }); +}, 'setCaptureHandleConfig raises InvalidStateError if not from top-level browsing context.'); diff --git a/tests/wpt/web-platform-tests/mediacapture-image/ImageCapture-grabFrame-crash.html b/tests/wpt/web-platform-tests/mediacapture-image/ImageCapture-grabFrame-crash.html new file mode 100644 index 00000000000..d4bf57f0fa9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-image/ImageCapture-grabFrame-crash.html @@ -0,0 +1,11 @@ + + +Repro of https://crbug.com/1374294 + + diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html index 5c5d3e119b7..2bc5999544f 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html @@ -43,7 +43,7 @@ return videoTrack.applyConstraints({advanced: []}); // This test verifies that applyConstraints() rejects the returned Promise if // passed a non-supported image-capture constraint (https://crbug.com/711694). -promise_test(function(t) { +promise_test(async function(t) { var canvas = document.getElementById('canvas'); var context = canvas.getContext("2d"); context.fillStyle = "red"; @@ -54,9 +54,13 @@ promise_test(function(t) { // Use e.g. |torch| as an example of unsupported constraint. assert_false("torch" in videoTrack.getCapabilities()); - return promise_rejects_dom( - t, 'NotSupportedError', - videoTrack.applyConstraints({advanced : [ {torch : true} ]})); + try { + await videoTrack.applyConstraints({advanced : [ {torch : true} ]}); + } catch (error) { + assert_equals(error.name, 'OverconstrainedError'); + return; + } + assert_unreached('expected applyConstraints to reject'); }, 'MediaStreamTrack.applyConstraints() with unsupported constraint'); diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html index ea454385365..3b52dd56936 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html @@ -102,13 +102,17 @@ image_capture_test(async t => { let videoTrack = stream.getVideoTracks()[0]; const constraints = [{ pan: 8 }, { tilt: 9 }]; - await Promise.all(constraints.map(async constraint => - promise_rejects_dom( - t, 'NotSupportedError', - videoTrack.applyConstraints({ advanced: [constraint] }), + await Promise.all(constraints.map(async constraint => { + try { + await videoTrack.applyConstraints({ advanced: [constraint] }); + } catch (error) { + assert_equals(error.name, 'OverconstrainedError'); + return; + } + assert_unreached( "applyConstraints should throw a NotSupportedError for " + - JSON.stringify(constraint)) - )); + JSON.stringify(constraint)); + })); }, 'exercises an applyConstraints() with PTZ permission denied'); diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html index 395ef17ca8b..2935327368d 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html @@ -26,7 +26,7 @@ var makePromiseTest = function(getConstraint) { await videoTrack.applyConstraints(constraints); assert_unreached('expected applyConstraints to reject'); } catch (error) { - assert_equals(error.name, 'NotSupportedError'); + assert_equals(error.name, 'OverconstrainedError'); } }); }; diff --git a/tests/wpt/web-platform-tests/mediacapture-image/takePhoto-without-PhotoCapabilities.https.window.js b/tests/wpt/web-platform-tests/mediacapture-image/takePhoto-without-PhotoCapabilities.https.window.js index 1886dd92f3e..96eb253ccd3 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/takePhoto-without-PhotoCapabilities.https.window.js +++ b/tests/wpt/web-platform-tests/mediacapture-image/takePhoto-without-PhotoCapabilities.https.window.js @@ -1,6 +1,3 @@ -// META: script=/resources/testharness.js -// META: script=/resources/testharnessreport.js - promise_test(async t => { const track = new MediaStreamTrackGenerator('video'); const capturer = new ImageCapture(track); diff --git a/tests/wpt/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackGenerator-in-service-worker.https.html b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackGenerator-in-service-worker.https.html new file mode 100644 index 00000000000..389a30d0d94 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackGenerator-in-service-worker.https.html @@ -0,0 +1,24 @@ + +Test initialize MediaStreamTrackGenerator in a service worker + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackGenerator-in-worker.https.html b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackGenerator-in-worker.https.html index ff3b9459686..e0a8f2fc279 100644 --- a/tests/wpt/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackGenerator-in-worker.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackGenerator-in-worker.https.html @@ -2,25 +2,11 @@ Test creation of MediaStreamTrackGenerator in a worker - diff --git a/tests/wpt/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackProcessor-backpressure.https.html b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackProcessor-backpressure.https.html new file mode 100644 index 00000000000..7b4f88e944f --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackProcessor-backpressure.https.html @@ -0,0 +1,69 @@ + + + + MediaStreamTrackProcessor backpressure + + + +

                                                                      Description

                                                                      +

                                                                      This test checks that MediaStreamTrackProcessor handles backpressure from a WHATWG stream pipeline.

                                                                      + + + + + + + diff --git a/tests/wpt/web-platform-tests/mediacapture-insertable-streams/VideoTrackGenerator.https.html b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/VideoTrackGenerator.https.html new file mode 100644 index 00000000000..2c81c7604ab --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/VideoTrackGenerator.https.html @@ -0,0 +1,327 @@ + + + +MediaStream Insertable Streams - VideoTrackGenerator + + + + + +

                                                                      If prompted, use the accept button to give permission to use your audio and video devices.

                                                                      +

                                                                      Description

                                                                      +

                                                                      This test checks that generating video MediaStreamTracks from VideoTrackGenerator works as expected.

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/mediacapture-insertable-streams/dedicated-worker.js b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/dedicated-worker.js new file mode 100644 index 00000000000..0dbcc32d0b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/dedicated-worker.js @@ -0,0 +1,11 @@ +self.onmessage = (e) => { + try { + const mstg = new MediaStreamTrackGenerator({kind: 'video'}); + if ('enable' in e.data) { + mstg.enabled = e.data.enable; + } + self.postMessage({result: 'Success'}); + } catch (e) { + self.postMessage({result: 'Failure', error: e}); + } +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mediacapture-insertable-streams/service-worker.js b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/service-worker.js new file mode 100644 index 00000000000..05a8b99ad8a --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-insertable-streams/service-worker.js @@ -0,0 +1,8 @@ +self.addEventListener('message', (event) => { + try { + const mstg = new MediaStreamTrackGenerator({ kind: 'video' }); + event.source.postMessage({ result: 'Success' }); + } catch (e) { + event.source.postMessage({ result: 'Failure', error: e }); + }; +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-destroy-script-execution.html b/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-destroy-script-execution.html index 6375004d36b..3e9add3c611 100644 --- a/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-destroy-script-execution.html +++ b/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-destroy-script-execution.html @@ -5,14 +5,34 @@ + + diff --git a/tests/wpt/web-platform-tests/mediacapture-region/CropTarget-fromElement.https.html b/tests/wpt/web-platform-tests/mediacapture-region/CropTarget-fromElement.https.html new file mode 100644 index 00000000000..bc1847e4810 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-region/CropTarget-fromElement.https.html @@ -0,0 +1,92 @@ + + + + + Test CropTarget.fromElement() + + + + +

                                                                      Description

                                                                      +

                                                                      + This test checks for the behavior of CropTarget.fromElement(). +

                                                                      + +
                                                                      + + Alt text +
                                                                      + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices-persistent-permission.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices-persistent-permission.https.html index c53309ca1a9..58aacf9856c 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices-persistent-permission.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices-persistent-permission.https.html @@ -28,7 +28,7 @@ const e = await msgWatcher.wait_for('message'); const iframeDevices = e.data.devices; const kinds = iframeDevices.map(({kind}) => kind); - assert_equals(kinds.length == new Set(kinds).size, "At most one of a kind prior to capture"); + assert_equals(kinds.length, new Set(kinds).size, "At most one of a kind prior to capture"); for (const device of iframeDevices) { assert_equals(device.deviceId, "", "deviceId pre-capture is empty"); assert_equals(device.label, "", "label pre-capture is empty"); diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-produceCropId.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-produceCropId.https.html deleted file mode 100644 index 682caad7e7d..00000000000 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-produceCropId.https.html +++ /dev/null @@ -1,65 +0,0 @@ - - - -Test navigator.mediaDevices.produceCropId() - - - - -

                                                                      Description

                                                                      -

                                                                      This test checks for the behavior of the -navigator.mediaDevices.produceCropId() method.

                                                                      - -
                                                                      - + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigate-from-initial-about-blank.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigate-from-initial-about-blank.html new file mode 100644 index 00000000000..56eaa1af265 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigate-from-initial-about-blank.html @@ -0,0 +1,11 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-back-forward-cross-doc.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-back-forward-cross-doc.html new file mode 100644 index 00000000000..7416caa94b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-back-forward-cross-doc.html @@ -0,0 +1,20 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-back-forward-same-doc.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-back-forward-same-doc.html new file mode 100644 index 00000000000..8182673aa59 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-back-forward-same-doc.html @@ -0,0 +1,40 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-cross-doc.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-cross-doc.html new file mode 100644 index 00000000000..81a4e239bae --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-cross-doc.html @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-intercept.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-intercept.html new file mode 100644 index 00000000000..af0fe104f94 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-intercept.html @@ -0,0 +1,21 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-preventDefault.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-preventDefault.html new file mode 100644 index 00000000000..34b98353ba3 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-preventDefault.html @@ -0,0 +1,10 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-replace-cross-doc.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-replace-cross-doc.html new file mode 100644 index 00000000000..ab762c04bcb --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-replace-cross-doc.html @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-replace-intercept.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-replace-intercept.html new file mode 100644 index 00000000000..33209202d8c --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-replace-intercept.html @@ -0,0 +1,23 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-replace-same-doc.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-replace-same-doc.html new file mode 100644 index 00000000000..f9935973057 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-replace-same-doc.html @@ -0,0 +1,23 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-same-doc.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-same-doc.html new file mode 100644 index 00000000000..87fc28d174a --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-same-doc.html @@ -0,0 +1,21 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-reload-cross-doc.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-reload-cross-doc.html new file mode 100644 index 00000000000..e590cab3828 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-reload-cross-doc.html @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-reload-intercept.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-reload-intercept.html new file mode 100644 index 00000000000..275e23363c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-reload-intercept.html @@ -0,0 +1,21 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-updateCurrentEntry.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-updateCurrentEntry.html new file mode 100644 index 00000000000..4423b2bc90e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/navigation-updateCurrentEntry.html @@ -0,0 +1,20 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/not-on-load.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/not-on-load.html new file mode 100644 index 00000000000..8cc1688913f --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/not-on-load.html @@ -0,0 +1,17 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/properties.html b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/properties.html new file mode 100644 index 00000000000..e862543bcc1 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/currententrychange-event/properties.html @@ -0,0 +1,14 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/focus-reset/autofocus.html b/tests/wpt/web-platform-tests/navigation-api/focus-reset/autofocus.html new file mode 100644 index 00000000000..60444473673 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/focus-reset/autofocus.html @@ -0,0 +1,185 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/focus-reset/basic.html b/tests/wpt/web-platform-tests/navigation-api/focus-reset/basic.html new file mode 100644 index 00000000000..f5a30972b0e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/focus-reset/basic.html @@ -0,0 +1,63 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-again-in-blur-during-intercept.html b/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-again-in-blur-during-intercept.html new file mode 100644 index 00000000000..a7339c97883 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-again-in-blur-during-intercept.html @@ -0,0 +1,35 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-back-to-origial-during-intercept.html b/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-back-to-origial-during-intercept.html new file mode 100644 index 00000000000..4e5b9dfb6aa --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-back-to-origial-during-intercept.html @@ -0,0 +1,36 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-during-intercept.html b/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-during-intercept.html new file mode 100644 index 00000000000..0593231a390 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-during-intercept.html @@ -0,0 +1,34 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-then-remove-during-intercept.html b/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-then-remove-during-intercept.html new file mode 100644 index 00000000000..a5d8062ce08 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/focus-reset/change-focus-then-remove-during-intercept.html @@ -0,0 +1,40 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/focus-reset/multiple-intercept.html b/tests/wpt/web-platform-tests/navigation-api/focus-reset/multiple-intercept.html new file mode 100644 index 00000000000..75e38c98a40 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/focus-reset/multiple-intercept.html @@ -0,0 +1,69 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/focus-reset/resources/helpers.mjs b/tests/wpt/web-platform-tests/navigation-api/focus-reset/resources/helpers.mjs new file mode 100644 index 00000000000..0a8a0439e1c --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/focus-reset/resources/helpers.mjs @@ -0,0 +1,73 @@ +// Usage note: if you use these more than once in a given file, be sure to +// clean up any navigate event listeners, e.g. by using { once: true }, between +// tests. + +const TAB_KEY = "\uE004"; + +export function testFocusWasReset(setupFunc, description) { + promise_test(async t => { + setupFunc(t); + + const button = document.body.appendChild(document.createElement("button")); + const button2 = document.body.appendChild(document.createElement("button")); + button2.tabIndex = 0; + t.add_cleanup(() => { + button.remove(); + button2.remove(); + }); + + assert_equals(document.activeElement, document.body, "Start on body"); + button.focus(); + assert_equals(document.activeElement, button, "focus() worked"); + + const { committed, finished } = navigation.navigate("#" + location.hash.substring(1) + "1"); + + await committed; + assert_equals(document.activeElement, button, "Focus stays on the button during the transition"); + + await finished.catch(() => {}); + assert_equals(document.activeElement, document.body, "Focus reset after the transition"); + + button2.onfocus = t.unreached_func("button2 must not be focused after pressing Tab"); + const focusPromise = waitForFocus(t, button); + await test_driver.send_keys(document.body, TAB_KEY); + await focusPromise; + }, description); +} + +export function testFocusWasNotReset(setupFunc, description) { + promise_test(async t => { + setupFunc(t); + + const button = document.body.appendChild(document.createElement("button")); + const button2 = document.body.appendChild(document.createElement("button")); + button2.tabIndex = 0; + t.add_cleanup(() => { + button.remove(); + button2.remove(); + }); + + assert_equals(document.activeElement, document.body, "Start on body"); + button.focus(); + assert_equals(document.activeElement, button, "focus() worked"); + + const { committed, finished } = navigation.navigate("#" + location.hash.substring(1) + "1"); + + await committed; + assert_equals(document.activeElement, button, "Focus stays on the button during the transition"); + + await finished.catch(() => {}); + assert_equals(document.activeElement, button, "Focus stays on the button after the transition"); + + button.onfocus = t.unreached_func("button must not be focused after pressing Tab"); + const focusPromise = waitForFocus(t, button2); + await test_driver.send_keys(document.body, TAB_KEY); + await focusPromise; + }, description); +} + +function waitForFocus(t, target) { + return new Promise(resolve => { + target.addEventListener("focus", () => resolve(), { once: true }); + }); +} diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-crossdocument-crossorigin-sameorigindomain.sub.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-crossdocument-crossorigin-sameorigindomain.sub.html similarity index 88% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-crossdocument-crossorigin-sameorigindomain.sub.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-crossdocument-crossorigin-sameorigindomain.sub.html index 24abe7f2ef8..676672a230f 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-crossdocument-crossorigin-sameorigindomain.sub.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-crossdocument-crossorigin-sameorigindomain.sub.html @@ -19,12 +19,12 @@ async_test(t => { link.target = iframe.name; document.body.append(link); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => { - iframe.contentWindow.appHistory.onnavigate = t.step_func_done(e => { + iframe.contentWindow.navigation.onnavigate = t.step_func_done(e => { assert_equals(e.navigationType, "push", "navigationType"); assert_true(e.cancelable, "cancelable"); - assert_true(e.canTransition, "canTransition"); + assert_true(e.canIntercept, "canIntercept"); assert_false(e.userInitiated, "userInitiated"); assert_false(e.hashChange, "hashChange"); assert_equals(e.formData, null, "formData"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-crossdocument-crossorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-crossdocument-crossorigin.html similarity index 94% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-crossdocument-crossorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-crossdocument-crossorigin.html index 6fb559ceb12..2f402389126 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-crossdocument-crossorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-crossdocument-crossorigin.html @@ -24,7 +24,7 @@ async_test(t => { assert_equals(e.data, "DONE"); }); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => link.click()); }, "clicking on an element that navigates cross-document targeting a cross-origin window"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-crossdocument-sameorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-crossdocument-sameorigin.html similarity index 85% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-crossdocument-sameorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-crossdocument-sameorigin.html index ed1e8a37cda..41c3ca71eef 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-crossdocument-sameorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-crossdocument-sameorigin.html @@ -7,12 +7,12 @@ diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-samedocument-sameorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-samedocument-sameorigin.html similarity index 85% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-samedocument-sameorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-samedocument-sameorigin.html index a2532fc0269..566bea3dc7e 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/click-samedocument-sameorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/click-samedocument-sameorigin.html @@ -7,10 +7,10 @@ diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-crossdocument-crossorigin-sameorigindomain.sub.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-crossdocument-crossorigin-sameorigindomain.sub.html similarity index 87% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-crossdocument-crossorigin-sameorigindomain.sub.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-crossdocument-crossorigin-sameorigindomain.sub.html index 2623b4bbbce..77a5873c083 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-crossdocument-crossorigin-sameorigindomain.sub.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-crossdocument-crossorigin-sameorigindomain.sub.html @@ -12,12 +12,12 @@ async_test(t => { iframe.src = url; document.body.append(iframe); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => { - iframe.contentWindow.appHistory.onnavigate = t.step_func_done(e => { + iframe.contentWindow.navigation.onnavigate = t.step_func_done(e => { assert_equals(e.navigationType, "push", "navigationType"); assert_true(e.cancelable, "cancelable"); - assert_true(e.canTransition, "canTransition"); + assert_true(e.canIntercept, "canIntercept"); assert_false(e.userInitiated, "userInitiated"); assert_false(e.hashChange, "hashChange"); assert_equals(e.formData, null, "formData"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-crossdocument-crossorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-crossdocument-crossorigin.html similarity index 93% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-crossdocument-crossorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-crossdocument-crossorigin.html index b0f031cf924..79df86fdc9b 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-crossdocument-crossorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-crossdocument-crossorigin.html @@ -17,7 +17,7 @@ async_test(t => { assert_equals(e.data, "DONE"); }); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => iframe.contentWindow.location.href = iframeURL + "?postMessage-top-when-done"); }, "using location.href to navigate cross-document targeting a cross-origin window"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-crossdocument-sameorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-crossdocument-sameorigin.html similarity index 85% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-crossdocument-sameorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-crossdocument-sameorigin.html index 02329697a39..41ac1b03750 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-crossdocument-sameorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-crossdocument-sameorigin.html @@ -6,10 +6,10 @@ diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-samedocument-crossorigin-sameorigindomain.sub.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-crossorigin-sameorigindomain.sub.html similarity index 87% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-samedocument-crossorigin-sameorigindomain.sub.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-crossorigin-sameorigindomain.sub.html index ec9723619f2..1eda74e9828 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-samedocument-crossorigin-sameorigindomain.sub.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-crossorigin-sameorigindomain.sub.html @@ -12,12 +12,12 @@ async_test(t => { iframe.src = url; document.body.append(iframe); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => { - iframe.contentWindow.appHistory.onnavigate = t.step_func_done(e => { + iframe.contentWindow.navigation.onnavigate = t.step_func_done(e => { assert_equals(e.navigationType, "push", "navigationType"); assert_true(e.cancelable, "cancelable"); - assert_true(e.canTransition, "canTransition"); + assert_true(e.canIntercept, "canIntercept"); assert_false(e.userInitiated, "userInitiated"); assert_true(e.hashChange, "hashChange"); assert_equals(e.formData, null, "formData"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-samedocument-crossorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-crossorigin.html similarity index 91% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-samedocument-crossorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-crossorigin.html index b5d4fbfd07a..5679236a7dd 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-samedocument-crossorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-crossorigin.html @@ -15,7 +15,7 @@ async_test(t => { window.onmessage = t.step_func_done(e => { assert_equals(e.data.navigationType, "push", "navigationType"); assert_true(e.data.cancelable, "cancelable"); - assert_true(e.data.canTransition, "canTransition"); + assert_true(e.data.canIntercept, "canIntercept"); assert_false(e.data.userInitiated, "userInitiated"); assert_true(e.data.hashChange, "hashChange"); assert_equals(e.data.formData, null, "formData"); @@ -26,7 +26,7 @@ async_test(t => { assert_equals(e.data.destination.index, -1, "destination.index"); }); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => iframe.contentWindow.location.href = iframeURL + "#foo"); }, "using location.href to navigate same-document targeting a cross-origin window"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-samedocument-sameorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-sameorigin.html similarity index 85% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-samedocument-sameorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-sameorigin.html index 634b4f77567..a7e4181c3a1 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/location-samedocument-sameorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-sameorigin.html @@ -6,10 +6,10 @@ diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-crossdocument-crossorigin-sameorigindomain.sub.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-crossdocument-crossorigin-sameorigindomain.sub.html similarity index 87% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-crossdocument-crossorigin-sameorigindomain.sub.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-crossdocument-crossorigin-sameorigindomain.sub.html index edbcee53ef7..ea9ea479c34 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-crossdocument-crossorigin-sameorigindomain.sub.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-crossdocument-crossorigin-sameorigindomain.sub.html @@ -13,12 +13,12 @@ async_test(t => { iframe.src = url; document.body.append(iframe); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => { - iframe.contentWindow.appHistory.onnavigate = t.step_func_done(e => { + iframe.contentWindow.navigation.onnavigate = t.step_func_done(e => { assert_equals(e.navigationType, "push", "navigationType"); assert_true(e.cancelable, "cancelable"); - assert_true(e.canTransition, "canTransition"); + assert_true(e.canIntercept, "canIntercept"); assert_false(e.userInitiated, "userInitiated"); assert_false(e.hashChange, "hashChange"); assert_equals(e.formData, null, "formData"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-crossdocument-crossorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-crossdocument-crossorigin.html similarity index 93% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-crossdocument-crossorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-crossdocument-crossorigin.html index 88e975ae5dc..73ede89cbf0 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-crossdocument-crossorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-crossdocument-crossorigin.html @@ -18,7 +18,7 @@ async_test(t => { assert_equals(e.data, "DONE"); }); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => window.open(iframeURL + "?postMessage-top-when-done", "windowname")); }, "using window.open() to navigate cross-document targeting a cross-origin window"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-crossdocument-sameorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-crossdocument-sameorigin.html similarity index 85% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-crossdocument-sameorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-crossdocument-sameorigin.html index 8a23dce2419..478483e238d 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-crossdocument-sameorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-crossdocument-sameorigin.html @@ -6,10 +6,10 @@ diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-samedocument-crossorigin-sameorigindomain.sub.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-crossorigin-sameorigindomain.sub.html similarity index 87% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-samedocument-crossorigin-sameorigindomain.sub.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-crossorigin-sameorigindomain.sub.html index c072ed9d5fe..324adb32a45 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-samedocument-crossorigin-sameorigindomain.sub.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-crossorigin-sameorigindomain.sub.html @@ -13,12 +13,12 @@ async_test(t => { iframe.src = url; document.body.append(iframe); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => { - iframe.contentWindow.appHistory.onnavigate = t.step_func_done(e => { + iframe.contentWindow.navigation.onnavigate = t.step_func_done(e => { assert_equals(e.navigationType, "push", "navigationType"); assert_true(e.cancelable, "cancelable"); - assert_true(e.canTransition, "canTransition"); + assert_true(e.canIntercept, "canIntercept"); assert_false(e.userInitiated, "userInitiated"); assert_true(e.hashChange, "hashChange"); assert_equals(e.formData, null, "formData"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-samedocument-crossorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-crossorigin.html similarity index 92% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-samedocument-crossorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-crossorigin.html index e7fe633e0da..23dceb04204 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-samedocument-crossorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-crossorigin.html @@ -16,7 +16,7 @@ async_test(t => { window.onmessage = t.step_func_done(e => { assert_equals(e.data.navigationType, "push", "navigationType"); assert_true(e.data.cancelable, "cancelable"); - assert_true(e.data.canTransition, "canTransition"); + assert_true(e.data.canIntercept, "canIntercept"); assert_false(e.data.userInitiated, "userInitiated"); assert_true(e.data.hashChange, "hashChange"); assert_equals(e.data.formData, null, "formData"); @@ -27,7 +27,7 @@ async_test(t => { assert_equals(e.data.destination.index, -1, "destination.index"); }); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => window.open(iframeURL + "#foo", "windowname")); }, "using window.open() to navigate same-document targeting a cross-origin window"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-samedocument-sameorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-sameorigin.html similarity index 85% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-samedocument-sameorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-sameorigin.html index bab81615cbe..9ca85318034 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/open-samedocument-sameorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-sameorigin.html @@ -6,10 +6,10 @@ diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/resources/cross-origin-iframe-helper.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/resources/cross-origin-iframe-helper.html similarity index 87% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/resources/cross-origin-iframe-helper.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/resources/cross-origin-iframe-helper.html index 48a5e1d63d9..3393a2ecaa9 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/resources/cross-origin-iframe-helper.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/resources/cross-origin-iframe-helper.html @@ -1,9 +1,10 @@ + diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-crossdocument-sameorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-crossdocument-sameorigin.html similarity index 85% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-crossdocument-sameorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-crossdocument-sameorigin.html index 45523532243..05347335a19 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-crossdocument-sameorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-crossdocument-sameorigin.html @@ -7,10 +7,10 @@ diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-samedocument-crossorigin-sameorigindomain.sub.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-crossorigin-sameorigindomain.sub.html similarity index 88% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-samedocument-crossorigin-sameorigindomain.sub.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-crossorigin-sameorigindomain.sub.html index 4f84e6aef35..9e64a0124da 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-samedocument-crossorigin-sameorigindomain.sub.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-crossorigin-sameorigindomain.sub.html @@ -19,12 +19,12 @@ async_test(t => { form.target = iframe.name; document.body.append(form); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => { - iframe.contentWindow.appHistory.onnavigate = t.step_func_done(e => { + iframe.contentWindow.navigation.onnavigate = t.step_func_done(e => { assert_equals(e.navigationType, "push", "navigationType"); assert_true(e.cancelable, "cancelable"); - assert_true(e.canTransition, "canTransition"); + assert_true(e.canIntercept, "canIntercept"); assert_false(e.userInitiated, "userInitiated"); assert_true(e.hashChange, "hashChange"); assert_equals(e.formData, null, "formData"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-samedocument-crossorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-crossorigin.html similarity index 92% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-samedocument-crossorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-crossorigin.html index 7e25d174713..e53a1f93e7a 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-samedocument-crossorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-crossorigin.html @@ -22,7 +22,7 @@ async_test(t => { window.onmessage = t.step_func_done(e => { assert_equals(e.data.navigationType, "push", "navigationType"); assert_true(e.data.cancelable, "cancelable"); - assert_true(e.data.canTransition, "canTransition"); + assert_true(e.data.canIntercept, "canIntercept"); assert_false(e.data.userInitiated, "userInitiated"); assert_true(e.data.hashChange, "hashChange"); assert_equals(e.data.formData, null, "formData"); @@ -33,7 +33,7 @@ async_test(t => { assert_equals(e.data.destination.index, -1, "destination.index"); }); - appHistory.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); + navigation.onnavigate = t.unreached_func("onnavigate must not fire in the source window"); window.onload = t.step_func(() => form.submit()); }, "submitting a
                                                                      element that navigates same-document targeting a cross-origin window"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-samedocument-sameorigin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-sameorigin.html similarity index 85% rename from tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-samedocument-sameorigin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-sameorigin.html index 12de577cb66..43aa3226fcd 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/cross-window/submit-samedocument-sameorigin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-sameorigin.html @@ -7,10 +7,10 @@ diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/event-constructor.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/event-constructor.html new file mode 100644 index 00000000000..065884240e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/event-constructor.html @@ -0,0 +1,96 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-after-dispatch.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-after-dispatch.html new file mode 100644 index 00000000000..abb328050d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-after-dispatch.html @@ -0,0 +1,16 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-and-navigate.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-and-navigate.html new file mode 100644 index 00000000000..dfbb67b6b6b --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-and-navigate.html @@ -0,0 +1,27 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-canceled-event.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-canceled-event.html new file mode 100644 index 00000000000..d4b9633c1a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-canceled-event.html @@ -0,0 +1,17 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-cross-document-same-origin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-cross-document-same-origin.html new file mode 100644 index 00000000000..0d610cce4f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-cross-document-same-origin.html @@ -0,0 +1,21 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-cross-origin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-cross-origin.html new file mode 100644 index 00000000000..b367df546c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-cross-origin.html @@ -0,0 +1,18 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-detach-multiple.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-detach-multiple.html new file mode 100644 index 00000000000..5b6a6232849 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-detach-multiple.html @@ -0,0 +1,18 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-detach.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-detach.html new file mode 100644 index 00000000000..b5ce45aa29c --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-detach.html @@ -0,0 +1,17 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-handler-null-or-undefined.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-handler-null-or-undefined.html new file mode 100644 index 00000000000..7f5bd6b19f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-handler-null-or-undefined.html @@ -0,0 +1,21 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-handler-returns-non-promise.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-handler-returns-non-promise.html new file mode 100644 index 00000000000..96116e92953 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-handler-returns-non-promise.html @@ -0,0 +1,18 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-handler-throws.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-handler-throws.html new file mode 100644 index 00000000000..769f6759997 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-handler-throws.html @@ -0,0 +1,26 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-history-pushState.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-history-pushState.html new file mode 100644 index 00000000000..aad08b742ef --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-history-pushState.html @@ -0,0 +1,23 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-history-replaceState.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-history-replaceState.html new file mode 100644 index 00000000000..16edec8596e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-history-replaceState.html @@ -0,0 +1,23 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-multiple-times-reject.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-multiple-times-reject.html new file mode 100644 index 00000000000..0b0f1f0b8e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-multiple-times-reject.html @@ -0,0 +1,38 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-multiple-times.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-multiple-times.html new file mode 100644 index 00000000000..6deaeeb507d --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-multiple-times.html @@ -0,0 +1,41 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-navigation-back.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-navigation-back.html new file mode 100644 index 00000000000..8babf2bcdcc --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-navigation-back.html @@ -0,0 +1,19 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-on-synthetic-event.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-on-synthetic-event.html new file mode 100644 index 00000000000..3a4b54de5e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-on-synthetic-event.html @@ -0,0 +1,17 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-popstate.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-popstate.html new file mode 100644 index 00000000000..f5f9d82be7f --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-popstate.html @@ -0,0 +1,26 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-reject.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-reject.html new file mode 100644 index 00000000000..4c5ec0163d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-reject.html @@ -0,0 +1,29 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-resolve.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-resolve.html new file mode 100644 index 00000000000..b60d89b5dfe --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-resolve.html @@ -0,0 +1,20 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-same-document-history-back.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-same-document-history-back.html new file mode 100644 index 00000000000..6faabe19646 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/intercept-same-document-history-back.html @@ -0,0 +1,40 @@ + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-anchor-cross-origin.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-anchor-cross-origin.html similarity index 84% rename from tests/wpt/web-platform-tests/app-history/navigate-event/navigate-anchor-cross-origin.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-anchor-cross-origin.html index a6d395a35eb..d8f2e383124 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-anchor-cross-origin.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-anchor-cross-origin.html @@ -4,13 +4,14 @@ + + + + +Click me + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-anchor-download.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-anchor-download.html new file mode 100644 index 00000000000..c5ca306b790 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-anchor-download.html @@ -0,0 +1,34 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-anchor-fragment.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-anchor-fragment.html similarity index 86% rename from tests/wpt/web-platform-tests/app-history/navigate-event/navigate-anchor-fragment.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-anchor-fragment.html index 77cf94a4059..b7706b7debe 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-anchor-fragment.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-anchor-fragment.html @@ -4,12 +4,13 @@ diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-destination-getState-navigate.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-destination-getState-navigate.html similarity index 89% rename from tests/wpt/web-platform-tests/app-history/navigate-event/navigate-destination-getState-navigate.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-destination-getState-navigate.html index 43ca7b42c47..9c34c5753a1 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-destination-getState-navigate.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-destination-getState-navigate.html @@ -7,7 +7,7 @@ async_test(t => { // into a replace navigation. window.onload = () => t.step_timeout(() => { let navState = { statevar: "state" }; - appHistory.onnavigate = t.step_func_done(e => { + navigation.onnavigate = t.step_func_done(e => { assert_equals(e.navigationType, "push"); assert_not_equals(e.destination, null); assert_not_equals(e.destination.getState(), undefined); @@ -17,7 +17,7 @@ async_test(t => { assert_equals(e.destination.id, null); assert_equals(e.destination.index, -1); }); - appHistory.navigate("#foo", { state: navState }); + navigation.navigate("#foo", { state: navState }); }, 0); }, "navigate event destination.getState() should be the state given to navigate()"); diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-form-get.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-form-get.html similarity index 86% rename from tests/wpt/web-platform-tests/app-history/navigate-event/navigate-form-get.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-form-get.html index 843849154d1..69a49eb08a6 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-form-get.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-form-get.html @@ -4,14 +4,15 @@
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-history-go-0.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-history-go-0.html similarity index 85% rename from tests/wpt/web-platform-tests/app-history/navigate-event/navigate-history-go-0.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-history-go-0.html index 2070614deb9..96d98cf44c8 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-history-go-0.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-history-go-0.html @@ -5,12 +5,13 @@ + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-navigation-back-same-document.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-navigation-back-same-document.html new file mode 100644 index 00000000000..8753e6b1c86 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-navigation-back-same-document.html @@ -0,0 +1,32 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-navigation-navigate.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-navigation-navigate.html new file mode 100644 index 00000000000..76f98c72361 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-navigation-navigate.html @@ -0,0 +1,22 @@ + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-to-javascript.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-to-javascript.html similarity index 80% rename from tests/wpt/web-platform-tests/app-history/navigate-event/navigate-to-javascript.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-to-javascript.html index 53ce37a0220..78f490d87b9 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/navigate-to-javascript.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-to-javascript.html @@ -6,9 +6,9 @@ diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/resources/meta-refresh.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/resources/meta-refresh.html similarity index 100% rename from tests/wpt/web-platform-tests/app-history/navigate-event/resources/meta-refresh.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/resources/meta-refresh.html diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/resources/navigatesuccess-cross-document-helper.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/resources/navigatesuccess-cross-document-helper.html new file mode 100644 index 00000000000..aabc5015a96 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/resources/navigatesuccess-cross-document-helper.html @@ -0,0 +1,6 @@ + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-detach-in-onnavigate.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-detach-in-onnavigate.html similarity index 76% rename from tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-detach-in-onnavigate.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-detach-in-onnavigate.html index 19ab7ae414b..467ea888993 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-detach-in-onnavigate.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-detach-in-onnavigate.html @@ -9,13 +9,13 @@ promise_test(async t => { let iframe_typeerror = i.contentWindow.TypeError; let abort_signal; let onabort_called = false; - i.contentWindow.appHistory.onnavigate = t.step_func(e => { + i.contentWindow.navigation.onnavigate = t.step_func(e => { abort_signal = e.signal; abort_signal.onabort = () => onabort_called = true; i.remove(); }); - await promise_rejects_dom(t, 'AbortError', iframe_constructor, i.contentWindow.appHistory.navigate("#1").committed); + await promise_rejects_dom(t, 'AbortError', iframe_constructor, i.contentWindow.navigation.navigate("#1").committed); assert_true(abort_signal.aborted); assert_true(onabort_called); -}, "window detach inside AppHistoryNavigateEvent signals AppHistoryNavigateEvent.signal"); +}, "window detach inside a navigate event signals event.signal"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-intercept.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-intercept.html new file mode 100644 index 00000000000..1e92d8e445f --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-intercept.html @@ -0,0 +1,18 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-preventDefault.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-preventDefault.html new file mode 100644 index 00000000000..60fed90ce6c --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-preventDefault.html @@ -0,0 +1,19 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-window-stop-after-intercept.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-window-stop-after-intercept.html new file mode 100644 index 00000000000..51ba7753a8a --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-window-stop-after-intercept.html @@ -0,0 +1,40 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-window-stop-in-onnavigate.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-window-stop-in-onnavigate.html new file mode 100644 index 00000000000..1b406c42d36 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-window-stop-in-onnavigate.html @@ -0,0 +1,24 @@ + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-window-stop.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-window-stop.html similarity index 75% rename from tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-window-stop.html rename to tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-window-stop.html index 03c36f7f6d6..43e005e8b41 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate-event/signal-abort-window-stop.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/signal-abort-window-stop.html @@ -6,12 +6,12 @@ async_test(t => { window.onload = t.step_func(() => { let abort_signal; let onabort_called = false; - appHistory.onnavigatesuccess = t.unreached_func("onnavigatesuccess"); - appHistory.onnavigate = t.step_func(e => { + navigation.onnavigatesuccess = t.unreached_func("onnavigatesuccess"); + navigation.onnavigate = t.step_func(e => { abort_signal = e.signal; abort_signal.onabort = () => onabort_called = true; }); - appHistory.navigate("?1"); + navigation.navigate("?1"); window.stop(); assert_true(abort_signal.aborted); assert_true(onabort_called); @@ -19,5 +19,5 @@ async_test(t => { // didn't fire on a microtask. t.step_timeout(t.step_func_done(() => {}), 0); }); -}, "window.stop() signals AppHistoryNavigateEvent.signal"); +}, "window.stop() signals event.signal"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/after-detach.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/after-detach.html new file mode 100644 index 00000000000..c4ecfec44d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/after-detach.html @@ -0,0 +1,30 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/current-basic.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/current-basic.html new file mode 100644 index 00000000000..78bbbb05607 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/current-basic.html @@ -0,0 +1,107 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-across-origins.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-across-origins.html similarity index 80% rename from tests/wpt/web-platform-tests/app-history/app-history-entry/entries-across-origins.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-across-origins.html index b6e8e9ee734..447273bff2c 100644 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-across-origins.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-across-origins.html @@ -7,8 +7,8 @@ diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-bfcache-in-iframe.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-bfcache-in-iframe.html new file mode 100644 index 00000000000..b54a7499509 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-bfcache-in-iframe.html @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-bfcache.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-bfcache.html new file mode 100644 index 00000000000..ef93d1e27e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-bfcache.html @@ -0,0 +1,60 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-blank-navigation-from-cross-origin.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-blank-navigation-from-cross-origin.html new file mode 100644 index 00000000000..d527637ed35 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-blank-navigation-from-cross-origin.html @@ -0,0 +1,22 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-blank-navigation.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-blank-navigation.html similarity index 87% rename from tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-blank-navigation.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-blank-navigation.html index 60068561d14..f54ae06e148 100644 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-blank-navigation.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-blank-navigation.html @@ -7,7 +7,7 @@ async_test(t => { window.onload = t.step_func(() => { i.onload = t.step_func_done(() => { - let entries = i.contentWindow.appHistory.entries(); + let entries = i.contentWindow.navigation.entries(); assert_equals(entries.length, 2); assert_not_equals(entries[1].key, entries[0].key); assert_not_equals(entries[1].url, entries[0].url); @@ -21,5 +21,5 @@ async_test(t => { }); i.src = "about:blank"; }); -}, "AppHistory behavior after navigation to about:blank"); +}, "entries() after navigation to about:blank"); diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-blob-navigation.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-blob-navigation.html similarity index 87% rename from tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-blob-navigation.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-blob-navigation.html index c1ce46d1fbd..67611f4d446 100644 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-blob-navigation.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-blob-navigation.html @@ -7,7 +7,7 @@ async_test(t => { window.onload = t.step_func(() => { i.onload = t.step_func_done(() => { - let entries = i.contentWindow.appHistory.entries(); + let entries = i.contentWindow.navigation.entries(); assert_equals(entries.length, 2); assert_not_equals(entries[1].key, entries[0].key); assert_not_equals(entries[1].url, entries[0].url); @@ -21,5 +21,5 @@ async_test(t => { }); i.src = URL.createObjectURL(new Blob([""])); }); -}, "AppHistory behavior after navigation to a blob: url"); +}, "entries() after navigation to a blob: URL"); diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-cross-document-forward-pruning.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-cross-document-forward-pruning.html similarity index 83% rename from tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-cross-document-forward-pruning.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-cross-document-forward-pruning.html index 4888a5be738..ddd1ad571dd 100644 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-cross-document-forward-pruning.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-cross-document-forward-pruning.html @@ -24,10 +24,10 @@ promise_test(async (t) => { i.contentWindow.location.search = "?fork"; await new Promise(r => i.onload = () => t.step_timeout(r, 0)); - const entries = i.contentWindow.appHistory.entries(); + const entries = i.contentWindow.navigation.entries(); const searches = entries.map(e => (new URL(e.url)).search); assert_array_equals(searches, ["", "?fork"]); - assert_equals(i.contentWindow.appHistory.entries().at(-1), i.contentWindow.appHistory.current); -}, "appHistory.entries() behavior after forward-pruning due to cross-document navs"); + assert_equals(i.contentWindow.navigation.entries().at(-1), i.contentWindow.navigation.currentEntry); +}, "navigation.entries() behavior after forward-pruning due to cross-document navs"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-javascript-url-navigation.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-javascript-url-navigation.html new file mode 100644 index 00000000000..c5ef7f33e42 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-javascript-url-navigation.html @@ -0,0 +1,38 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-navigations-in-multiple-windows.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-navigations-in-multiple-windows.html similarity index 80% rename from tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-navigations-in-multiple-windows.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-navigations-in-multiple-windows.html index 55cb58ea002..d1d4d86eb38 100644 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-navigations-in-multiple-windows.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-navigations-in-multiple-windows.html @@ -5,7 +5,7 @@ diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-srcdoc-navigation.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-srcdoc-navigation.html similarity index 87% rename from tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-srcdoc-navigation.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-srcdoc-navigation.html index cfb1337cabf..b80e8aa0e21 100644 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/entries-after-srcdoc-navigation.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-after-srcdoc-navigation.html @@ -7,7 +7,7 @@ async_test(t => { window.onload = t.step_func(() => { i.onload = t.step_func_done(() => { - let entries = i.contentWindow.appHistory.entries(); + let entries = i.contentWindow.navigation.entries(); assert_equals(entries.length, 2); assert_not_equals(entries[1].key, entries[0].key); assert_not_equals(entries[1].url, entries[0].url); @@ -21,5 +21,5 @@ async_test(t => { }); i.srcdoc = "new"; }); -}, "AppHistory behavior after setting a srcdoc attribute"); +}, "entries() after setting a srcdoc attribute"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-array-equality.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-array-equality.html new file mode 100644 index 00000000000..98efb6b20c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-array-equality.html @@ -0,0 +1,8 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-in-new-javascript-url-iframe.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-in-new-javascript-url-iframe.html new file mode 100644 index 00000000000..6f217f5e3c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-in-new-javascript-url-iframe.html @@ -0,0 +1,15 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-in-new-srcdoc-iframe.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-in-new-srcdoc-iframe.html new file mode 100644 index 00000000000..a7e0f88d37a --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-in-new-srcdoc-iframe.html @@ -0,0 +1,15 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-when-inactive.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-when-inactive.html new file mode 100644 index 00000000000..c70b6d8bf87 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entries-when-inactive.html @@ -0,0 +1,16 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entry-after-detach.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entry-after-detach.html new file mode 100644 index 00000000000..69c52d14098 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/entry-after-detach.html @@ -0,0 +1,20 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/index-not-in-entries.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/index-not-in-entries.html new file mode 100644 index 00000000000..a16d130ba16 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/index-not-in-entries.html @@ -0,0 +1,24 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-back-cross-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-back-cross-document.html new file mode 100644 index 00000000000..2dd58c03e9d --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-back-cross-document.html @@ -0,0 +1,15 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-back-same-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-back-same-document.html new file mode 100644 index 00000000000..858b5fd2c89 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-back-same-document.html @@ -0,0 +1,24 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-reload-intercept.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-reload-intercept.html new file mode 100644 index 00000000000..62ce0974399 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-reload-intercept.html @@ -0,0 +1,23 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-reload.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-reload.html new file mode 100644 index 00000000000..f950e2f3a21 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-reload.html @@ -0,0 +1,18 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-replace-cross-origin.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-replace-cross-origin.html new file mode 100644 index 00000000000..65aff4a3abc --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-replace-cross-origin.html @@ -0,0 +1,17 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-replace.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-replace.html new file mode 100644 index 00000000000..a58772a7f47 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-replace.html @@ -0,0 +1,18 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/no-referrer-dynamic-url-censored.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/no-referrer-dynamic-url-censored.html new file mode 100644 index 00000000000..7a5544c4196 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/no-referrer-dynamic-url-censored.html @@ -0,0 +1,33 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/no-referrer-from-meta-url-censored.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/no-referrer-from-meta-url-censored.html new file mode 100644 index 00000000000..fc563f509e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/no-referrer-from-meta-url-censored.html @@ -0,0 +1,32 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/no-referrer-url-censored.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/no-referrer-url-censored.html new file mode 100644 index 00000000000..e7eb1afc7d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/no-referrer-url-censored.html @@ -0,0 +1,32 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/opaque-origin-data-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/opaque-origin-data-url.html new file mode 100644 index 00000000000..65123fa60ba --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/opaque-origin-data-url.html @@ -0,0 +1,17 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/opaque-origin.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/opaque-origin.html similarity index 100% rename from tests/wpt/web-platform-tests/app-history/app-history-entry/opaque-origin.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/opaque-origin.html diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/resources/is_uuid.js b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/is_uuid.js similarity index 100% rename from tests/wpt/web-platform-tests/app-history/app-history-entry/resources/is_uuid.js rename to tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/is_uuid.js diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/key-navigate-back-cross-document-helper.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/key-navigate-back-cross-document-helper.html new file mode 100644 index 00000000000..79f3c3da0ae --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/key-navigate-back-cross-document-helper.html @@ -0,0 +1,27 @@ + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/no-referrer-meta.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/no-referrer-meta.html new file mode 100644 index 00000000000..bd5ec391cce --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/no-referrer-meta.html @@ -0,0 +1,2 @@ + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/no-referrer.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/no-referrer.html new file mode 100644 index 00000000000..c8b7661f422 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/no-referrer.html @@ -0,0 +1 @@ + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/no-referrer.html.headers b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/no-referrer.html.headers new file mode 100644 index 00000000000..7ffbf17d6be --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/no-referrer.html.headers @@ -0,0 +1 @@ +Referrer-Policy: no-referrer diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/opaque-origin-page.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/opaque-origin-page.html new file mode 100644 index 00000000000..98e2c1b3175 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/opaque-origin-page.html @@ -0,0 +1,25 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/post-entries-length-to-top.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/post-entries-length-to-top.html new file mode 100644 index 00000000000..c8fe005d8ef --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/post-entries-length-to-top.html @@ -0,0 +1,7 @@ + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/post-key-to-top.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/post-key-to-top.html new file mode 100644 index 00000000000..285f345dc1f --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/resources/post-key-to-top.html @@ -0,0 +1,3 @@ + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-fragment-navigate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-fragment-navigate.html new file mode 100644 index 00000000000..a197f825d8e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-fragment-navigate.html @@ -0,0 +1,30 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-navigate-restore.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-navigate-restore.html new file mode 100644 index 00000000000..fd21bc222f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-navigate-restore.html @@ -0,0 +1,25 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/app-history-entry/sameDocument-after-navigate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-navigate.html similarity index 77% rename from tests/wpt/web-platform-tests/app-history/app-history-entry/sameDocument-after-navigate.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-navigate.html index 1e984b336a6..bfcb7c65997 100644 --- a/tests/wpt/web-platform-tests/app-history/app-history-entry/sameDocument-after-navigate.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-navigate.html @@ -5,10 +5,10 @@ diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/state-after-navigate-restore.html b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/state-after-navigate-restore.html new file mode 100644 index 00000000000..097b1d50795 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-history-entry/state-after-navigate-restore.html @@ -0,0 +1,27 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/back-forward-multiple-frames.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/back-forward-multiple-frames.html new file mode 100644 index 00000000000..738bfd37dcc --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/back-forward-multiple-frames.html @@ -0,0 +1,74 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-back.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-back.html new file mode 100644 index 00000000000..d44d435896d --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-back.html @@ -0,0 +1,32 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-forward.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-forward.html new file mode 100644 index 00000000000..e252e309941 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-forward.html @@ -0,0 +1,40 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-traverseTo-back-multiple.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-traverseTo-back-multiple.html new file mode 100644 index 00000000000..03a8eb10ede --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-traverseTo-back-multiple.html @@ -0,0 +1,35 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-traverseTo-forward-multiple.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-traverseTo-forward-multiple.html new file mode 100644 index 00000000000..f8e78c4b1d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/disambigaute-traverseTo-forward-multiple.html @@ -0,0 +1,39 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/forward-to-pruned-entry.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/forward-to-pruned-entry.html new file mode 100644 index 00000000000..b8bd36ef061 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/forward-to-pruned-entry.html @@ -0,0 +1,31 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-base-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-base-url.html new file mode 100644 index 00000000000..00fefa6608f --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-base-url.html @@ -0,0 +1,15 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-from-initial-about-blank-src.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-from-initial-about-blank-src.html new file mode 100644 index 00000000000..2044b33cf02 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-from-initial-about-blank-src.html @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-from-initial-about-blank.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-from-initial-about-blank.html new file mode 100644 index 00000000000..d494ec468ce --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-from-initial-about-blank.html @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-history-state-replace.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-state-replace.html similarity index 77% rename from tests/wpt/web-platform-tests/app-history/navigate/navigate-history-state-replace.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-state-replace.html index b4b9559fb56..bf0af521da9 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-history-state-replace.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-state-replace.html @@ -7,8 +7,8 @@ promise_test(async () => { assert_equals(history.state, "state1"); let onnavigate_called = false; - appHistory.onnavigate = () => onnavigate_called = true; - await appHistory.navigate("#2", { replace: true }).committed; + navigation.onnavigate = () => onnavigate_called = true; + await navigation.navigate("#2", { history: "replace" }).committed; assert_equals(location.hash, "#2"); assert_true(onnavigate_called); assert_equals(history.state, null); diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-history-state.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-state.html similarity index 81% rename from tests/wpt/web-platform-tests/app-history/navigate/navigate-history-state.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-state.html index 8853c0616e3..0541636de50 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-history-state.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-state.html @@ -7,8 +7,8 @@ promise_test(async () => { assert_equals(history.state, "state1"); let onnavigate_called = false; - appHistory.onnavigate = () => onnavigate_called = true; - await appHistory.navigate("#2").committed; + navigation.onnavigate = () => onnavigate_called = true; + await navigation.navigate("#2").committed; assert_equals(location.hash, "#2"); assert_true(onnavigate_called); assert_equals(history.state, null); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-info-and-state.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-info-and-state.html new file mode 100644 index 00000000000..828d7daea57 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-info-and-state.html @@ -0,0 +1,18 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-intercept-history-state.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-intercept-history-state.html new file mode 100644 index 00000000000..7faf6ffb5a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-intercept-history-state.html @@ -0,0 +1,14 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-relative-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-relative-url.html new file mode 100644 index 00000000000..cc95d5e0038 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-relative-url.html @@ -0,0 +1,16 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-replace-cross-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-replace-cross-document.html new file mode 100644 index 00000000000..7f016babe6b --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-replace-cross-document.html @@ -0,0 +1,29 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-replace-same-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-replace-same-document.html new file mode 100644 index 00000000000..0d8493b7882 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-replace-same-document.html @@ -0,0 +1,21 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-same-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-same-document.html new file mode 100644 index 00000000000..9ffd8248f84 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-same-document.html @@ -0,0 +1,23 @@ + + + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-state-repeated-await.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-state-repeated-await.html new file mode 100644 index 00000000000..539b3dc1da9 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-state-repeated-await.html @@ -0,0 +1,13 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-state-repeated.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-state-repeated.html new file mode 100644 index 00000000000..227bbb0cfcc --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-state-repeated.html @@ -0,0 +1,20 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-base-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-base-url.html new file mode 100644 index 00000000000..1e8d3b90c34 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-base-url.html @@ -0,0 +1,16 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-info.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-info.html new file mode 100644 index 00000000000..637f6976adb --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-info.html @@ -0,0 +1,47 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/reload-navigation-timing.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-navigation-timing.html similarity index 93% rename from tests/wpt/web-platform-tests/app-history/navigate/reload-navigation-timing.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-navigation-timing.html index a24e33ff11a..ce03e7a7ca3 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/reload-navigation-timing.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-navigation-timing.html @@ -5,7 +5,7 @@ + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/reload-service-worker-fetch-event.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-service-worker-fetch-event.html similarity index 96% rename from tests/wpt/web-platform-tests/app-history/navigate/reload-service-worker-fetch-event.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-service-worker-fetch-event.html index 4d078e45f6b..67535c70bf7 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/reload-service-worker-fetch-event.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-service-worker-fetch-event.html @@ -18,7 +18,7 @@ promise_test(async t => { const frame = await with_iframe(scope); assert_equals(frame.contentDocument.body.textContent, "method = GET, isReloadNavigation = false"); - frame.contentWindow.appHistory.reload(); + frame.contentWindow.navigation.reload(); await new Promise(resolve => frame.addEventListener("load", resolve, { once: true })); assert_equals(frame.contentDocument.body.textContent, "method = GET, isReloadNavigation = true"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-state-and-info.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-state-and-info.html new file mode 100644 index 00000000000..1ba26ae3da4 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-state-and-info.html @@ -0,0 +1,40 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-state-undefined.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-state-undefined.html new file mode 100644 index 00000000000..b8b34650abf --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/reload-state-undefined.html @@ -0,0 +1,39 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/resources/fetch-event-test-worker.js b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/fetch-event-test-worker.js similarity index 100% rename from tests/wpt/web-platform-tests/app-history/navigate/resources/fetch-event-test-worker.js rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/fetch-event-test-worker.js diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/navigate-parent.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/navigate-parent.html new file mode 100644 index 00000000000..8584bb5774a --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/navigate-parent.html @@ -0,0 +1,6 @@ + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/navigate-sibling.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/navigate-sibling.html new file mode 100644 index 00000000000..29a5ee7390d --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/navigate-sibling.html @@ -0,0 +1,6 @@ + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/navigation-back.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/navigation-back.html new file mode 100644 index 00000000000..a1441801acf --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/navigation-back.html @@ -0,0 +1,6 @@ + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/resources/page-with-base-url-common.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/page-with-base-url-common.html similarity index 100% rename from tests/wpt/web-platform-tests/app-history/navigate/resources/page-with-base-url-common.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/page-with-base-url-common.html diff --git a/tests/wpt/web-platform-tests/app-history/navigate/resources/service-worker-page.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/service-worker-page.html similarity index 100% rename from tests/wpt/web-platform-tests/app-history/navigate/resources/service-worker-page.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/service-worker-page.html diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/slow-no-store.py b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/slow-no-store.py new file mode 100644 index 00000000000..48e5fc02666 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/resources/slow-no-store.py @@ -0,0 +1,6 @@ +import time + +def main(request, response): + # Sleep for 1sec + time.sleep(1) + response.headers.set(b"Cache-Control", b"no-cache, no-store, must-revalidate"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-204-205-download.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-204-205-download.html new file mode 100644 index 00000000000..5bedbf21e86 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-204-205-download.html @@ -0,0 +1,52 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-already-detached.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-already-detached.html new file mode 100644 index 00000000000..f9ff04f923c --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-already-detached.html @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-beforeunload.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-beforeunload.html new file mode 100644 index 00000000000..82c1f589ccf --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-beforeunload.html @@ -0,0 +1,42 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-forward-initial-about-blank.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-forward-initial-about-blank.html new file mode 100644 index 00000000000..dfdb6611ab3 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-forward-initial-about-blank.html @@ -0,0 +1,25 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back-forward-opaque-origin.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-forward-opaque-origin.html similarity index 100% rename from tests/wpt/web-platform-tests/app-history/navigate/return-value/back-forward-opaque-origin.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-forward-opaque-origin.html diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-forward-out-of-bounds.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-forward-out-of-bounds.html new file mode 100644 index 00000000000..015c090bf97 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-forward-out-of-bounds.html @@ -0,0 +1,16 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-intercept-rejected.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-intercept-rejected.html new file mode 100644 index 00000000000..9d4238087ff --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-intercept-rejected.html @@ -0,0 +1,28 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-intercept.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-intercept.html new file mode 100644 index 00000000000..2654045c2b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back-intercept.html @@ -0,0 +1,25 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back.html similarity index 76% rename from tests/wpt/web-platform-tests/app-history/navigate/return-value/back.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back.html index 1be1d421724..a2b13db901b 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/back.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/back.html @@ -11,13 +11,13 @@ promise_test(async t => { location.href = "#1"; - assert_equals(appHistory.entries().length, 2); - const [entry0, entry1] = appHistory.entries(); + assert_equals(navigation.entries().length, 2); + const [entry0, entry1] = navigation.entries(); assert_equals((new URL(entry0.url)).hash, ""); assert_equals((new URL(entry1.url)).hash, "#1"); - const result = appHistory.back(); + const result = navigation.back(); await assertBothFulfill(t, result, entry0); - assert_equals(appHistory.current, entry0); + assert_equals(navigation.currentEntry, entry0); }, "back() promises"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-already-detached.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-already-detached.html new file mode 100644 index 00000000000..4dfa74d9f9b --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-already-detached.html @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-beforeunload.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-beforeunload.html new file mode 100644 index 00000000000..87fa4baa935 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-beforeunload.html @@ -0,0 +1,45 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-intercept-rejected.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-intercept-rejected.html new file mode 100644 index 00000000000..9e86dcca197 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-intercept-rejected.html @@ -0,0 +1,29 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-intercept.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-intercept.html new file mode 100644 index 00000000000..ce4ab321707 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward-intercept.html @@ -0,0 +1,28 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward.html new file mode 100644 index 00000000000..36bdba8daaf --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/forward.html @@ -0,0 +1,24 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-204-205-download.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-204-205-download.html new file mode 100644 index 00000000000..f1e89b69405 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-204-205-download.html @@ -0,0 +1,42 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-already-detached.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-already-detached.html similarity index 88% rename from tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-already-detached.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-already-detached.html index cc077e2e3fe..33cdd6922d3 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-already-detached.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-already-detached.html @@ -14,6 +14,6 @@ promise_test(async t => { i.remove(); - await assertBothRejectDOM(t, iWindow.appHistory.navigate("?1"), "InvalidStateError", iWindow, iDOMException); + await assertBothRejectDOM(t, iWindow.navigation.navigate("?1"), "InvalidStateError", iWindow, iDOMException); }, "navigate() in a detached window"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-beforeunload.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-beforeunload.html new file mode 100644 index 00000000000..f0a9069677f --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-beforeunload.html @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-cross-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-cross-document.html similarity index 89% rename from tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-cross-document.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-cross-document.html index 0735a23e713..b83b1e941fd 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-cross-document.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-cross-document.html @@ -8,7 +8,7 @@ promise_test(async t => { await new Promise(resolve => window.onload = resolve); - const result = i.contentWindow.appHistory.navigate("?1"); + const result = i.contentWindow.navigation.navigate("?1"); assertNeverSettles(t, result, i.contentWindow); await new Promise(resolve => i.onload = () => t.step_timeout(resolve, 0)); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-detach-in-onnavigate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-detach-in-onnavigate.html new file mode 100644 index 00000000000..0e80e1b1305 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-detach-in-onnavigate.html @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-detach-in-serialization.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-detach-in-serialization.html new file mode 100644 index 00000000000..14086c9f015 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-detach-in-serialization.html @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-file-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-file-url.html similarity index 80% rename from tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-file-url.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-file-url.html index 1dc383509ad..138f6ffc124 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-file-url.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-file-url.html @@ -5,6 +5,6 @@ diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-initial-about-blank-cross-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-initial-about-blank-cross-document.html new file mode 100644 index 00000000000..8ec76b11ddb --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-initial-about-blank-cross-document.html @@ -0,0 +1,21 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-initial-about-blank.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-initial-about-blank.html new file mode 100644 index 00000000000..9734a09d015 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-initial-about-blank.html @@ -0,0 +1,20 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-intercept-interrupted.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-intercept-interrupted.html new file mode 100644 index 00000000000..36403c892c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-intercept-interrupted.html @@ -0,0 +1,23 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-intercept-rejected.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-intercept-rejected.html new file mode 100644 index 00000000000..79c8bd803e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-intercept-rejected.html @@ -0,0 +1,17 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-intercept.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-intercept.html new file mode 100644 index 00000000000..a9946c71ff3 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-intercept.html @@ -0,0 +1,15 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-interrupted-within-onnavigate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-interrupted-within-onnavigate.html new file mode 100644 index 00000000000..3db02c6931e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-interrupted-within-onnavigate.html @@ -0,0 +1,28 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-interrupted.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-interrupted.html new file mode 100644 index 00000000000..2c928254e0b --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-interrupted.html @@ -0,0 +1,21 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-invalid-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-invalid-url.html similarity index 82% rename from tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-invalid-url.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-invalid-url.html index a9d47d05ce3..5b5b442c913 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-invalid-url.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-invalid-url.html @@ -5,6 +5,6 @@ diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-opaque-origin.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-opaque-origin.html similarity index 100% rename from tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-opaque-origin.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-opaque-origin.html diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-preventDefault.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-preventDefault.html new file mode 100644 index 00000000000..6257c5a03d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-preventDefault.html @@ -0,0 +1,12 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-initial-about-blank.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-initial-about-blank.html new file mode 100644 index 00000000000..9d47c8d0b5d --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-initial-about-blank.html @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-javascript-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-javascript-url.html new file mode 100644 index 00000000000..e41e06a78dc --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-javascript-url.html @@ -0,0 +1,19 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-not-loaded.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-not-loaded.html new file mode 100644 index 00000000000..611db7e2b13 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-not-loaded.html @@ -0,0 +1,19 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-same-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-same-url.html new file mode 100644 index 00000000000..216e94eb1d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-same-url.html @@ -0,0 +1,19 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-beforeunload-unserializablestate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-beforeunload-unserializablestate.html new file mode 100644 index 00000000000..878280a56eb --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-beforeunload-unserializablestate.html @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-detached-unserializablestate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-detached-unserializablestate.html new file mode 100644 index 00000000000..2c6f9a28d49 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-detached-unserializablestate.html @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-beforeunload.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-beforeunload.html new file mode 100644 index 00000000000..4873e85a2f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-beforeunload.html @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-detached.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-detached.html similarity index 82% rename from tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-detached.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-detached.html index bd7981d8bc1..2250a541147 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-detached.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-detached.html @@ -13,8 +13,8 @@ promise_test(async t => { i.remove(); - iWindow.appHistory.onnavigate = t.unreached_func("onnavigate"); + iWindow.navigation.onnavigate = t.unreached_func("onnavigate"); - await assertBothRejectDOM(t, iWindow.appHistory.navigate("https://example.com\u0000mozilla.org"), "SyntaxError", iWindow, iDOMException); + await assertBothRejectDOM(t, iWindow.navigation.navigate("https://example.com\u0000mozilla.org"), "SyntaxError", iWindow, iDOMException); }, `navigate() with an invalid URL in a detached iframe throws "SyntaxError", not "InvalidStateError"`); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-unload.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-unload.html new file mode 100644 index 00000000000..d778dd662c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-unload.html @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-unserializablestate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-unserializablestate.html similarity index 76% rename from tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-unserializablestate.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-unserializablestate.html index f1ccb0c73b4..07e194ca419 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/navigate-rejection-order-invalidurl-unserializablestate.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-unserializablestate.html @@ -5,8 +5,8 @@ diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-unload-unserializablestate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-unload-unserializablestate.html new file mode 100644 index 00000000000..417dd27174c --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-rejection-order-unload-unserializablestate.html @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-unload.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-unload.html new file mode 100644 index 00000000000..fbc1fde6e97 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-unload.html @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-unserializable-state.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-unserializable-state.html new file mode 100644 index 00000000000..36464ec3c54 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-unserializable-state.html @@ -0,0 +1,21 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate.html new file mode 100644 index 00000000000..34ff84f0e9a --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate.html @@ -0,0 +1,12 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-already-detached.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-already-detached.html similarity index 88% rename from tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-already-detached.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-already-detached.html index 7ecd31ae06b..9b0780c4a95 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload-already-detached.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-already-detached.html @@ -14,6 +14,6 @@ promise_test(async t => { i.remove(); - await assertBothRejectDOM(t, iWindow.appHistory.reload(), "InvalidStateError", iWindow, iDOMException); + await assertBothRejectDOM(t, iWindow.navigation.reload(), "InvalidStateError", iWindow, iDOMException); }, "reload() in a detached window"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-beforeunload.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-beforeunload.html new file mode 100644 index 00000000000..05338acc5e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-beforeunload.html @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-detach-in-onnavigate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-detach-in-onnavigate.html new file mode 100644 index 00000000000..621bb598f64 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-detach-in-onnavigate.html @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-detach-in-serialization.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-detach-in-serialization.html new file mode 100644 index 00000000000..d958d9cc844 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-detach-in-serialization.html @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-initial-about-blank.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-initial-about-blank.html new file mode 100644 index 00000000000..9e717fee48b --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-initial-about-blank.html @@ -0,0 +1,20 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-intercept-rejected.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-intercept-rejected.html new file mode 100644 index 00000000000..93cd75c2b99 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-intercept-rejected.html @@ -0,0 +1,17 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-intercept.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-intercept.html new file mode 100644 index 00000000000..92f1636a6e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-intercept.html @@ -0,0 +1,14 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-preventDefault.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-preventDefault.html new file mode 100644 index 00000000000..747044b60f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-preventDefault.html @@ -0,0 +1,12 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-rejection-order-beforeunload-unserializablestate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-rejection-order-beforeunload-unserializablestate.html new file mode 100644 index 00000000000..950d665218f --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-rejection-order-beforeunload-unserializablestate.html @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-rejection-order-detached-unserializablestate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-rejection-order-detached-unserializablestate.html new file mode 100644 index 00000000000..9206f18e6cc --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-rejection-order-detached-unserializablestate.html @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-rejection-order-unload-unserializablestate.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-rejection-order-unload-unserializablestate.html new file mode 100644 index 00000000000..9e7edcbba4f --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-rejection-order-unload-unserializablestate.html @@ -0,0 +1,32 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-unload.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-unload.html new file mode 100644 index 00000000000..1906659d1db --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-unload.html @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-unserializable-state.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-unserializable-state.html new file mode 100644 index 00000000000..76fa870558a --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload-unserializable-state.html @@ -0,0 +1,21 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload.html similarity index 78% rename from tests/wpt/web-platform-tests/app-history/navigate/return-value/reload.html rename to tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload.html index 55836e79051..388f0d94b50 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/return-value/reload.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/reload.html @@ -8,9 +8,9 @@ promise_test(async t => { await new Promise(resolve => window.onload = resolve); - const result = i.contentWindow.appHistory.reload(); + const result = i.contentWindow.navigation.reload(); assertNeverSettles(t, result, i.contentWindow); await new Promise(resolve => i.onload = () => t.step_timeout(resolve, 0)); -}, "reload() promises never settle (without transitionWhile())"); +}, "reload() promises never settle (without intercept())"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/204-205-download-on-second-visit.py b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/204-205-download-on-second-visit.py new file mode 100644 index 00000000000..c18b0dec3dc --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/204-205-download-on-second-visit.py @@ -0,0 +1,24 @@ +def main(request, response): + key = request.GET[b"id"] + + # If hit with a POST with ?action=X, store X in the stash + if request.method == "POST": + action = request.GET[b"action"] + request.server.stash.put(key, action) + + return (204, [], "") + + # If hit with a GET, either return a normal initial page, or the abnormal requested response + elif request.method == "GET": + action = request.server.stash.take(key) + + if action is None: + return (200, [("Content-Type", "text/html"), ("Cache-Control", "no-store")], "initial page") + if action == b"204": + return (204, [], "") + if action == b"205": + return (205, [], "") + if action == b"download": + return (200, [("Content-Type", "text/plain"), ("Content-Disposition", "attachment")], "some text to download") + + return (400, [], "") diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/back-forward-opaque-origin-page.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/back-forward-opaque-origin-page.html new file mode 100644 index 00000000000..ec633639524 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/back-forward-opaque-origin-page.html @@ -0,0 +1,28 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/helpers.js b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/helpers.js new file mode 100644 index 00000000000..67cd1ccb62e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/helpers.js @@ -0,0 +1,92 @@ +window.assertReturnValue = (result, w = window) => { + assert_equals(Object.getPrototypeOf(result), w.Object.prototype, "result object must be from the right realm"); + assert_array_equals(Reflect.ownKeys(result), ["committed", "finished"]); + assert_true(result.committed instanceof w.Promise); + assert_true(result.finished instanceof w.Promise); + assert_not_equals(result.committed, result.finished); +}; + +window.assertNeverSettles = (t, result, w = window) => { + assertReturnValue(result, w); + result.committed.then( + t.unreached_func("committed must not fulfill"), + t.unreached_func("committed must not reject") + ); + + result.finished.then( + t.unreached_func("finished must not fulfill"), + t.unreached_func("finished must not reject") + ); +}; + +window.assertBothFulfill = async (t, result, expected, w = window) => { + assertReturnValue(result, w); + + // Don't use await here so that we can catch out-of-order settlements. + let committedValue; + result.committed.then( + t.step_func(v => { committedValue = v; }), + t.unreached_func("committed must not reject") + ); + + const finishedValue = await result.finished; + + assert_not_equals(committedValue, undefined, "committed must fulfill before finished"); + assert_equals(finishedValue, committedValue, "committed and finished must fulfill with the same value"); + assert_true(finishedValue instanceof w.NavigationHistoryEntry, "fulfillment value must be a NavigationHistoryEntry"); + assert_equals(finishedValue, expected); +}; + +window.assertCommittedFulfillsFinishedRejectsExactly = async (t, result, expectedEntry, expectedRejection, w = window) => { + assertReturnValue(result, w); + + // Don't use await here so that we can catch out-of-order settlements. + let committedValue; + result.committed.then( + t.step_func(v => { committedValue = v; }), + t.unreached_func("committed must not reject") + ); + + await promise_rejects_exactly(t, expectedRejection, result.finished); + + assert_not_equals(committedValue, undefined, "committed must fulfill before finished rejects"); + assert_true(committedValue instanceof w.NavigationHistoryEntry, "fulfillment value must be a NavigationHistoryEntry"); + assert_equals(committedValue, expectedEntry); +}; + +window.assertCommittedFulfillsFinishedRejectsDOM = async (t, result, expectedEntry, expectedDOMExceptionCode, w = window, domExceptionConstructor = w.DOMException, navigationHistoryEntryConstuctor = w.NavigationHistoryEntry) => { + assertReturnValue(result, w); + + // Don't use await here so that we can catch out-of-order settlements. + let committedValue; + result.committed.then( + t.step_func(v => { committedValue = v; }), + t.unreached_func("committed must not reject") + ); + + await promise_rejects_dom(t, expectedDOMExceptionCode, domExceptionConstructor, result.finished); + + assert_not_equals(committedValue, undefined, "committed must fulfill before finished rejects"); + assert_true(committedValue instanceof navigationHistoryEntryConstuctor, "fulfillment value must be an NavigationHistoryEntry"); + assert_equals(committedValue, expectedEntry); +}; + +window.assertBothRejectDOM = async (t, result, expectedDOMExceptionCode, w = window, domExceptionConstructor = w.DOMException) => { + assertReturnValue(result, w); + + // Don't use await here so that we can catch out-of-order settlements. + let committedReason, finishedReason; + await Promise.all([ + result.committed.then( + t.unreached_func("committed must not fulfill"), + t.step_func(r => { committedReason = r; }) + ), + result.finished.then( + t.unreached_func("finished must not fulfill"), + t.step_func(r => { finishedReason = r; }) + ) + ]); + + assert_equals(committedReason, finishedReason, "committed and finished must reject with the same value"); + assert_throws_dom(expectedDOMExceptionCode, domExceptionConstructor, () => { throw committedReason; }); +}; diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/navigate-opaque-origin-page.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/navigate-opaque-origin-page.html new file mode 100644 index 00000000000..831eefdb612 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/resources/navigate-opaque-origin-page.html @@ -0,0 +1,16 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-already-detached.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-already-detached.html new file mode 100644 index 00000000000..b974393df6e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-already-detached.html @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-beforeunload.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-beforeunload.html new file mode 100644 index 00000000000..3b2722235ee --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-beforeunload.html @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-cross-document-preventDefault.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-cross-document-preventDefault.html new file mode 100644 index 00000000000..09c91ee647e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-cross-document-preventDefault.html @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-current.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-current.html new file mode 100644 index 00000000000..212fe992cf7 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-current.html @@ -0,0 +1,17 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document.html new file mode 100644 index 00000000000..8784313b705 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document.html @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-same-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-same-document.html new file mode 100644 index 00000000000..b0308b8df8f --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-same-document.html @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-intercept-rejected.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-intercept-rejected.html new file mode 100644 index 00000000000..f934eae5d4c --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-intercept-rejected.html @@ -0,0 +1,30 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-intercept.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-intercept.html new file mode 100644 index 00000000000..a4cb4e711d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-intercept.html @@ -0,0 +1,27 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-invalid-key.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-invalid-key.html new file mode 100644 index 00000000000..42be40bfa76 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-invalid-key.html @@ -0,0 +1,10 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-repeated.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-repeated.html new file mode 100644 index 00000000000..d1754d67297 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-repeated.html @@ -0,0 +1,24 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo.html new file mode 100644 index 00000000000..8e00f5ba918 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo.html @@ -0,0 +1,25 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html new file mode 100644 index 00000000000..bc3d4e2e9fb --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html @@ -0,0 +1,37 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html new file mode 100644 index 00000000000..718ea6d3dda --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html @@ -0,0 +1,43 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-navigate-parent.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-navigate-parent.html new file mode 100644 index 00000000000..b7af32443f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-navigate-parent.html @@ -0,0 +1,16 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-navigate-sibling.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-navigate-sibling.html new file mode 100644 index 00000000000..c8e76fc4a67 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-navigate-sibling.html @@ -0,0 +1,19 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-after-adding-iframe.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-after-adding-iframe.html new file mode 100644 index 00000000000..5ab28205510 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-after-adding-iframe.html @@ -0,0 +1,34 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-after-data-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-after-data-url.html new file mode 100644 index 00000000000..0b21a741d30 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-after-data-url.html @@ -0,0 +1,33 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-cross-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-cross-document.html new file mode 100644 index 00000000000..2540639badd --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-cross-document.html @@ -0,0 +1,41 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-detach-between-navigate-and-navigatesuccess.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-detach-between-navigate-and-navigatesuccess.html new file mode 100644 index 00000000000..a0a29188878 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-detach-between-navigate-and-navigatesuccess.html @@ -0,0 +1,46 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-multiple-steps.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-multiple-steps.html new file mode 100644 index 00000000000..059eb214a8b --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-multiple-steps.html @@ -0,0 +1,25 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes.html new file mode 100644 index 00000000000..3d6adb53413 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes.html @@ -0,0 +1,45 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-same-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-same-document.html new file mode 100644 index 00000000000..1a32bce99c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-same-document.html @@ -0,0 +1,43 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-with-cross-origin-in-history.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-with-cross-origin-in-history.html new file mode 100644 index 00000000000..a6b7745584a --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/traverseTo-with-cross-origin-in-history.html @@ -0,0 +1,37 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/README.md b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/README.md new file mode 100644 index 00000000000..628b22ec48b --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/README.md @@ -0,0 +1,26 @@ +# Navigation API ordering/transition tests + +These are meant to test the ordering between various events and promises, as +well as in some cases how the `navigation.transition` values changes. + +Some of them use the `Recorder` framework in `resources/helpers.mjs`, and others +test tricky cases (e.g. reentrancy) in a more ad-hoc way. + + is a useful +reference for the intent of these tests. + +Note: + +* Variants specifically exist for `currententrychange` because an event listener + existing for `currententrychange` causes code to run, and thus microtasks to run, + at a very specific point in the navigation-commit lifecycle. We want to test + that it doesn't impact the ordering. +* Similarly we test that `intercept()` does not change + the ordering compared to no `intercept()` call, for same-document + navigations, by trying to ensure most variants have appropriate + `intercept()` counterparts with similar orderings. + +TODOs: + +* Also test `popstate` and `hashchange` once + is fixed. diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-intercept-reject.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-intercept-reject.html new file mode 100644 index 00000000000..4869cedd252 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-intercept-reject.html @@ -0,0 +1,54 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-intercept.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-intercept.html new file mode 100644 index 00000000000..23326c827b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-intercept.html @@ -0,0 +1,48 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/anchor-download.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/anchor-download.html new file mode 100644 index 00000000000..c6af13c3e06 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/anchor-download.html @@ -0,0 +1,24 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/back-same-document-intercept-reject.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/back-same-document-intercept-reject.html new file mode 100644 index 00000000000..c0d4f550271 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/back-same-document-intercept-reject.html @@ -0,0 +1,54 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/back-same-document-intercept.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/back-same-document-intercept.html new file mode 100644 index 00000000000..7bd248bc9c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/back-same-document-intercept.html @@ -0,0 +1,48 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/back-same-document.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/back-same-document.html new file mode 100644 index 00000000000..76c3e99311e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/back-same-document.html @@ -0,0 +1,40 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/currententrychange-before-popstate-intercept.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/currententrychange-before-popstate-intercept.html new file mode 100644 index 00000000000..c51c7c444cb --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/currententrychange-before-popstate-intercept.html @@ -0,0 +1,48 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/currententrychange-dispose-ordering.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/currententrychange-dispose-ordering.html new file mode 100644 index 00000000000..4ca9ba29800 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/currententrychange-dispose-ordering.html @@ -0,0 +1,26 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/intercept-async.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/intercept-async.html new file mode 100644 index 00000000000..f2ca0969506 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/intercept-async.html @@ -0,0 +1,55 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-canceled.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-canceled.html new file mode 100644 index 00000000000..eef10cd1730 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-canceled.html @@ -0,0 +1,39 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-double-intercept.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-double-intercept.html new file mode 100644 index 00000000000..36ae5ce4ab5 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-double-intercept.html @@ -0,0 +1,61 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept-reentrant.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept-reentrant.html new file mode 100644 index 00000000000..3fabf52bfba --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept-reentrant.html @@ -0,0 +1,60 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept-reject.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept-reject.html new file mode 100644 index 00000000000..b4aeb726b3b --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept-reject.html @@ -0,0 +1,50 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept.html new file mode 100644 index 00000000000..bb861d37ae5 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/location-href-intercept.html @@ -0,0 +1,44 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-204-205-download-then-same-document.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-204-205-download-then-same-document.html new file mode 100644 index 00000000000..b7b6283fa70 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-204-205-download-then-same-document.html @@ -0,0 +1,66 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-canceled.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-canceled.html new file mode 100644 index 00000000000..2604a60e37b --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-canceled.html @@ -0,0 +1,42 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-cross-document-double.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-cross-document-double.html new file mode 100644 index 00000000000..262809a0ad7 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-cross-document-double.html @@ -0,0 +1,52 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/navigate-cross-document-event-order.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-cross-document-event-order.html similarity index 83% rename from tests/wpt/web-platform-tests/app-history/navigate/navigate-cross-document-event-order.html rename to tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-cross-document-event-order.html index 1c1758a002e..34a9b79fb5f 100644 --- a/tests/wpt/web-platform-tests/app-history/navigate/navigate-cross-document-event-order.html +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-cross-document-event-order.html @@ -12,8 +12,8 @@ async_test(t => { window.onload = t.step_func(() => { window.childStarted = () => { - i.contentWindow.appHistory.onnavigatesuccess = () => events.push("onnavigatesuccess"); - i.contentWindow.appHistory.onnavigateerror = () => events.push("onnavigateerror"); + i.contentWindow.navigation.onnavigatesuccess = () => events.push("onnavigatesuccess"); + i.contentWindow.navigation.onnavigateerror = () => events.push("onnavigateerror"); i.contentWindow.onpageshow = () => events.push("onpageshow"); i.contentWindow.onhashchange = () => events.push("onhashchange"); i.contentWindow.onpopstate = () => events.push("onpopstate"); @@ -24,8 +24,8 @@ async_test(t => { i.contentDocument.addEventListener("DOMContentLoaded", () => events.push("domcontentloaded")); i.contentDocument.onreadystatechange = () => events.push("readystate" + i.contentDocument.readyState); }; - i.contentWindow.appHistory.onnavigate = () => events.push("onnavigate"); - i.contentWindow.appHistory.navigate("?1").committed.then( + i.contentWindow.navigation.onnavigate = () => events.push("onnavigate"); + i.contentWindow.navigation.navigate("?1").committed.then( () => events.push("promisefulfilled"), () => events.push("promiserejected")); }); }, "navigate() event ordering for cross-document navigation"); diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-double-intercept.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-double-intercept.html new file mode 100644 index 00000000000..6ce67b9af64 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-double-intercept.html @@ -0,0 +1,68 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-in-transition-finished.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-in-transition-finished.html new file mode 100644 index 00000000000..9251cfe049d --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-in-transition-finished.html @@ -0,0 +1,69 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-stop.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-stop.html new file mode 100644 index 00000000000..5d126a8c2ff --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-stop.html @@ -0,0 +1,52 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept.html new file mode 100644 index 00000000000..f76f20bf85e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept.html @@ -0,0 +1,47 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reentrant.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reentrant.html new file mode 100644 index 00000000000..86f4e067313 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reentrant.html @@ -0,0 +1,66 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reject.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reject.html new file mode 100644 index 00000000000..88c668e0e99 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reject.html @@ -0,0 +1,53 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document.html new file mode 100644 index 00000000000..589e1105e65 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/navigate-same-document.html @@ -0,0 +1,39 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/reload-canceled.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/reload-canceled.html new file mode 100644 index 00000000000..3e9e24e7771 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/reload-canceled.html @@ -0,0 +1,42 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/reload-intercept-reject.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/reload-intercept-reject.html new file mode 100644 index 00000000000..334d2108ecd --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/reload-intercept-reject.html @@ -0,0 +1,53 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/reload-intercept.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/reload-intercept.html new file mode 100644 index 00000000000..8d4160a4d95 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/reload-intercept.html @@ -0,0 +1,47 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/resources/helpers.mjs b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/resources/helpers.mjs new file mode 100644 index 00000000000..341befc1056 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/resources/helpers.mjs @@ -0,0 +1,193 @@ +const variants = new Set((new URLSearchParams(location.search)).keys()); + +export function hasVariant(name) { + return variants.has(name); +} + +export class Recorder { + #events = []; + #errors = []; + #navigationAPI; + #domExceptionConstructor; + #location; + #skipCurrentChange; + #finalExpectedEvent; + #finalExpectedEventCount; + #currentFinalEventCount = 0; + + #readyToAssertResolve; + #readyToAssertPromise = new Promise(resolve => { this.#readyToAssertResolve = resolve; }); + + constructor({ window = self, skipCurrentChange = false, finalExpectedEvent, finalExpectedEventCount = 1 }) { + assert_equals(typeof finalExpectedEvent, "string", "Must pass a string for finalExpectedEvent"); + + this.#navigationAPI = window.navigation; + this.#domExceptionConstructor = window.DOMException; + this.#location = window.location; + + this.#skipCurrentChange = skipCurrentChange; + this.#finalExpectedEvent = finalExpectedEvent; + this.#finalExpectedEventCount = finalExpectedEventCount; + } + + setUpNavigationAPIListeners() { + this.#navigationAPI.addEventListener("navigate", e => { + this.record("navigate"); + + e.signal.addEventListener("abort", () => { + this.recordWithError("AbortSignal abort", e.signal.reason); + }); + }); + + this.#navigationAPI.addEventListener("navigateerror", e => { + this.recordWithError("navigateerror", e.error); + + this.#navigationAPI.transition?.finished.then( + () => this.record("transition.finished fulfilled"), + err => this.recordWithError("transition.finished rejected", err) + ); + }); + + this.#navigationAPI.addEventListener("navigatesuccess", () => { + this.record("navigatesuccess"); + + this.#navigationAPI.transition?.finished.then( + () => this.record("transition.finished fulfilled"), + err => this.recordWithError("transition.finished rejected", err) + ); + }); + + if (!this.#skipCurrentChange) { + this.#navigationAPI.addEventListener("currententrychange", () => this.record("currententrychange")); + } + } + + setUpResultListeners(result, suffix = "") { + result.committed.then( + () => this.record(`committed fulfilled${suffix}`), + err => this.recordWithError(`committed rejected${suffix}`, err) + ); + + result.finished.then( + () => this.record(`finished fulfilled${suffix}`), + err => this.recordWithError(`finished rejected${suffix}`, err) + ); + } + + record(name) { + const transitionProps = this.#navigationAPI.transition === null ? null : { + from: this.#navigationAPI.transition.from, + navigationType: this.#navigationAPI.transition.navigationType + }; + + this.#events.push({ name, location: this.#location.hash, transitionProps }); + + if (name === this.#finalExpectedEvent && ++this.#currentFinalEventCount === this.#finalExpectedEventCount) { + this.#readyToAssertResolve(); + } + } + + recordWithError(name, errorObject) { + this.record(name); + this.#errors.push({ name, errorObject }); + } + + get readyToAssert() { + return this.#readyToAssertPromise; + } + + // Usage: + // recorder.assert([ + // /* event name, location.hash value, navigation.transition properties */ + // ["currententrychange", "", null], + // ["committed fulfilled", "#1", { from, navigationType }], + // ... + // ]); + // + // The array format is to avoid repitition at the call site, but I recommend + // you document it like above. + // + // This will automatically also assert that any error objects recorded are + // equal to each other. Use the other assert functions to check the actual + // contents of the error objects. + assert(expectedAsArray) { + if (this.#skipCurrentChange) { + expectedAsArray = expectedAsArray.filter(expected => expected[0] !== "currententrychange"); + } + + // Doing this up front gives nicer error messages because + // assert_array_equals is nice. + const recordedNames = this.#events.map(e => e.name); + const expectedNames = expectedAsArray.map(e => e[0]); + assert_array_equals(recordedNames, expectedNames); + + for (let i = 0; i < expectedAsArray.length; ++i) { + const recorded = this.#events[i]; + const expected = expectedAsArray[i]; + + assert_equals( + recorded.location, + expected[1], + `event ${i} (${recorded.name}): location.hash value` + ); + + if (expected[2] === null) { + assert_equals( + recorded.transitionProps, + null, + `event ${i} (${recorded.name}): navigation.transition expected to be null` + ); + } else { + assert_not_equals( + recorded.transitionProps, + null, + `event ${i} (${recorded.name}): navigation.transition expected not to be null` + ); + assert_equals( + recorded.transitionProps.from, + expected[2].from, + `event ${i} (${recorded.name}): navigation.transition.from` + ); + assert_equals( + recorded.transitionProps.navigationType, + expected[2].navigationType, + `event ${i} (${recorded.name}): navigation.transition.navigationType` + ); + } + } + + if (this.#errors.length > 1) { + for (let i = 1; i < this.#errors.length; ++i) { + assert_equals( + this.#errors[i].errorObject, + this.#errors[0].errorObject, + `error objects must match: error object for ${this.#errors[i].name} did not match the one for ${this.#errors[0].name}` + ); + } + } + } + + assertErrorsAreAbortErrors() { + assert_greater_than( + this.#errors.length, + 0, + "No errors were recorded but assertErrorsAreAbortErrors() was called" + ); + + // Assume assert() has been called so all error objects are the same. + const { errorObject } = this.#errors[0]; + assert_throws_dom("AbortError", this.#domExceptionConstructor, () => { throw errorObject; }); + } + + assertErrorsAre(expectedErrorObject) { + assert_greater_than( + this.#errors.length, + 0, + "No errors were recorded but assertErrorsAre() was called" + ); + + // Assume assert() has been called so all error objects are the same. + const { errorObject } = this.#errors[0]; + assert_equals(errorObject, expectedErrorObject); + } +} diff --git a/tests/wpt/web-platform-tests/app-history/navigate/resources/notify-top-early.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/resources/notify-top-early.html similarity index 100% rename from tests/wpt/web-platform-tests/app-history/navigate/resources/notify-top-early.html rename to tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/resources/notify-top-early.html diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/transition-cross-document.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/transition-cross-document.html new file mode 100644 index 00000000000..4a14a1083d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/transition-cross-document.html @@ -0,0 +1,44 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/transition-finished-mark-as-handled.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/transition-finished-mark-as-handled.html new file mode 100644 index 00000000000..fa38b822166 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/transition-finished-mark-as-handled.html @@ -0,0 +1,20 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/transition-realms-and-identity.html b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/transition-realms-and-identity.html new file mode 100644 index 00000000000..f1b3ead9807 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/ordering-and-transition/transition-realms-and-identity.html @@ -0,0 +1,41 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-after-bfcache.html b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-after-bfcache.html new file mode 100644 index 00000000000..7d3ef4f81ed --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-after-bfcache.html @@ -0,0 +1,32 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-cross-document.html b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-cross-document.html similarity index 80% rename from tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-cross-document.html rename to tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-cross-document.html index 22ea15bae98..67f54da48d2 100644 --- a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-cross-document.html +++ b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-cross-document.html @@ -11,25 +11,25 @@ promise_test(async (t) => { iframe.contentWindow.location.search = "?1"; await new Promise(r => iframe.onload = () => t.step_timeout(r, 0)); - const keyFor1 = iframe.contentWindow.appHistory.current.key; + const keyFor1 = iframe.contentWindow.navigation.currentEntry.key; iframe.contentWindow.location.search = "?2"; await new Promise(r => iframe.onload = () => t.step_timeout(r, 0)); iframe.contentWindow.location.search = "?3"; await new Promise(r => iframe.onload = () => t.step_timeout(r, 0)); - iframe.contentWindow.appHistory.goTo(keyFor1); + iframe.contentWindow.navigation.traverseTo(keyFor1); await new Promise(r => iframe.onload = () => t.step_timeout(r, 0)); assert_equals((new URL(iframe.contentWindow.location.href)).search, "?1"); - assert_equals(iframe.contentWindow.appHistory.entries().length, 4); - const [, entry2, entry3] = iframe.contentWindow.appHistory.entries(); + assert_equals(iframe.contentWindow.navigation.entries().length, 4); + const [, entry2, entry3] = iframe.contentWindow.navigation.entries(); entry2.ondispose = t.unreached_func("entry2 dispose must not fire"); entry2.addEventListener("dispose", t.unreached_func("entry3 dispose must not fire")); - iframe.contentWindow.appHistory.navigate("/common/blank.html?fork"); + iframe.contentWindow.navigation.navigate("/common/blank.html?fork"); await new Promise(r => iframe.onload = r); // Test passes if we reached this point with no dispose events firing. diff --git a/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-for-full-session-history.tentative.html b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-for-full-session-history.tentative.html new file mode 100644 index 00000000000..9bed225cf36 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-for-full-session-history.tentative.html @@ -0,0 +1,20 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-for-navigation-in-child.html b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-for-navigation-in-child.html new file mode 100644 index 00000000000..24828770852 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-for-navigation-in-child.html @@ -0,0 +1,41 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-intercept.html b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-intercept.html new file mode 100644 index 00000000000..44aa096aafe --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-intercept.html @@ -0,0 +1,71 @@ + + + + diff --git a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-navigate-during.html b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-navigate-during.html similarity index 76% rename from tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-navigate-during.html rename to tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-navigate-during.html index e539eabda99..59d9b3cce39 100644 --- a/tests/wpt/web-platform-tests/app-history/per-entry-events/dispose-same-document-navigate-during.html +++ b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-navigate-during.html @@ -11,8 +11,8 @@ promise_test(async (t) => { location.hash = "#2"; location.hash = "#3"; - assert_equals(appHistory.entries().length, 4); - const [entry0, entry1, entry2, entry3] = appHistory.entries(); + assert_equals(navigation.entries().length, 4); + const [entry0, entry1, entry2, entry3] = navigation.entries(); assert_equals((new URL(entry2.url)).hash, "#2"); assert_equals((new URL(entry3.url)).hash, "#3"); @@ -21,12 +21,12 @@ promise_test(async (t) => { entry3.addEventListener("dispose", t.step_func(e => { ++dispose3Called; - spoonPromise = appHistory.navigate("#spoon").committed; + spoonPromise = navigation.navigate("#spoon").committed; })); - await appHistory.goTo(entry1.key).committed; + await navigation.traverseTo(entry1.key).committed; - const forkPromise = appHistory.navigate("#fork").committed; + const forkPromise = navigation.navigate("#fork").committed; assert_equals(dispose3Called, 1, "dispose for entry 3 must happen exactly once (first check)") // The navigation to #fork will *not* be finished by the time the navigation @@ -37,13 +37,13 @@ promise_test(async (t) => { assert_equals(dispose3Called, 1, "dispose for entry 3 must happen exactly once (final check)"); - assert_equals(appHistory.entries().length, 4); - const [finalEntry0, finalEntry1, finalEntry2, finalEntry3] = appHistory.entries(); + assert_equals(navigation.entries().length, 4); + const [finalEntry0, finalEntry1, finalEntry2, finalEntry3] = navigation.entries(); assert_equals(finalEntry0, entry0); assert_equals(finalEntry1, entry1); assert_not_equals(finalEntry2, entry2); assert_not_equals(finalEntry3, entry3); - assert_equals(appHistory.current, finalEntry3); + assert_equals(navigation.currentEntry, finalEntry3); assert_equals((new URL(finalEntry2.url)).hash, "#fork"); assert_equals((new URL(finalEntry3.url)).hash, "#spoon"); }, "navigate() during a same-document-navigation-initiated dispose works (since it's after the previous navigation)"); diff --git a/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-reload-with-intercept.html b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-reload-with-intercept.html new file mode 100644 index 00000000000..1e083714f65 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-reload-with-intercept.html @@ -0,0 +1,17 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-replace-with-intercept.html b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-replace-with-intercept.html new file mode 100644 index 00000000000..4e492e30aed --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-replace-with-intercept.html @@ -0,0 +1,36 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-replaceState.html b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-replaceState.html new file mode 100644 index 00000000000..a6197260a28 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-replaceState.html @@ -0,0 +1,28 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document.html b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document.html new file mode 100644 index 00000000000..27806ce3c86 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-same-document.html @@ -0,0 +1,65 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-skip-current-on-truncate.html b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-skip-current-on-truncate.html new file mode 100644 index 00000000000..56ec4d301f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/per-entry-events/dispose-skip-current-on-truncate.html @@ -0,0 +1,40 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-basic.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-basic.html new file mode 100644 index 00000000000..8ee4cc395b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-basic.html @@ -0,0 +1,20 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-change-history-scroll-restoration-during-promise.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-change-history-scroll-restoration-during-promise.html new file mode 100644 index 00000000000..6ededdeebfa --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-change-history-scroll-restoration-during-promise.html @@ -0,0 +1,32 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-explicit-scroll.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-explicit-scroll.html new file mode 100644 index 00000000000..83d5cffd2d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-explicit-scroll.html @@ -0,0 +1,25 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-intercept-handler-modifies.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-intercept-handler-modifies.html new file mode 100644 index 00000000000..78d1692104d --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-intercept-handler-modifies.html @@ -0,0 +1,33 @@ + + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-push.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-push.html new file mode 100644 index 00000000000..f3ee1827bc4 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-push.html @@ -0,0 +1,29 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-reject.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-reject.html new file mode 100644 index 00000000000..5880dbb3313 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-reject.html @@ -0,0 +1,23 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-reload.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-reload.html new file mode 100644 index 00000000000..badb7e7f417 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-reload.html @@ -0,0 +1,41 @@ + + + + +
                                                                      +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-replace.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-replace.html new file mode 100644 index 00000000000..48f153b99ef --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-replace.html @@ -0,0 +1,29 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-timing.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-timing.html new file mode 100644 index 00000000000..88ba82102a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-timing.html @@ -0,0 +1,48 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-with-history-scroll-restoration-manual.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-with-history-scroll-restoration-manual.html new file mode 100644 index 00000000000..bc2ce230ce7 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/after-transition-with-history-scroll-restoration-manual.html @@ -0,0 +1,23 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-basic.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-basic.html new file mode 100644 index 00000000000..e6ae29ad86e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-basic.html @@ -0,0 +1,20 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-immediate-scroll.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-immediate-scroll.html new file mode 100644 index 00000000000..112910d46f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-immediate-scroll.html @@ -0,0 +1,24 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-after-dispatch.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-after-dispatch.html new file mode 100644 index 00000000000..8b4a58c7a26 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-after-dispatch.html @@ -0,0 +1,33 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-after-resolve.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-after-resolve.html new file mode 100644 index 00000000000..244c93af904 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-after-resolve.html @@ -0,0 +1,27 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-fragment-does-not-exist.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-fragment-does-not-exist.html new file mode 100644 index 00000000000..1ca582787e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-fragment-does-not-exist.html @@ -0,0 +1,32 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-push.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-push.html new file mode 100644 index 00000000000..3c293651780 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-push.html @@ -0,0 +1,31 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-reload.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-reload.html new file mode 100644 index 00000000000..6dd3fd8a38f --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-reload.html @@ -0,0 +1,45 @@ + + + + +
                                                                      +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-repeated.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-repeated.html new file mode 100644 index 00000000000..f9bdb749690 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-repeated.html @@ -0,0 +1,25 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-replace.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-replace.html new file mode 100644 index 00000000000..db580229a86 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-replace.html @@ -0,0 +1,31 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-resets-when-no-fragment.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-resets-when-no-fragment.html new file mode 100644 index 00000000000..5401976f640 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-resets-when-no-fragment.html @@ -0,0 +1,33 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/scroll-without-intercept.html b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/scroll-without-intercept.html new file mode 100644 index 00000000000..b3958352c72 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/scroll-behavior/scroll-without-intercept.html @@ -0,0 +1,19 @@ + + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-api/state/cross-document-away-and-back.html b/tests/wpt/web-platform-tests/navigation-api/state/cross-document-away-and-back.html new file mode 100644 index 00000000000..cccaebdf7b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/state/cross-document-away-and-back.html @@ -0,0 +1,31 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/state/cross-document-getState-undefined.html b/tests/wpt/web-platform-tests/navigation-api/state/cross-document-getState-undefined.html new file mode 100644 index 00000000000..cbd5cdd52ed --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/state/cross-document-getState-undefined.html @@ -0,0 +1,17 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/state/cross-document-getState.html b/tests/wpt/web-platform-tests/navigation-api/state/cross-document-getState.html new file mode 100644 index 00000000000..aedbc471e05 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/state/cross-document-getState.html @@ -0,0 +1,19 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/state/cross-document-location-api.html b/tests/wpt/web-platform-tests/navigation-api/state/cross-document-location-api.html new file mode 100644 index 00000000000..395d95c6fbe --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/state/cross-document-location-api.html @@ -0,0 +1,20 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/state/history-pushState.html b/tests/wpt/web-platform-tests/navigation-api/state/history-pushState.html new file mode 100644 index 00000000000..7d3c79ba6ca --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/state/history-pushState.html @@ -0,0 +1,11 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/state/history-replaceState.html b/tests/wpt/web-platform-tests/navigation-api/state/history-replaceState.html new file mode 100644 index 00000000000..bdf35616393 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/state/history-replaceState.html @@ -0,0 +1,11 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/state/location-reload.html b/tests/wpt/web-platform-tests/navigation-api/state/location-reload.html new file mode 100644 index 00000000000..bf1bc105fbf --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/state/location-reload.html @@ -0,0 +1,19 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/state/same-document-away-and-back-location-api.html b/tests/wpt/web-platform-tests/navigation-api/state/same-document-away-and-back-location-api.html new file mode 100644 index 00000000000..d161df8b529 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/state/same-document-away-and-back-location-api.html @@ -0,0 +1,47 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/state/same-document-away-and-back-navigation-api.html b/tests/wpt/web-platform-tests/navigation-api/state/same-document-away-and-back-navigation-api.html new file mode 100644 index 00000000000..220908e4c46 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/state/same-document-away-and-back-navigation-api.html @@ -0,0 +1,53 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/basic.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/basic.html new file mode 100644 index 00000000000..b4a49e5bf9c --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/basic.html @@ -0,0 +1,25 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/cross-document-away-and-back.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/cross-document-away-and-back.html new file mode 100644 index 00000000000..c37d5e979a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/cross-document-away-and-back.html @@ -0,0 +1,31 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/cross-document-location-api.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/cross-document-location-api.html new file mode 100644 index 00000000000..26191fb8761 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/cross-document-location-api.html @@ -0,0 +1,20 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/exception-order-initial-about-blank-unserializablestate.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/exception-order-initial-about-blank-unserializablestate.html new file mode 100644 index 00000000000..010632a40fc --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/exception-order-initial-about-blank-unserializablestate.html @@ -0,0 +1,13 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/exception-order-not-fully-active-unserializablestate.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/exception-order-not-fully-active-unserializablestate.html new file mode 100644 index 00000000000..1e1c1e2bae4 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/exception-order-not-fully-active-unserializablestate.html @@ -0,0 +1,20 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/history-pushState.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/history-pushState.html new file mode 100644 index 00000000000..852294c64f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/history-pushState.html @@ -0,0 +1,11 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/history-replaceState.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/history-replaceState.html new file mode 100644 index 00000000000..3eb91a9a80c --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/history-replaceState.html @@ -0,0 +1,11 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/initial-about-blank.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/initial-about-blank.html new file mode 100644 index 00000000000..c28137c082a --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/initial-about-blank.html @@ -0,0 +1,13 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/location-reload.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/location-reload.html new file mode 100644 index 00000000000..8589eeb694e --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/location-reload.html @@ -0,0 +1,19 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/no-args.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/no-args.html new file mode 100644 index 00000000000..3fd011e3d37 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/no-args.html @@ -0,0 +1,15 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/not-fully-active.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/not-fully-active.html new file mode 100644 index 00000000000..fce5e72c8d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/not-fully-active.html @@ -0,0 +1,20 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/opaque-origin.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/opaque-origin.html similarity index 100% rename from tests/wpt/web-platform-tests/app-history/navigate/state/updateCurrent/opaque-origin.html rename to tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/opaque-origin.html diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/resources/opaque-origin-page.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/resources/opaque-origin-page.html new file mode 100644 index 00000000000..59931458a6b --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/resources/opaque-origin-page.html @@ -0,0 +1,11 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/same-document-away-and-back-location-api.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/same-document-away-and-back-location-api.html new file mode 100644 index 00000000000..47b1904f4f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/same-document-away-and-back-location-api.html @@ -0,0 +1,40 @@ + + + + diff --git a/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/unserializable.html b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/unserializable.html new file mode 100644 index 00000000000..596ab16d621 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/updateCurrentEntry-method/unserializable.html @@ -0,0 +1,29 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/dom_interactive_image_document.html b/tests/wpt/web-platform-tests/navigation-timing/dom-interactive-image-document.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/dom_interactive_image_document.html rename to tests/wpt/web-platform-tests/navigation-timing/dom-interactive-image-document.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/dom_interactive_media_document.html b/tests/wpt/web-platform-tests/navigation-timing/dom-interactive-media-document.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/dom_interactive_media_document.html rename to tests/wpt/web-platform-tests/navigation-timing/dom-interactive-media-document.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_data_uri.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-data-uri.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_data_uri.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-data-uri.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_exist.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-attributes-exist.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_exist.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-attributes-exist.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2-test-attributes-values.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-attributes-values.html new file mode 100644 index 00000000000..f13a8988fcb --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-attributes-values.html @@ -0,0 +1,137 @@ + + + + + Navigation Timing 2 WPT + + + + + + + +

                                                                      Description

                                                                      +

                                                                      This test validates that the values of nav timing 2 instance's timing-related attributes are in certain order and the others are of expected values.

                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_document_open.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-document-open.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_document_open.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-document-open.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_document_replaced.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-document-replaced.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_document_replaced.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-document-replaced.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_frame_removed.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-frame-removed.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_frame_removed.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-frame-removed.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessible_from_the_start.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-instance-accessible-from-the-start.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessible_from_the_start.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-instance-accessible-from-the-start.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2-test-instance-accessors.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-instance-accessors.html new file mode 100644 index 00000000000..17f36832c91 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-instance-accessors.html @@ -0,0 +1,78 @@ + + + + + Navigation Timing 2 WPT + + + + + + + +

                                                                      Description

                                                                      +

                                                                      This test validates that nav timing 2 instance can be accessed by three different accessors once available: window.performance.getEntries()/getEntriesByType("navigation")/getEntriesByName("document")

                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigate_iframe.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-navigate-iframe.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigate_iframe.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-navigate-iframe.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigate_within_document.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-navigate-within-document.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigate_within_document.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-navigate-within-document.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_backforward.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-navigation-type-backforward.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_backforward.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-navigation-type-backforward.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_navigate.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-navigation-type-navigate.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_navigate.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-navigation-type-navigate.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_reload.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-navigation-type-reload.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_reload.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-navigation-type-reload.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_chain_xserver_final_original_origin.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-redirect-chain-xserver-final-original-origin.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_chain_xserver_final_original_origin.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-redirect-chain-xserver-final-original-origin.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_chain_xserver_partial_opt_in.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-redirect-chain-xserver-partial-opt-in.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_chain_xserver_partial_opt_in.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-redirect-chain-xserver-partial-opt-in.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_none.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-redirect-none.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_none.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-redirect-none.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_server.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-redirect-server.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_server.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-redirect-server.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_xserver.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-redirect-xserver.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_xserver.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-redirect-xserver.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2-test-response-end-and-duration-before-during-and-after-load-event.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-response-end-and-duration-before-during-and-after-load-event.html new file mode 100644 index 00000000000..3876ce7e865 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-response-end-and-duration-before-during-and-after-load-event.html @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unique_nav_instances.html b/tests/wpt/web-platform-tests/navigation-timing/nav2-test-unique-nav-instances.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/nav2_test_unique_nav_instances.html rename to tests/wpt/web-platform-tests/navigation-timing/nav2-test-unique-nav-instances.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_values.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_values.html deleted file mode 100644 index 79809e41ddd..00000000000 --- a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_values.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - Navigation Timing 2 WPT - - - - - - - -

                                                                      Description

                                                                      -

                                                                      This test validates that the values of nav timing 2 instance's timing-related attributes are in certain order and the others are of expected values.

                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessors.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessors.html deleted file mode 100644 index a8fbfb4a306..00000000000 --- a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessors.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - Navigation Timing 2 WPT - - - - - - - -

                                                                      Description

                                                                      -

                                                                      This test validates that nav timing 2 instance can be accessed by three different accessors once available: window.performance.getEntries()/getEntriesByType("navigation")/getEntriesByName("document")

                                                                      - - - - diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_response_end_and_duration_before_during_and_after_load_event.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_response_end_and_duration_before_during_and_after_load_event.html deleted file mode 100644 index 7fd04d306e4..00000000000 --- a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_response_end_and_duration_before_during_and_after_load_event.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/navigation-timing/navigation-type-post-backforward.html b/tests/wpt/web-platform-tests/navigation-timing/navigation-type-post-backforward.html new file mode 100644 index 00000000000..1fbdf1ae9bf --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/navigation-type-post-backforward.html @@ -0,0 +1,64 @@ + + + + + Navigation Type Post Back Forward + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nested-unload-timing.html b/tests/wpt/web-platform-tests/navigation-timing/nested-unload-timing.html new file mode 100644 index 00000000000..1130fb68406 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nested-unload-timing.html @@ -0,0 +1,62 @@ + + + + + + Navigation Timing: unload event with nested contexts + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/prefetch-transfer-size-executor.html b/tests/wpt/web-platform-tests/navigation-timing/prefetch-transfer-size-executor.html new file mode 100644 index 00000000000..b791fd89b6a --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/prefetch-transfer-size-executor.html @@ -0,0 +1,66 @@ + + + + + Navigation Timing Transfert Size of Prefetched Page + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/prefetch-transfer-size-iframe.html b/tests/wpt/web-platform-tests/navigation-timing/prefetch-transfer-size-iframe.html new file mode 100644 index 00000000000..316f78b9557 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/prefetch-transfer-size-iframe.html @@ -0,0 +1,51 @@ + + + + + Navigation Timing Transfert Size of Prefetched Page + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_green_with_onunload.html b/tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-green-with-onunload.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_green_with_onunload.html rename to tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-green-with-onunload.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_green.html b/tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-green.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_green.html rename to tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-green.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-meta-redirect.html b/tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-meta-redirect.html new file mode 100644 index 00000000000..4b4bda096c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-meta-redirect.html @@ -0,0 +1,11 @@ + + + + + + Redirect Placeholder + + +

                                                                      Placeholder

                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_unload.html b/tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-unload.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_unload.html rename to tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-unload.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_yellow_with_onunload.html b/tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-yellow-with-onunload.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_yellow_with_onunload.html rename to tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-yellow-with-onunload.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_yellow.html b/tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-yellow.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_yellow.html rename to tests/wpt/web-platform-tests/navigation-timing/resources/blank-page-yellow.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_meta_redirect.html b/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_meta_redirect.html deleted file mode 100644 index 50d6e705717..00000000000 --- a/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_meta_redirect.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - Redirect Placeholder - - -

                                                                      Placeholder

                                                                      - - diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_prefetch.html b/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_prefetch.html new file mode 100644 index 00000000000..1112ca28ece --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_prefetch.html @@ -0,0 +1,27 @@ + + + + + + Page to be Prefetched + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_prefetch.html.headers b/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_prefetch.html.headers new file mode 100644 index 00000000000..771aba7f94c --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/resources/blank_page_prefetch.html.headers @@ -0,0 +1 @@ +Cache-Control: max-age=300 diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/iframe-prefetch-transfer-size.html b/tests/wpt/web-platform-tests/navigation-timing/resources/iframe-prefetch-transfer-size.html new file mode 100644 index 00000000000..fde01775b77 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/resources/iframe-prefetch-transfer-size.html @@ -0,0 +1,31 @@ + + + + + + Iframe Transfer Size Prefetch + + + +

                                                                      Placeholder

                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/navigation-type-post-back.html b/tests/wpt/web-platform-tests/navigation-timing/resources/navigation-type-post-back.html new file mode 100644 index 00000000000..8c19a2f5a5f --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/resources/navigation-type-post-back.html @@ -0,0 +1,10 @@ + + + + +
                                                                      + Post to page +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/navigation_type_post_back.py b/tests/wpt/web-platform-tests/navigation-timing/resources/navigation_type_post_back.py new file mode 100644 index 00000000000..9da06f4f035 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/resources/navigation_type_post_back.py @@ -0,0 +1,12 @@ +# Accoridng to routes.py in the wpt server implementation, POST method is +# handled by a Python script handler which requires this file to return an html. +def main(request, response): + content = """ + + + + navigate away. + + + """ + return content diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/performance_attribute_sender.html b/tests/wpt/web-platform-tests/navigation-timing/resources/performance-attribute-sender.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/resources/performance_attribute_sender.html rename to tests/wpt/web-platform-tests/navigation-timing/resources/performance-attribute-sender.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/respond-slowly.py b/tests/wpt/web-platform-tests/navigation-timing/resources/respond-slowly.py new file mode 100644 index 00000000000..e58e16f1f0d --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/resources/respond-slowly.py @@ -0,0 +1,29 @@ +import time + + +def main(request, response): + head = b"""""" + response.headers.set(b"Content-Length", str(len(head) + 1000)) + response.headers.set(b"Content-Type", b"text/html") + response.write_status_headers() + response.writer.write_content(head) + for i in range(100): + response.writer.write_content(b"1234567890") + time.sleep(0.01) diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/respond_slowly.py b/tests/wpt/web-platform-tests/navigation-timing/resources/respond_slowly.py deleted file mode 100644 index efcdefed44d..00000000000 --- a/tests/wpt/web-platform-tests/navigation-timing/resources/respond_slowly.py +++ /dev/null @@ -1,29 +0,0 @@ -import time - - -def main(request, response): - head = b"""""" - response.headers.set(b"Content-Length", str(len(head) + 10000)) - response.headers.set(b"Content-Type", b"text/html") - response.write_status_headers() - response.writer.write_content(head) - for i in range(1000): - response.writer.write_content(b"1234567890") - time.sleep(0.001) diff --git a/tests/wpt/web-platform-tests/navigation-timing/secure_connection_start_non_zero.https.html b/tests/wpt/web-platform-tests/navigation-timing/secure-connection-start-non-zero.https.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/secure_connection_start_non_zero.https.html rename to tests/wpt/web-platform-tests/navigation-timing/secure-connection-start-non-zero.https.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/supported_navigation_type.window.js b/tests/wpt/web-platform-tests/navigation-timing/supported-navigation-type.window.js similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/supported_navigation_type.window.js rename to tests/wpt/web-platform-tests/navigation-timing/supported-navigation-type.window.js diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_document_onload.html b/tests/wpt/web-platform-tests/navigation-timing/test-document-onload.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_document_onload.html rename to tests/wpt/web-platform-tests/navigation-timing/test-document-onload.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_document_open.html b/tests/wpt/web-platform-tests/navigation-timing/test-document-open.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_document_open.html rename to tests/wpt/web-platform-tests/navigation-timing/test-document-open.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_document_readiness_exist.html b/tests/wpt/web-platform-tests/navigation-timing/test-document-readiness-exist.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_document_readiness_exist.html rename to tests/wpt/web-platform-tests/navigation-timing/test-document-readiness-exist.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_navigate_within_document.html b/tests/wpt/web-platform-tests/navigation-timing/test-navigate-within-document.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_navigate_within_document.html rename to tests/wpt/web-platform-tests/navigation-timing/test-navigate-within-document.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_navigation_attributes_exist.html b/tests/wpt/web-platform-tests/navigation-timing/test-navigation-attributes-exist.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_navigation_attributes_exist.html rename to tests/wpt/web-platform-tests/navigation-timing/test-navigation-attributes-exist.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_navigation_redirectCount_none.html b/tests/wpt/web-platform-tests/navigation-timing/test-navigation-redirectCount-none.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_navigation_redirectCount_none.html rename to tests/wpt/web-platform-tests/navigation-timing/test-navigation-redirectCount-none.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_navigation_type_backforward.html b/tests/wpt/web-platform-tests/navigation-timing/test-navigation-type-backforward.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_navigation_type_backforward.html rename to tests/wpt/web-platform-tests/navigation-timing/test-navigation-type-backforward.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_navigation_type_enums.html b/tests/wpt/web-platform-tests/navigation-timing/test-navigation-type-enums.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_navigation_type_enums.html rename to tests/wpt/web-platform-tests/navigation-timing/test-navigation-type-enums.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_navigation_type_reload.html b/tests/wpt/web-platform-tests/navigation-timing/test-navigation-type-reload.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_navigation_type_reload.html rename to tests/wpt/web-platform-tests/navigation-timing/test-navigation-type-reload.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_no_previous_document.html b/tests/wpt/web-platform-tests/navigation-timing/test-no-previous-document.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_no_previous_document.html rename to tests/wpt/web-platform-tests/navigation-timing/test-no-previous-document.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test-performance-attributes-exist-in-object.html b/tests/wpt/web-platform-tests/navigation-timing/test-performance-attributes-exist-in-object.html new file mode 100644 index 00000000000..25fa6b782ea --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/test-performance-attributes-exist-in-object.html @@ -0,0 +1,29 @@ + + + + + window.performance attribute exists in an object + + + + + + + + + +

                                                                      Description

                                                                      +

                                                                      This test validates that the window.performance object exists in an + object element (but does not validate that their values are correct).

                                                                      + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_performance_attributes_exist.html b/tests/wpt/web-platform-tests/navigation-timing/test-performance-attributes-exist.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_performance_attributes_exist.html rename to tests/wpt/web-platform-tests/navigation-timing/test-performance-attributes-exist.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test-performance-attributes.sub.html b/tests/wpt/web-platform-tests/navigation-timing/test-performance-attributes.sub.html new file mode 100644 index 00000000000..50d027e80ce --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/test-performance-attributes.sub.html @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_readwrite.html b/tests/wpt/web-platform-tests/navigation-timing/test-readwrite.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_readwrite.html rename to tests/wpt/web-platform-tests/navigation-timing/test-readwrite.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_timing_attributes_exist.html b/tests/wpt/web-platform-tests/navigation-timing/test-timing-attributes-exist.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_timing_attributes_exist.html rename to tests/wpt/web-platform-tests/navigation-timing/test-timing-attributes-exist.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_timing_attributes_order.html b/tests/wpt/web-platform-tests/navigation-timing/test-timing-attributes-order.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_timing_attributes_order.html rename to tests/wpt/web-platform-tests/navigation-timing/test-timing-attributes-order.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test-timing-client-redirect.html b/tests/wpt/web-platform-tests/navigation-timing/test-timing-client-redirect.html new file mode 100644 index 00000000000..c376f42bb71 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/test-timing-client-redirect.html @@ -0,0 +1,56 @@ + + + + + window.performance.timing.redirect attributes on a client redirect navigation + + + + + + + + + + + +

                                                                      Description

                                                                      +

                                                                      This test validates the values of the window.navigation.redirectCount and the + window.performance.timing.redirectStart/End times on a client side redirect.

                                                                      + +

                                                                      + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_timing_reload.html b/tests/wpt/web-platform-tests/navigation-timing/test-timing-reload.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_timing_reload.html rename to tests/wpt/web-platform-tests/navigation-timing/test-timing-reload.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_timing_server_redirect.html b/tests/wpt/web-platform-tests/navigation-timing/test-timing-server-redirect.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_timing_server_redirect.html rename to tests/wpt/web-platform-tests/navigation-timing/test-timing-server-redirect.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_timing_xserver_redirect.html b/tests/wpt/web-platform-tests/navigation-timing/test-timing-xserver-redirect.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_timing_xserver_redirect.html rename to tests/wpt/web-platform-tests/navigation-timing/test-timing-xserver-redirect.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_unique_performance_objects.html b/tests/wpt/web-platform-tests/navigation-timing/test-unique-performance-objects.html similarity index 100% rename from tests/wpt/web-platform-tests/navigation-timing/test_unique_performance_objects.html rename to tests/wpt/web-platform-tests/navigation-timing/test-unique-performance-objects.html diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_performance_attributes.sub.html b/tests/wpt/web-platform-tests/navigation-timing/test_performance_attributes.sub.html deleted file mode 100644 index 4c9ce6e0816..00000000000 --- a/tests/wpt/web-platform-tests/navigation-timing/test_performance_attributes.sub.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_performance_attributes_exist_in_object.html b/tests/wpt/web-platform-tests/navigation-timing/test_performance_attributes_exist_in_object.html deleted file mode 100644 index 9035522aee9..00000000000 --- a/tests/wpt/web-platform-tests/navigation-timing/test_performance_attributes_exist_in_object.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - window.performance attribute exists in an object - - - - - - - - - -

                                                                      Description

                                                                      -

                                                                      This test validates that the window.performance object exists in an - object element (but does not validate that their values are correct).

                                                                      - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_timing_client_redirect.html b/tests/wpt/web-platform-tests/navigation-timing/test_timing_client_redirect.html deleted file mode 100644 index bebf39eb98a..00000000000 --- a/tests/wpt/web-platform-tests/navigation-timing/test_timing_client_redirect.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - window.performance.timing.redirect attributes on a client redirect navigation - - - - - - - - - - - -

                                                                      Description

                                                                      -

                                                                      This test validates the values of the window.navigation.redirectCount and the - window.performance.timing.redirectStart/End times on a client side redirect.

                                                                      - -

                                                                      - - - diff --git a/tests/wpt/web-platform-tests/notifications/historical.any.js b/tests/wpt/web-platform-tests/notifications/historical.any.js new file mode 100644 index 00000000000..fe5f3e9059d --- /dev/null +++ b/tests/wpt/web-platform-tests/notifications/historical.any.js @@ -0,0 +1,3 @@ +test(() => { + assert_equals(Notification.get, undefined); +}, "Notification.get is obsolete"); diff --git a/tests/wpt/web-platform-tests/orientation-event/motion/requestPermission.https.window.js b/tests/wpt/web-platform-tests/orientation-event/motion/requestPermission.https.window.js new file mode 100644 index 00000000000..2c96d26d10f --- /dev/null +++ b/tests/wpt/web-platform-tests/orientation-event/motion/requestPermission.https.window.js @@ -0,0 +1,48 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js + +'use strict'; + +// The Device Orientation spec does not fully integrate with the Permissions +// spec and does not list the permissions that are expected for +// requestPermission() to work. The list below was based on the permission +// tokens corresponding to the sensors used to implement support for motion +// events. They also match the feature policy tokens required by both Blink and +// WebKit. +const permissionDescriptorNames = ['accelerometer', 'gyroscope']; + +promise_test(async (t) => { + await Promise.all(permissionDescriptorNames.map( + name => test_driver.set_permission({name}, 'granted'))); + + const permission = await DeviceMotionEvent.requestPermission(); + assert_equals(permission, 'granted'); +}, 'requestPermission() returns "granted" for granted permissions without user activation'); + +promise_test(async (t) => { + await Promise.all(permissionDescriptorNames.map( + name => test_driver.set_permission({name}, 'granted'))); + + return test_driver.bless('enable user activation', async () => { + const permission = await DeviceMotionEvent.requestPermission(); + assert_equals(permission, 'granted'); + }); +}, 'requestPermission() returns "granted" for granted permissions with user activation'); + +promise_test(async (t) => { + await Promise.all(permissionDescriptorNames.map( + name => test_driver.set_permission({name}, 'denied'))); + + const permission = await DeviceMotionEvent.requestPermission(); + assert_equals(permission, 'denied'); +}, 'requestPermission() returns "denied" for denied permissions without user activation'); + +promise_test(async (t) => { + await Promise.all(permissionDescriptorNames.map( + name => test_driver.set_permission({name}, 'denied'))); + + return test_driver.bless('enable user activation', async () => { + const permission = await DeviceMotionEvent.requestPermission(); + assert_equals(permission, 'denied'); + }); +}, 'requestPermission() returns "denied" for denied permissions with user activation'); diff --git a/tests/wpt/web-platform-tests/orientation-event/orientation/requestPermission.https.window.js b/tests/wpt/web-platform-tests/orientation-event/orientation/requestPermission.https.window.js new file mode 100644 index 00000000000..4a39a238d01 --- /dev/null +++ b/tests/wpt/web-platform-tests/orientation-event/orientation/requestPermission.https.window.js @@ -0,0 +1,48 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js + +'use strict'; + +// The Device Orientation spec does not fully integrate with the Permissions +// spec and does not list the permissions that are expected for +// requestPermission() to work. The list below was based on the permissions +// listed in https://w3c.github.io/orientation-sensor/#model for the low-level +// sensors that power absolute and relative orientation sensors. +const permissionDescriptorNames = + ['accelerometer', 'gyroscope', 'magnetometer']; + +promise_test(async (t) => { + await Promise.all(permissionDescriptorNames.map( + name => test_driver.set_permission({name}, 'granted'))); + + const permission = await DeviceOrientationEvent.requestPermission(); + assert_equals(permission, 'granted'); +}, 'requestPermission() returns "granted" for granted permissions without user activation'); + +promise_test(async (t) => { + await Promise.all(permissionDescriptorNames.map( + name => test_driver.set_permission({name}, 'granted'))); + + return test_driver.bless('enable user activation', async () => { + const permission = await DeviceOrientationEvent.requestPermission(); + assert_equals(permission, 'granted'); + }); +}, 'requestPermission() returns "granted" for granted permissions with user activation'); + +promise_test(async (t) => { + await Promise.all(permissionDescriptorNames.map( + name => test_driver.set_permission({name}, 'denied'))); + + const permission = await DeviceOrientationEvent.requestPermission(); + assert_equals(permission, 'denied'); +}, 'requestPermission() returns "denied" for denied permissions without user activation'); + +promise_test(async (t) => { + await Promise.all(permissionDescriptorNames.map( + name => test_driver.set_permission({name}, 'denied'))); + + return test_driver.bless('enable user activation', async () => { + const permission = await DeviceOrientationEvent.requestPermission(); + assert_equals(permission, 'denied'); + }); +}, 'requestPermission() returns "denied" for denied permissions with user activation'); diff --git a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor.https.html b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor.https.html index 7c5adc63d29..e6f5dd91383 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor.https.html @@ -18,6 +18,6 @@ runGenericSensorTests( verifyQuatSensorReading, ['accelerometer', 'gyroscope', 'magnetometer']); -runOrienationSensorTests('AbsoluteOrientationSensor'); +runOrientationSensorTests('AbsoluteOrientationSensor'); diff --git a/tests/wpt/web-platform-tests/orientation-sensor/META.yml b/tests/wpt/web-platform-tests/orientation-sensor/META.yml index 427385826fc..b780d2c90cb 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/META.yml +++ b/tests/wpt/web-platform-tests/orientation-sensor/META.yml @@ -1,6 +1,5 @@ spec: https://w3c.github.io/orientation-sensor/ suggested_reviewers: - - zqzhang - riju - Honry - rakuco diff --git a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor.https.html b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor.https.html index 75983793cd8..499e7df8cea 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor.https.html @@ -18,6 +18,6 @@ runGenericSensorTests( verifyQuatSensorReading, ['accelerometer', 'gyroscope']); -runOrienationSensorTests('RelativeOrientationSensor'); +runOrientationSensorTests('RelativeOrientationSensor'); diff --git a/tests/wpt/web-platform-tests/orientation-sensor/orientation-sensor-tests.js b/tests/wpt/web-platform-tests/orientation-sensor/orientation-sensor-tests.js index 9d44d638705..88fd432d470 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/orientation-sensor-tests.js +++ b/tests/wpt/web-platform-tests/orientation-sensor/orientation-sensor-tests.js @@ -74,7 +74,7 @@ async function checkPopulateMatrix(t, sensorProvider, sensorType) { sensor.stop(); } -function runOrienationSensorTests(sensorName) { +function runOrientationSensorTests(sensorName) { const sensorType = self[sensorName]; sensor_test(async t => { diff --git a/tests/wpt/web-platform-tests/origin-policy/META.yml b/tests/wpt/web-platform-tests/origin-policy/META.yml deleted file mode 100644 index 9efb2a7d671..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/META.yml +++ /dev/null @@ -1 +0,0 @@ -spec: https://wicg.github.io/origin-policy/ diff --git a/tests/wpt/web-platform-tests/origin-policy/bad-server/bad-headers.https.html b/tests/wpt/web-platform-tests/origin-policy/bad-server/bad-headers.https.html deleted file mode 100644 index 127aa41cef8..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/bad-server/bad-headers.https.html +++ /dev/null @@ -1,51 +0,0 @@ - - -Origin-Policy malformed headers must cause network errors - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-404.https.html b/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-404.https.html deleted file mode 100644 index 51436be6766..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-404.https.html +++ /dev/null @@ -1,17 +0,0 @@ - - -Origin policy manifests delivered with a 404 status code must be ignored - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-mimetype.https.html b/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-mimetype.https.html deleted file mode 100644 index 5231a438764..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-mimetype.https.html +++ /dev/null @@ -1,17 +0,0 @@ - - -Origin policy manifests served with the wrong MIME type must be ignored - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-utf16le.https.html b/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-utf16le.https.html deleted file mode 100644 index 93d46d7e9aa..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-utf16le.https.html +++ /dev/null @@ -1,17 +0,0 @@ - - -Origin policy manifests authored as UTF-16LE must not work - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-utf8-with-bom.https.html b/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-utf8-with-bom.https.html deleted file mode 100644 index 5657b5dc914..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/bad-server/manifest-utf8-with-bom.https.html +++ /dev/null @@ -1,17 +0,0 @@ - - -Origin policy manifests delivered with a UTF-8 BOM must work (the BOM is ignored) - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/bad-server/resources/subframe-with-bad-header.py b/tests/wpt/web-platform-tests/origin-policy/bad-server/resources/subframe-with-bad-header.py deleted file mode 100644 index 3fc6c1c942b..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/bad-server/resources/subframe-with-bad-header.py +++ /dev/null @@ -1,13 +0,0 @@ -def main(request, response): - """Send a response with the Origin-Policy header given in the query string. - """ - header = request.GET.first(b"header") - - response.headers.set(b"Origin-Policy", header) - response.headers.set(b"Content-Type", b"text/html") - - return u""" - - - Origin policy bad header subframe - """ diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/comma-in-policy.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/comma-in-policy.https.html deleted file mode 100644 index 07d10811f0b..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/comma-in-policy.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Commas in "content_security/policy" cause parse errors and thus no CSP - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/double-content-security.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/double-content-security.https.html deleted file mode 100644 index 357bd7669a6..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/double-content-security.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Of two "content_security" items only the second counts - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/double-policies.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/double-policies.https.html deleted file mode 100644 index 327670fcad0..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/double-policies.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Of two "content_security/policies" items only the second counts - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/non-array.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/non-array.https.html deleted file mode 100644 index c95b5a15b0e..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/non-array.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Non-array "content_security/policies" member must be ignored - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/non-object.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/non-object.https.html deleted file mode 100644 index 220136c4d05..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/non-object.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Non-object "content_security" member must be ignored - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/non-string.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/non-string.https.html deleted file mode 100644 index 57c29fe265b..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/non-string.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Non-string "content_security/policies" array member must be ignored - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/allow-unsafe-eval-disallow-images.mjs b/tests/wpt/web-platform-tests/origin-policy/content-security/resources/allow-unsafe-eval-disallow-images.mjs deleted file mode 100644 index 8715e74e5df..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/allow-unsafe-eval-disallow-images.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { runCSPTest } from "./helper.mjs"; - -runCSPTest({ unsafeEval: true, img: false }); diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/allow-unsafe-eval.mjs b/tests/wpt/web-platform-tests/origin-policy/content-security/resources/allow-unsafe-eval.mjs deleted file mode 100644 index bd6ca6f8bbd..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/allow-unsafe-eval.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { runCSPTest } from "./helper.mjs"; - -runCSPTest({ unsafeEval: true }); diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/disallow-unsafe-eval-disallow-images.mjs b/tests/wpt/web-platform-tests/origin-policy/content-security/resources/disallow-unsafe-eval-disallow-images.mjs deleted file mode 100644 index 41b25553d56..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/disallow-unsafe-eval-disallow-images.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { runCSPTest } from "./helper.mjs"; - -runCSPTest({ unsafeEval: false, img: false }); diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/helper.mjs b/tests/wpt/web-platform-tests/origin-policy/content-security/resources/helper.mjs deleted file mode 100644 index 5eff7e16ba0..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/helper.mjs +++ /dev/null @@ -1,72 +0,0 @@ -export function waitForOneSecurityPolicyViolationEvent(expectedBlockedURI) { - return new Promise(resolve => { - let eventCount = 0; - let blockedURI = null; - - document.addEventListener("securitypolicyviolation", e => { - ++eventCount; - blockedURI = e.blockedURI; - - // We want to test that only one event is fired, but we want to do so - // without waiting indefinitely. By waiting for one tick, we at least - // ensure that there's no bug that leads to two securitypolicyviolation - // events being fired at the same time, as a result of the one violation. - step_timeout(() => { - assert_equals(eventCount, 1); - resolve(blockedURI); - }); - }); - }); -} - -export function waitForImgFail(imgSrc) { - return new Promise((resolve, reject) => { - const img = document.createElement("img"); - img.onload = () => reject(new Error("Must not load the image")); - img.onerror = () => resolve(); - - img.src = imgSrc; - document.body.append(img); - }); -} - -export function waitForImgSuccess(imgSrc) { - return new Promise((resolve, reject) => { - const img = document.createElement("img"); - img.onload = () => resolve(); - img.onerror = () => reject(new Error("Must load the image")); - - img.src = imgSrc; - document.body.append(img); - }); -} - -// Both params are optional; if they are not given as booleans then we will not test that aspect. -export function runCSPTest({ unsafeEval, img }) { - if (unsafeEval === true) { - test(() => { - eval("window.evalAllowed = true;"); - assert_equals(window.evalAllowed, true); - }, "eval must be allowed"); - } else if (unsafeEval === false) { - test(() => { - try { - eval("window.evalAllowed = true;"); - } catch (e) { } - - assert_equals(window.evalAllowed, undefined); - }, "eval must be disallowed"); - } - - if (img === true) { - promise_test( - () => waitForImgSuccess("/common/security-features/subresource/image.py"), - "img loading must be allowed" - ); - } else if (img === false) { - promise_test( - () => waitForImgFail("/common/security-features/subresource/image.py"), - "img loading must be disallowed" - ); - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/trigger-violation-report-report-only.mjs b/tests/wpt/web-platform-tests/origin-policy/content-security/resources/trigger-violation-report-report-only.mjs deleted file mode 100644 index 9766717e309..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/trigger-violation-report-report-only.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { waitForOneSecurityPolicyViolationEvent, waitForImgSuccess } from "./helper.mjs"; - -promise_test(() => { - const imgURL = (new URL("/common/security-features/subresource/image.py", document.location)).href; - - return Promise.all([ - waitForOneSecurityPolicyViolationEvent(imgURL).then(blockedURI => { - assert_equals(blockedURI, imgURL); - }), - waitForImgSuccess(imgURL) - ]); -}); diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/trigger-violation-report.mjs b/tests/wpt/web-platform-tests/origin-policy/content-security/resources/trigger-violation-report.mjs deleted file mode 100644 index 319c87b0f8a..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/resources/trigger-violation-report.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { waitForOneSecurityPolicyViolationEvent, waitForImgFail } from "./helper.mjs"; - -promise_test(() => { - const imgURL = (new URL("/common/security-features/subresource/image.py", document.location)).href; - - return Promise.all([ - waitForOneSecurityPolicyViolationEvent(imgURL).then(blockedURI => { - assert_equals(blockedURI, imgURL); - }), - waitForImgFail(imgURL) - ]); -}); diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/trigger-violation-report-report-only.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/trigger-violation-report-report-only.https.html deleted file mode 100644 index 9eb83792852..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/trigger-violation-report-report-only.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -CSP via origin policy must trigger a securitypolicyviolation event even when the CSP is report-only - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/trigger-violation-report.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/trigger-violation-report.https.html deleted file mode 100644 index f981b2b05ce..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/trigger-violation-report.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -CSP via origin policy must trigger a securitypolicyviolation event - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/valid-with-multi-item-array.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/valid-with-multi-item-array.https.html deleted file mode 100644 index 36333a1e4b1..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/valid-with-multi-item-array.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -"content_security/policy" can contain multiple array items to enforce multiple CSPs - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/valid-with-semicolon.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/valid-with-semicolon.https.html deleted file mode 100644 index 9eadc8f89d3..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/content-security/valid-with-semicolon.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -"content_security/policy" array items can contain semicolons to enforce multiple CSP directives - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/features/comma-in-policy.https.html b/tests/wpt/web-platform-tests/origin-policy/features/comma-in-policy.https.html deleted file mode 100644 index a9faba4bfd4..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/features/comma-in-policy.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Commas in "features/policy" cause parse errors and thus no feature policy - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/features/double-features.https.html b/tests/wpt/web-platform-tests/origin-policy/features/double-features.https.html deleted file mode 100644 index aa687d681c6..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/features/double-features.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Of two "features" items only the second counts - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/features/double-policy.https.html b/tests/wpt/web-platform-tests/origin-policy/features/double-policy.https.html deleted file mode 100644 index d9e544acaaf..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/features/double-policy.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Of two "features/policy" items only the second counts - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/features/non-object.https.html b/tests/wpt/web-platform-tests/origin-policy/features/non-object.https.html deleted file mode 100644 index d1be8e89377..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/features/non-object.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Non-object "features" member must be ignored - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/features/non-string.https.html b/tests/wpt/web-platform-tests/origin-policy/features/non-string.https.html deleted file mode 100644 index 99645fc6d9d..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/features/non-string.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Non-string "features/policy" member must be ignored - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/features/resources/helper.mjs b/tests/wpt/web-platform-tests/origin-policy/features/resources/helper.mjs deleted file mode 100644 index 0ea3b011014..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/features/resources/helper.mjs +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; - -export function runFPTest({ camera, geolocation }) { - test(() => { - assert_equals(document.featurePolicy.allowsFeature('camera'), camera, 'camera'); - assert_equals(document.featurePolicy.allowsFeature('geolocation'), geolocation, 'geolocation'); - }); -} diff --git a/tests/wpt/web-platform-tests/origin-policy/features/resources/no-camera-no-geolocation.mjs b/tests/wpt/web-platform-tests/origin-policy/features/resources/no-camera-no-geolocation.mjs deleted file mode 100644 index b25d9abcb92..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/features/resources/no-camera-no-geolocation.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { runFPTest } from "./helper.mjs"; - -runFPTest({ camera: false, geolocation: false }); diff --git a/tests/wpt/web-platform-tests/origin-policy/features/resources/no-camera-yes-geolocation.mjs b/tests/wpt/web-platform-tests/origin-policy/features/resources/no-camera-yes-geolocation.mjs deleted file mode 100644 index a961deeb389..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/features/resources/no-camera-yes-geolocation.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { runFPTest } from "./helper.mjs"; - -runFPTest({ camera: false, geolocation: true }); diff --git a/tests/wpt/web-platform-tests/origin-policy/features/resources/yes-camera-yes-geolocation.mjs b/tests/wpt/web-platform-tests/origin-policy/features/resources/yes-camera-yes-geolocation.mjs deleted file mode 100644 index 9f3b1d8303f..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/features/resources/yes-camera-yes-geolocation.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { runFPTest } from "./helper.mjs"; - -runFPTest({ camera: true, geolocation: true }); diff --git a/tests/wpt/web-platform-tests/origin-policy/features/valid-with-semicolon.https.html b/tests/wpt/web-platform-tests/origin-policy/features/valid-with-semicolon.https.html deleted file mode 100644 index 53ea7a94019..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/features/valid-with-semicolon.https.html +++ /dev/null @@ -1,16 +0,0 @@ - - -Valid "features" member, with a semicolon - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/idlharness.any.js b/tests/wpt/web-platform-tests/origin-policy/idlharness.any.js deleted file mode 100644 index d239c29b47e..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/idlharness.any.js +++ /dev/null @@ -1,18 +0,0 @@ -// META: global=window,worker -// META: script=/resources/WebIDLParser.js -// META: script=/resources/idlharness.js -// META: timeout=long - -'use strict'; - -idl_test( - ['origin-policy'], - ['html', 'dom'], - idl_array => { - if (self.Window) { - idl_array.add_objects({ Window: ['self'] }); - } else { - idl_array.add_objects({ WorkerGlobalScope: ['self'] }); - } - } -); diff --git a/tests/wpt/web-platform-tests/origin-policy/ids/empty-ids-after-nonempty.https.html b/tests/wpt/web-platform-tests/origin-policy/ids/empty-ids-after-nonempty.https.html deleted file mode 100644 index 3bffa9cffa7..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/ids/empty-ids-after-nonempty.https.html +++ /dev/null @@ -1,17 +0,0 @@ - - -Origin policy with empty-array "ids" member that occurs after a non-empty "ids" member must be ignored - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/ids/empty-ids.https.html b/tests/wpt/web-platform-tests/origin-policy/ids/empty-ids.https.html deleted file mode 100644 index 385aa7c66fe..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/ids/empty-ids.https.html +++ /dev/null @@ -1,17 +0,0 @@ - - -Origin policy with empty-array "ids" member must be ignored - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/ids/mix-of-ids.https.html b/tests/wpt/web-platform-tests/origin-policy/ids/mix-of-ids.https.html deleted file mode 100644 index 7be2c9f48df..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/ids/mix-of-ids.https.html +++ /dev/null @@ -1,25 +0,0 @@ - - -Origin policy must include valid IDs and exclude non-strings and invalid strings - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/ids/no-ids.https.html b/tests/wpt/web-platform-tests/origin-policy/ids/no-ids.https.html deleted file mode 100644 index 1fe3d480d0a..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/ids/no-ids.https.html +++ /dev/null @@ -1,17 +0,0 @@ - - -Origin policy with no "ids" member must be ignored - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/ids/non-array-id.https.html b/tests/wpt/web-platform-tests/origin-policy/ids/non-array-id.https.html deleted file mode 100644 index 223b78f929c..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/ids/non-array-id.https.html +++ /dev/null @@ -1,17 +0,0 @@ - - -Origin policy a non-array "ids" member must be ignored - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/ids/same-object-returned.https.html b/tests/wpt/web-platform-tests/origin-policy/ids/same-object-returned.https.html deleted file mode 100644 index 9286f9f7344..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/ids/same-object-returned.https.html +++ /dev/null @@ -1,14 +0,0 @@ - - -originPolicyIds must return the same object each time - - - - diff --git a/tests/wpt/web-platform-tests/origin-policy/ids/still-present-in-http.html b/tests/wpt/web-platform-tests/origin-policy/ids/still-present-in-http.html deleted file mode 100644 index 01969450f92..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/ids/still-present-in-http.html +++ /dev/null @@ -1,16 +0,0 @@ - - -originPolicyIds must return an empty array in http: pages - - - - diff --git a/tests/wpt/web-platform-tests/origin-policy/ids/two-ids.https.html b/tests/wpt/web-platform-tests/origin-policy/ids/two-ids.https.html deleted file mode 100644 index da9ab2e9511..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/ids/two-ids.https.html +++ /dev/null @@ -1,21 +0,0 @@ - - -Origin policy second "ids" member must take precedence - - - - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/README.md b/tests/wpt/web-platform-tests/origin-policy/policies/README.md deleted file mode 100644 index d45f8004bf4..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/README.md +++ /dev/null @@ -1,7 +0,0 @@ -These policies are served via the Python script at /.well-known/origin-policy. Their filenames must be in the form `subdomain human-facing-string-with-no-spaces.json`. They will be served in response to requests to that subdomain. - -The human-facing string has no impact on the tests, and just makes it easier to scroll through the list. - -The list of potential hostnames is created by `tools/serve/serve.py`'s `_make_origin_policy_subdomains` function, and can be expanded as necessary. - -At the moment, the origin policies starting at 100 downward have special handling in the `/.well-known/origin-policy` handler, and might require consulting that file to get the full context. The ones starting at 1 upward are handled generically. If they ever start meeting in the middle we can reevaluate this scheme. diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op1 cspfp-comma-in-policy.json b/tests/wpt/web-platform-tests/origin-policy/policies/op1 cspfp-comma-in-policy.json deleted file mode 100644 index 189d28db8ba..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op1 cspfp-comma-in-policy.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ids": [ - "cspfp-comma-in-policy" - ], - "content_security": { - "policies": [ - "script-src 'self' 'unsafe-inline', img-src 'none'" - ] - }, - "features": { - "policy": "camera 'self' https://example.com/, geolocation 'self' https://example.com/" - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op10 cspfp-valid.json b/tests/wpt/web-platform-tests/origin-policy/policies/op10 cspfp-valid.json deleted file mode 100644 index c3bea5c7bcc..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op10 cspfp-valid.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ids": [ - "cspfp-valid" - ], - "content_security": { - "policies": [ - "script-src 'self' 'unsafe-inline'; img-src 'none'" - ] - }, - "features": { - "policy": "camera 'none'; geolocation 'self' https://example.com/" - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op100 manifest-mimetype.json b/tests/wpt/web-platform-tests/origin-policy/policies/op100 manifest-mimetype.json deleted file mode 100644 index 3d906d500ba..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op100 manifest-mimetype.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ids" : ["csp-valid-but-served-with-invalid-mimetype"], - "content_security" : { - "policies" : ["script-src 'self' 'unsafe-inline'"] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op11 no-ids.json b/tests/wpt/web-platform-tests/origin-policy/policies/op11 no-ids.json deleted file mode 100644 index 0f3907bb3e6..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op11 no-ids.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "content_security": { - "policies": [ - "script-src 'self' 'unsafe-inline'" - ] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op12 empty-ids.json b/tests/wpt/web-platform-tests/origin-policy/policies/op12 empty-ids.json deleted file mode 100644 index e5c31d2561c..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op12 empty-ids.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ids": [], - "content_security": { - "policies": [ - "script-src 'self' 'unsafe-inline'" - ] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op13 empty-ids-after-nonempty.json b/tests/wpt/web-platform-tests/origin-policy/policies/op13 empty-ids-after-nonempty.json deleted file mode 100644 index 77377245744..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op13 empty-ids-after-nonempty.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ids": [ - "this should be overwritten by the subsequent one" - ], - "ids": [], - "content_security": { - "policies": [ - "script-src 'self' 'unsafe-inline'" - ] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op14 non-array-id.json b/tests/wpt/web-platform-tests/origin-policy/policies/op14 non-array-id.json deleted file mode 100644 index bc7cf74fbaa..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op14 non-array-id.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ids": "this is not an array", - "content_security": { - "policies": [ - "script-src 'self' 'unsafe-inline'" - ] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op15 mix-of-ids.json b/tests/wpt/web-platform-tests/origin-policy/policies/op15 mix-of-ids.json deleted file mode 100644 index b49637dbd5c..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op15 mix-of-ids.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "ids": [ - "my-policy-1", - ["my-policy-array"], - 5, - null, - { "id": "my-policy-object" }, - "my-policy-2", - true, - "~", - " ", - "\u0000", - "\t", - "my\tpolicy", - "!\"#$%&'()*+,-./:;<=>?@{|}~", - "my\u007Fpolicy", - "azAZ", - "my\u0080policy", - "my~policy", - "my\u1234policy" - ], - "content_security": { - "policies": [ - "script-src 'self' 'unsafe-inline'", - "img-src 'none'" - ] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op16 two-ids.json b/tests/wpt/web-platform-tests/origin-policy/policies/op16 two-ids.json deleted file mode 100644 index 7a7d8398aa1..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op16 two-ids.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "ids": [ - "1", - "2" - ], - "ids": [ - "3", - "4" - ], - "content_security": { - "policies": [ - "script-src 'self' 'unsafe-inline'", - "img-src 'none'" - ] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op2 cspfp-double-top-level.json b/tests/wpt/web-platform-tests/origin-policy/policies/op2 cspfp-double-top-level.json deleted file mode 100644 index 59c34190fd9..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op2 cspfp-double-top-level.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "ids": [ - "cspfp-double-top-level" - ], - "content_security": { - "policies": [ - "script-src 'self' 'unsafe-inline'" - ] - }, - "content_security": { - "policies": [ - "img-src 'none'" - ] - }, - "features": { - "policy": "geolocation 'none'" - }, - "features": { - "policy": "camera 'none'" - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op3 cspfp-double-second-level.json b/tests/wpt/web-platform-tests/origin-policy/policies/op3 cspfp-double-second-level.json deleted file mode 100644 index 6665332807b..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op3 cspfp-double-second-level.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "ids": [ - "cspfp-double-second-level" - ], - "content_security": { - "policies": [ - "script-src 'self' 'unsafe-inline'" - ], - "policies": [ - "img-src 'none'" - ] - }, - "features": { - "policy": "camera 'self' https://example.com/", - "policy": "geolocation 'self' https://example.com/" - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op4 csp-non-array.json b/tests/wpt/web-platform-tests/origin-policy/policies/op4 csp-non-array.json deleted file mode 100644 index 5916b1ff9b5..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op4 csp-non-array.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ids": [ - "csp-non-array" - ], - "content_security": { - "policies": "script-src 'self' 'unsafe-inline'" - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op5 cspfp-non-object.json b/tests/wpt/web-platform-tests/origin-policy/policies/op5 cspfp-non-object.json deleted file mode 100644 index 1e404608b59..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op5 cspfp-non-object.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ids": [ - "cspfp-non-object" - ], - "content_security": [ - "script-src 'self' 'unsafe-inline'" - ], - "features": "camera 'none'" -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op6 cspfp-non-string.json b/tests/wpt/web-platform-tests/origin-policy/policies/op6 cspfp-non-string.json deleted file mode 100644 index 231e7d4326f..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op6 cspfp-non-string.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "ids": [ - "csp-non-string" - ], - "content_security": { - "policies": [ - [ - "script-src 'self' 'unsafe-inline'" - ] - ] - }, - "features": { - "policy": [ - "camera 'none'" - ] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op7 csp-noimg-report-only.json b/tests/wpt/web-platform-tests/origin-policy/policies/op7 csp-noimg-report-only.json deleted file mode 100644 index fd5c522042a..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op7 csp-noimg-report-only.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "ids": [ - "csp-noimg-report-only" - ], - "content_security": { - "policies_report_only": [ - "img-src 'none'" - ] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op8 csp-noimg.json b/tests/wpt/web-platform-tests/origin-policy/policies/op8 csp-noimg.json deleted file mode 100644 index b88e1f80bf9..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op8 csp-noimg.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ids": [ - "csp-noimg" - ], - "content_security": { - "policies": ["img-src 'none'"] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op9 csp-valid-with-multi-item-array.json b/tests/wpt/web-platform-tests/origin-policy/policies/op9 csp-valid-with-multi-item-array.json deleted file mode 100644 index edd743038db..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op9 csp-valid-with-multi-item-array.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ids": [ - "csp-valid-with-multi-item-array" - ], - "content_security": { - "policies": [ - "script-src 'self' 'unsafe-inline'", - "img-src 'none'" - ] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op97 utf-8-with-bom.json b/tests/wpt/web-platform-tests/origin-policy/policies/op97 utf-8-with-bom.json deleted file mode 100644 index 869a75e1e6a..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op97 utf-8-with-bom.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ids" : ["this-file-has-a-utf8-bom"], - "content_security" : { - "policies": [ - "script-src 'self' 'unsafe-inline'", - "img-src 'none'" - ] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op98 utf-16le.json b/tests/wpt/web-platform-tests/origin-policy/policies/op98 utf-16le.json deleted file mode 100644 index ef0be5b98bb..00000000000 Binary files a/tests/wpt/web-platform-tests/origin-policy/policies/op98 utf-16le.json and /dev/null differ diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op99 csp-valid-manifest-with-404.json b/tests/wpt/web-platform-tests/origin-policy/policies/op99 csp-valid-manifest-with-404.json deleted file mode 100644 index d0870331b43..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/policies/op99 csp-valid-manifest-with-404.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ids" : ["csp-valid-but-served-as-404"], - "content_security" : { - "policies" : ["script-src 'self' 'unsafe-inline'"] - } -} diff --git a/tests/wpt/web-platform-tests/origin-policy/resources/origin-policy-test-runner.js b/tests/wpt/web-platform-tests/origin-policy/resources/origin-policy-test-runner.js deleted file mode 100644 index d3fd2e4ce11..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/resources/origin-policy-test-runner.js +++ /dev/null @@ -1,30 +0,0 @@ -window.runTestsInSubframe = ({ hostname, testJS, expectedIds }) => { - test(() => { - assert_equals(location.protocol, "https:"); - }, "Prerequisite check: running on HTTPS"); - - promise_test(() => new Promise((resolve, reject) => { - const url = new URL(window.location.href); - url.hostname = `${hostname}.${document.domain}`; - url.pathname = "/origin-policy/resources/subframe-with-origin-policy.py"; - - // Normalize the URL so that callers can idiomatically give values relative - // to themselves. - url.searchParams.append("test", new URL(testJS, document.baseURI).pathname); - - url.searchParams.append("expectedIds", JSON.stringify(expectedIds)); - - const iframe = document.createElement("iframe"); - iframe.src = url.href; - - // We need to delegate anything we plan to toggle with FP otherwise it will - // be locked to disallowed. - iframe.allow = "camera *; geolocation *"; - - iframe.onload = resolve; - iframe.onerror = () => reject(new Error(`Could not load ${url.href}`)); - document.body.append(iframe); - - fetch_tests_from_window(iframe.contentWindow); - }), "Test setup of the iframe"); -}; diff --git a/tests/wpt/web-platform-tests/origin-policy/resources/subframe-with-origin-policy.py b/tests/wpt/web-platform-tests/origin-policy/resources/subframe-with-origin-policy.py deleted file mode 100644 index 27389e83bfa..00000000000 --- a/tests/wpt/web-platform-tests/origin-policy/resources/subframe-with-origin-policy.py +++ /dev/null @@ -1,38 +0,0 @@ -def main(request, response): - """Send a response with the Origin-Policy header asking for the latest - policy, that runs the test JS given by the ?test= argument. This is meant - to be loaded into an iframe by origin-policy-test-runner.js. - - The ?test= argument is best given as an absolute path (starting with /) - since it will otherwise be interpreted relative to where this file is - served. - """ - test_file = request.GET.first(b"test") - - expected_ids = request.GET.first(b"expectedIds") - - response.headers.set(b"Origin-Policy", b"allowed=(latest)") - response.headers.set(b"Content-Type", b"text/html") - - ret_val = b""" - - - Origin policy subframe - - - -
                                                                      - - - """ % test_file - - if expected_ids != b"undefined": - ret_val += b""" - - """ % expected_ids - - return ret_val diff --git a/tests/wpt/web-platform-tests/page-visibility/minimize.html b/tests/wpt/web-platform-tests/page-visibility/minimize.html index 64ae22c7a3b..ca834f74b65 100644 --- a/tests/wpt/web-platform-tests/page-visibility/minimize.html +++ b/tests/wpt/web-platform-tests/page-visibility/minimize.html @@ -7,26 +7,11 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/buffered-flag.window.js b/tests/wpt/web-platform-tests/paint-timing/fcp-only/buffered-flag.window.js index 5c83ac01da4..5910b6881fb 100644 --- a/tests/wpt/web-platform-tests/paint-timing/fcp-only/buffered-flag.window.js +++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/buffered-flag.window.js @@ -19,6 +19,6 @@ async_test(t => { }).observe({'entryTypes': ['paint']}); // Trigger the first contentful paint entry. const img = document.createElement("img"); - img.src = "resources/circles.png"; + img.src = "../resources/circles.png"; document.body.appendChild(img); }, "PerformanceObserver with buffered flag sees previous FCP entry."); diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-document-opacity-image.html b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-document-opacity-image.html new file mode 100644 index 00000000000..7f211324761 --- /dev/null +++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-document-opacity-image.html @@ -0,0 +1,47 @@ + + + +Performance Paint Timing Test: Image FCP due to the documentElement's opacity + + + + + + +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-document-opacity-text.html b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-document-opacity-text.html new file mode 100644 index 00000000000..12384d5585e --- /dev/null +++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-document-opacity-text.html @@ -0,0 +1,39 @@ + + + +Performance Paint Timing Test: Text FCP due to the documentElement's opacity + + + + + + +
                                                                      This is content that is extremely contentful.
                                                                      + + + + + diff --git a/tests/wpt/web-platform-tests/payment-handler/app-can-make-payment.js b/tests/wpt/web-platform-tests/payment-handler/app-can-make-payment.js index 0bb94904735..f55cf21208e 100644 --- a/tests/wpt/web-platform-tests/payment-handler/app-can-make-payment.js +++ b/tests/wpt/web-platform-tests/payment-handler/app-can-make-payment.js @@ -53,13 +53,6 @@ self.addEventListener('canmakepayment', event => { } const [methodName] = method.supportedMethods; - if (methodName === 'basic-card') { - const msg = - '"basic-card" payment method must never be checked in CanMakePaymentEvent'; - event.respondWith(Promise.reject(new Error(msg))); - return; - } - const [modifierMethodName] = modifier.supportedMethods; if (modifierMethodName !== methodName) { const msg = `Unexpected modifier method name: "${modifierMethodName}". Expected "${methodName}".`; @@ -112,3 +105,9 @@ self.addEventListener('canmakepayment', event => { break; } }); + +// Respond 'true' to the 'abortpayment' event to allow tests to use abort() to +// close an ongoing PaymentRequest. +self.addEventListener('abortpayment', event => { + event.respondWith(true); +}); diff --git a/tests/wpt/web-platform-tests/payment-handler/app-simple.js b/tests/wpt/web-platform-tests/payment-handler/app-simple.js new file mode 100644 index 00000000000..833a01f47e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/payment-handler/app-simple.js @@ -0,0 +1,74 @@ +self.addEventListener('paymentrequest', event => { + const expectedId = 'test-payment-request-identifier'; + if (event.paymentRequestId !== expectedId) { + const msg = `Expected payment request identifier "${expectedId}", but got "${ + event.paymentRequestId + }"`; + event.respondWith(Promise.reject(new Error(msg))); + return; + } + + if (event.methodData.length !== 1) { + const msg = `Expected one method data, but got ${ + event.methodData.length + } instead`; + event.respondWith(Promise.reject(new Error(msg))); + return; + } + + const methodData = event.methodData[0]; + const expectedMethodName = window.location.origin + '/payment-handler/payment-app/'; + if (methodData.supportedMethods !== expectedMethodName) { + const msg = `Expected payment method name "${expectedMethodName}", but got "${ + methodData.supportedMethods + }"`; + event.respondWith(Promise.reject(new Error(msg))); + return; + } + + if (methodData.data.supportedNetworks) { + const msg = + 'Expected no supported networks in payment method specific data'; + event.respondWith(Promise.reject(new Error(msg))); + return; + } + + if (methodData.displayItems) { + const msg = 'Expected no display items'; + event.respondWith(Promise.reject(new Error(msg))); + return; + } + + const total = event.total; + if (!total) { + const msg = 'Expected total'; + event.respondWith(Promise.reject(new Error(msg))); + return; + } + + if (total.label) { + const msg = 'Expected no total label'; + event.respondWith(Promise.reject(new Error(msg))); + return; + } + + const expectedCurrency = 'USD'; + if (total.currency !== expectedCurrency) { + const msg = `Expected currency "${expectedCurrency}", but got "${ + total.currency + }"`; + event.respondWith(Promise.reject(new Error(msg))); + return; + } + + const expectedValue = '0.01'; + if (total.value !== expectedValue) { + const msg = `Expected value "${expectedValue}", but got "${total.value}"`; + event.respondWith(Promise.reject(new Error(msg))); + return; + } + + event.respondWith({ + methodName: expectedMethodName, + }); +}); diff --git a/tests/wpt/web-platform-tests/payment-handler/basic-card.js b/tests/wpt/web-platform-tests/payment-handler/basic-card.js deleted file mode 100644 index 2db5d4b719f..00000000000 --- a/tests/wpt/web-platform-tests/payment-handler/basic-card.js +++ /dev/null @@ -1,93 +0,0 @@ -self.addEventListener('paymentrequest', event => { - const expectedId = 'test-payment-request-identifier'; - if (event.paymentRequestId !== expectedId) { - const msg = `Expected payment request identifier "${expectedId}", but got "${ - event.paymentRequestId - }"`; - event.respondWith(Promise.reject(new Error(msg))); - return; - } - - if (event.methodData.length !== 1) { - const msg = `Expected one method data, but got ${ - event.methodData.length - } instead`; - event.respondWith(Promise.reject(new Error(msg))); - return; - } - - const methodData = event.methodData[0]; - const expectedMethodName = 'basic-card'; - if (methodData.supportedMethods !== expectedMethodName) { - const msg = `Expected payment method name "${expectedMethodName}", but got "${ - methodData.supportedMethods - }"`; - event.respondWith(Promise.reject(new Error(msg))); - return; - } - - if (methodData.data.supportedNetworks) { - const msg = - 'Expected no supported networks in payment method specific data'; - event.respondWith(Promise.reject(new Error(msg))); - return; - } - - if (methodData.displayItems) { - const msg = 'Expected no display items'; - event.respondWith(Promise.reject(new Error(msg))); - return; - } - - const total = event.total; - if (!total) { - const msg = 'Expected total'; - event.respondWith(Promise.reject(new Error(msg))); - return; - } - - if (total.label) { - const msg = 'Expected no total label'; - event.respondWith(Promise.reject(new Error(msg))); - return; - } - - const expectedCurrency = 'USD'; - if (total.currency !== expectedCurrency) { - const msg = `Expected currency "${expectedCurrency}", but got "${ - total.currency - }"`; - event.respondWith(Promise.reject(new Error(msg))); - return; - } - - const expectedValue = '0.01'; - if (total.value !== expectedValue) { - const msg = `Expected value "${expectedValue}", but got "${total.value}"`; - event.respondWith(Promise.reject(new Error(msg))); - return; - } - - event.respondWith({ - methodName: 'basic-card', - details: { - billingAddress: { - addressLine: ['1875 Explorer St #1000'], - city: 'Reston', - country: 'US', - dependentLocality: '', - organization: 'Google', - phone: '+15555555555', - postalCode: '20190', - recipient: 'Jon Doe', - region: 'VA', - sortingCode: '', - }, - cardNumber: '4111111111111111', - cardSecurityCode: '123', - cardholderName: 'Jon Doe', - expiryMonth: '12', - expiryYear: '2028', - }, - }); -}); diff --git a/tests/wpt/web-platform-tests/payment-handler/basic-card.json b/tests/wpt/web-platform-tests/payment-handler/basic-card.json deleted file mode 100644 index 002dd875849..00000000000 --- a/tests/wpt/web-platform-tests/payment-handler/basic-card.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "Test Basic Card Payment Handler", - "icons": [ - { - "src": "/images/rgrg-256x256.png", - "sizes": "256x256", - "type": "image/png" - } - ] -} diff --git a/tests/wpt/web-platform-tests/payment-handler/can-make-payment-event.https.html b/tests/wpt/web-platform-tests/payment-handler/can-make-payment-event.https.html index c4e5453d953..28c001c654e 100644 --- a/tests/wpt/web-platform-tests/payment-handler/can-make-payment-event.https.html +++ b/tests/wpt/web-platform-tests/payment-handler/can-make-payment-event.https.html @@ -5,8 +5,8 @@ -

                                                                      The "basic-card" test requires that you don't have a prepaid MIR card stored -in the browser. If you do, please remove it for the duration of the test.

                                                                      + + diff --git a/tests/wpt/web-platform-tests/payment-handler/change-payment-method-manual.https.html b/tests/wpt/web-platform-tests/payment-handler/change-payment-method-manual.https.html index abdb3d71118..1640420c625 100644 --- a/tests/wpt/web-platform-tests/payment-handler/change-payment-method-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-handler/change-payment-method-manual.https.html @@ -5,7 +5,7 @@ rel="help" href="https://w3c.github.io/payment-handler/#changepaymentmethod-method" /> - + diff --git a/tests/wpt/web-platform-tests/payment-handler/change-shipping-option-manual.https.html b/tests/wpt/web-platform-tests/payment-handler/change-shipping-option-manual.https.html index 00d1aee70b9..2511fc5ea05 100644 --- a/tests/wpt/web-platform-tests/payment-handler/change-shipping-option-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-handler/change-shipping-option-manual.https.html @@ -2,7 +2,7 @@ Tests for PaymentRequestEvent.changeShippingOption() - + diff --git a/tests/wpt/web-platform-tests/payment-handler/payment-instruments.https.html b/tests/wpt/web-platform-tests/payment-handler/payment-instruments.https.html index 53751eb2f2e..121c1315688 100644 --- a/tests/wpt/web-platform-tests/payment-handler/payment-instruments.https.html +++ b/tests/wpt/web-platform-tests/payment-handler/payment-instruments.https.html @@ -2,12 +2,14 @@ Tests for PaymentInstruments interface - + diff --git a/tests/wpt/web-platform-tests/payment-handler/payment-request-event-manual.https.html b/tests/wpt/web-platform-tests/payment-handler/payment-request-event-manual.https.html index 3c8deb3b92f..e595dd2160f 100644 --- a/tests/wpt/web-platform-tests/payment-handler/payment-request-event-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-handler/payment-request-event-manual.https.html @@ -9,13 +9,14 @@

                                                                      When the payment sheet is shown, please authorize the mock payment.

                                                                      diff --git a/tests/wpt/web-platform-tests/payment-handler/untrusted-event.js b/tests/wpt/web-platform-tests/payment-handler/untrusted-event.js index 240702956e4..e067952cc3b 100644 --- a/tests/wpt/web-platform-tests/payment-handler/untrusted-event.js +++ b/tests/wpt/web-platform-tests/payment-handler/untrusted-event.js @@ -6,23 +6,23 @@ self.addEventListener('message', e => { if (e.data == 'paymentrequest') { self.dispatchEvent(new PaymentRequestEvent('paymentrequest', { methodData: [{ - supportedMethods: 'basic-card' + supportedMethods: 'https://example.com/pay' }], total: { currency: 'USD', value: '100' }, modifiers: [{ - supportedMethods: 'basic-card' + supportedMethods: 'https://example.com/pay' }] })); } else if (e.data == 'canmakepayment') { self.dispatchEvent(new CanMakePaymentEvent('canmakepayment', { methodData: [{ - supportedMethods: 'basic-card' + supportedMethods: 'https://example.com/pay' }], modifiers: [{ - supportedMethods: 'basic-card' + supportedMethods: 'https://example.com/pay' }] })); } diff --git a/tests/wpt/web-platform-tests/payment-method-id/payment-request-ctor-pmi-handling.https.sub.html b/tests/wpt/web-platform-tests/payment-method-id/payment-request-ctor-pmi-handling.https.sub.html index a615838f8bc..d6a1be23947 100644 --- a/tests/wpt/web-platform-tests/payment-method-id/payment-request-ctor-pmi-handling.https.sub.html +++ b/tests/wpt/web-platform-tests/payment-method-id/payment-request-ctor-pmi-handling.https.sub.html @@ -59,9 +59,9 @@ test(() => { "u4-n-t", "i488jh6-g18-fck-yb-v7-i", "x-x-t-t-c34-o", - "basic-card", - // gets coerced to "basic-card", for compat with old version of spec - ["basic-card"], + "secure-payment-confirmation", + // gets coerced to "secure-payment-confirmation", for compat with old version of spec + ["secure-payment-confirmation"], ]; for (const validMethod of validMethods) { try { @@ -77,9 +77,9 @@ test(() => { test(() => { const invalidMethods = [ - "basic-💳", - "¡basic-*-card!", - "Basic-Card", + "secure-💳", + "¡secure-*-payment-confirmation!", + "Secure-Payment-Confirmation", "0", "-", "--", @@ -98,13 +98,13 @@ test(() => { "\t\na-b", "a-b ", "a-b\n\t", - "basic-card?not-really", - "basic-card://not-ok", - "basic card", - "/basic card/", - "BaSicCarD", - "BASIC-CARD", - " basic-card ", + "secure-payment-confirmation?not-really", + "secure-payment-confirmation://not-ok", + "secure payment confirmation", + "/secure payment confirmation/", + "SeCuRePaYmEnTcOnFiRmAtIoN", + "SECURE-PAYMENT-CONFIRMATION", + " secure-payment-confirmation ", "this is not supported", " ", "foo,var", diff --git a/tests/wpt/web-platform-tests/payment-request/PaymentRequestUpdateEvent/constructor.https.html b/tests/wpt/web-platform-tests/payment-request/PaymentRequestUpdateEvent/constructor.https.html index e8df7b35a94..3de0469e9c4 100644 --- a/tests/wpt/web-platform-tests/payment-request/PaymentRequestUpdateEvent/constructor.https.html +++ b/tests/wpt/web-platform-tests/payment-request/PaymentRequestUpdateEvent/constructor.https.html @@ -6,18 +6,8 @@ + + + + + +
                                                                      + Verifies that PaymentRequest.show() call from a cross-origin subframe without user activation + works if and only if the top frame has user activation and it delegates the capability to the + subframe. +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-ctor-pmi-handling.https.sub.html b/tests/wpt/web-platform-tests/payment-request/payment-request-ctor-pmi-handling.https.sub.html index a615838f8bc..d6a1be23947 100644 --- a/tests/wpt/web-platform-tests/payment-request/payment-request-ctor-pmi-handling.https.sub.html +++ b/tests/wpt/web-platform-tests/payment-request/payment-request-ctor-pmi-handling.https.sub.html @@ -59,9 +59,9 @@ test(() => { "u4-n-t", "i488jh6-g18-fck-yb-v7-i", "x-x-t-t-c34-o", - "basic-card", - // gets coerced to "basic-card", for compat with old version of spec - ["basic-card"], + "secure-payment-confirmation", + // gets coerced to "secure-payment-confirmation", for compat with old version of spec + ["secure-payment-confirmation"], ]; for (const validMethod of validMethods) { try { @@ -77,9 +77,9 @@ test(() => { test(() => { const invalidMethods = [ - "basic-💳", - "¡basic-*-card!", - "Basic-Card", + "secure-💳", + "¡secure-*-payment-confirmation!", + "Secure-Payment-Confirmation", "0", "-", "--", @@ -98,13 +98,13 @@ test(() => { "\t\na-b", "a-b ", "a-b\n\t", - "basic-card?not-really", - "basic-card://not-ok", - "basic card", - "/basic card/", - "BaSicCarD", - "BASIC-CARD", - " basic-card ", + "secure-payment-confirmation?not-really", + "secure-payment-confirmation://not-ok", + "secure payment confirmation", + "/secure payment confirmation/", + "SeCuRePaYmEnTcOnFiRmAtIoN", + "SECURE-PAYMENT-CONFIRMATION", + " secure-payment-confirmation ", "this is not supported", " ", "foo,var", diff --git a/tests/wpt/web-platform-tests/payment-request/resources/delegate-request-subframe.sub.html b/tests/wpt/web-platform-tests/payment-request/resources/delegate-request-subframe.sub.html new file mode 100644 index 00000000000..aeda1f00d4f --- /dev/null +++ b/tests/wpt/web-platform-tests/payment-request/resources/delegate-request-subframe.sub.html @@ -0,0 +1,38 @@ + +Payment request delegation test: subframe + + diff --git a/tests/wpt/web-platform-tests/pending-beacon/META.yml b/tests/wpt/web-platform-tests/pending-beacon/META.yml new file mode 100644 index 00000000000..04b88b5f72f --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/META.yml @@ -0,0 +1,4 @@ +spec: https://wicg.github.io/pending-beacon/ +suggested_reviewers: + - mingyc + - clelland diff --git a/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-basic.tentative.https.window.js b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-basic.tentative.https.window.js new file mode 100644 index 00000000000..c63ae4e39d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-basic.tentative.https.window.js @@ -0,0 +1,87 @@ +// META: script=./resources/pending_beacon-helper.js + +'use strict'; + +test(() => { + assert_throws_js(TypeError, () => new PendingBeacon('/')); +}, `PendingBeacon cannot be constructed directly.`); + +for (const beaconType of BeaconTypes) { + test(() => { + assert_throws_js(TypeError, () => new beaconType.type()); + assert_throws_js(TypeError, () => new beaconType.type(undefined)); + assert_throws_js(TypeError, () => new beaconType.type(null)); + }, `${beaconType.name}: constructor throws TypeError if URL is missing.`); + + test(() => { + assert_throws_js( + TypeError, () => new beaconType.type('http://www.google.com')); + assert_throws_js(TypeError, () => new beaconType.type('file://tmp')); + assert_throws_js(TypeError, () => new beaconType.type('ssh://example.com')); + assert_throws_js(TypeError, () => new beaconType.type('wss://example.com')); + assert_throws_js(TypeError, () => new beaconType.type('about:blank')); + assert_throws_js( + TypeError, () => new beaconType.type(`javascript:alert('');`)); + }, `${beaconType.name}: constructor throws TypeError on non-HTTPS URL.`); + + test(() => { + const beacon = new beaconType.type('/'); + assert_equals(beacon.url, '/'); + assert_equals(beacon.method, beaconType.expectedMethod); + assert_equals(beacon.backgroundTimeout, -1); + assert_equals(beacon.timeout, -1); + assert_true(beacon.pending); + }, `${beaconType.name}: constructor sets default properties if missing.`); + + test(() => { + const beacon = new beaconType.type( + 'https://www.google.com', {backgroundTimeout: 200, timeout: 100}); + assert_equals(beacon.url, 'https://www.google.com'); + assert_equals(beacon.method, beaconType.expectedMethod); + assert_equals(beacon.backgroundTimeout, 200); + assert_equals(beacon.timeout, 100); + assert_true(beacon.pending); + }, `${beaconType.name}: constructor can set properties.`); + + test(() => { + let beacon = new beaconType.type( + 'https://www.google.com', + {method: 'GET', backgroundTimeout: 200, timeout: 100}); + + beacon.backgroundTimeout = 400; + assert_equals(beacon.backgroundTimeout, 400); + + beacon.timeout = 600; + assert_equals(beacon.timeout, 600); + }, `${beaconType.name}: 'backgroundTimeout' & 'timeout' can be mutated.`); + + test( + () => { + let beacon = new beaconType.type('https://www.google.com'); + + assert_throws_js(TypeError, () => beacon.url = '/'); + assert_throws_js(TypeError, () => beacon.method = 'FOO'); + assert_throws_js(TypeError, () => beacon.pending = false); + }, + `${beaconType.name}: throws TypeError when mutating ` + + `'url', 'method', 'pending'.`); +} + +test(() => { + let beacon = new PendingGetBeacon('/'); + + assert_throws_js(TypeError, () => new beacon.setURL()); + assert_throws_js(TypeError, () => new beacon.setURL(undefined)); + assert_throws_js(TypeError, () => new beacon.setURL(null)); +}, `PendingGetBeacon: setURL() throws TypeError if URL is missing.`); + +test(() => { + let beacon = new PendingGetBeacon('/'); + + assert_throws_js(TypeError, () => beacon.setURL('http://www.google.com')); + assert_throws_js(TypeError, () => beacon.setURL('file://tmp')); + assert_throws_js(TypeError, () => beacon.setURL('ssh://example.com')); + assert_throws_js(TypeError, () => beacon.setURL('wss://example.com')); + assert_throws_js(TypeError, () => beacon.setURL('about:blank')); + assert_throws_js(TypeError, () => beacon.setURL(`javascript:alert('');`)); +}, `PendingGetBeacon: setURL() throws TypeError on non-HTTPS URL.`); diff --git a/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-basic.window.js b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-basic.window.js new file mode 100644 index 00000000000..01b37547f79 --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-basic.window.js @@ -0,0 +1,12 @@ +// META: script=/resources/testharness.js +// META: script=/resources/testharnessreport.js + +'use strict'; + +test(() => { + assert_false(window.hasOwnProperty('PendingGetBeacon')); +}, `PendingGetBeacon is not supported in non-secure context.`); + +test(() => { + assert_false(window.hasOwnProperty('PendingPostBeacon')); +}, `PendingPostBeacon is not supported in non-secure context.`); diff --git a/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-deactivate.tentative.https.window.js b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-deactivate.tentative.https.window.js new file mode 100644 index 00000000000..74c0852adc3 --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-deactivate.tentative.https.window.js @@ -0,0 +1,12 @@ +// META: script=./resources/pending_beacon-helper.js + +'use strict'; + +for (const beaconType of BeaconTypes) { + test(() => { + const beacon = new beaconType.type('https://www.google.com'); + assert_true(beacon.pending); + beacon.deactivate(); + assert_false(beacon.pending); + }, `${beaconType.name}: deactivate() changes 'pending' state.`); +} diff --git a/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-sendnow.tentative.https.window.js b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-sendnow.tentative.https.window.js new file mode 100644 index 00000000000..00baccd0c1a --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-sendnow.tentative.https.window.js @@ -0,0 +1,44 @@ +// META: script=/common/utils.js +// META: script=./resources/pending_beacon-helper.js + +'use strict'; + +promise_test(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + + // Create and send a beacon. + const beacon = new PendingGetBeacon(url); + beacon.sendNow(); + + await expectBeacon(uuid, {count: 1}); +}, 'sendNow() sends a beacon immediately.'); + +promise_test(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + + // Create and send a beacon. + const beacon = new PendingGetBeacon(url); + beacon.sendNow(); + await expectBeacon(uuid, {count: 1}); + + // Try to send the beacon again, and verify no beacon arrives. + beacon.sendNow(); + await expectBeacon(uuid, {count: 1}); +}, 'sendNow() doesn\'t send the same beacon twice.'); + +promise_test(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + + // Create and send 1st beacon. + const beacon1 = new PendingGetBeacon(url); + beacon1.sendNow(); + + // Create and send 2st beacon. + const beacon2 = new PendingGetBeacon(url); + beacon2.sendNow(); + + await expectBeacon(uuid, {count: 2}); +}, 'sendNow() sends multiple beacons.'); diff --git a/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-sendondiscard.tentative.https.window.js b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-sendondiscard.tentative.https.window.js new file mode 100644 index 00000000000..55704388b7c --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-sendondiscard.tentative.https.window.js @@ -0,0 +1,97 @@ +// META: script=/resources/testharness.js +// META: script=/resources/testharnessreport.js +// META: script=/common/utils.js +// META: script=./resources/pending_beacon-helper.js + +'use strict'; + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + const numPerMethod = 20; + const total = numPerMethod * 2; + + // Loads an iframe that creates `numPerMethod` GET & POST beacons. + const iframe = await loadScriptAsIframe(` + const url = "${url}"; + for (let i = 0; i < ${numPerMethod}; i++) { + let get = new PendingGetBeacon(url); + let post = new PendingPostBeacon(url); + } + `); + + // Delete the iframe to trigger beacon sending. + document.body.removeChild(iframe); + + // The iframe should have sent all beacons. + await expectBeacon(uuid, {count: total}); +}, 'A discarded document sends all its beacons with default config.'); + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + + // Loads an iframe that creates a GET beacon, + // then sends it out with `sendNow()`. + const iframe = await loadScriptAsIframe(` + const url = "${url}"; + let beacon = new PendingGetBeacon(url); + beacon.sendNow(); + `); + + // Delete the document and verify no more beacons are sent. + document.body.removeChild(iframe); + + // The iframe should have sent only 1 beacon. + await expectBeacon(uuid, {count: 1}); +}, 'A discarded document does not send an already sent beacon.'); + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + const numPerMethod = 20; + const total = numPerMethod * 2; + + // Loads an iframe that creates `numPerMethod` GET & POST beacons with + // different timeouts. + const iframe = await loadScriptAsIframe(` + const url = "${url}"; + for (let i = 0; i < ${numPerMethod}; i++) { + let get = new PendingGetBeacon(url, {timeout: 100*i}); + let post = new PendingPostBeacon(url, {timeout: 100*i}); + } + `); + + // Delete the iframe to trigger beacon sending. + document.body.removeChild(iframe); + + // Even beacons are configured with different timeouts, + // the iframe should have sent all beacons when it is discarded. + await expectBeacon(uuid, {count: total}); +}, `A discarded document sends all its beacons of which timeouts are not + default.`); + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + const numPerMethod = 20; + const total = numPerMethod * 2; + + // Loads an iframe that creates `numPerMethod` GET & POST beacons with + // different backgroundTimeouts. + const iframe = await loadScriptAsIframe(` + const url = "${url}"; + for (let i = 0; i < ${numPerMethod}; i++) { + let get = new PendingGetBeacon(url, {backgroundTimeout: 100*i}); + let post = new PendingPostBeacon(url, {backgroundTimeout: 100*i}); + } + `); + + // Delete the iframe to trigger beacon sending. + document.body.removeChild(iframe); + + // Even beacons are configured with different backgroundTimeouts, + // the iframe should have sent all beacons when it is discarded. + await expectBeacon(uuid, {count: total}); +}, `A discarded document sends all its beacons of which backgroundTimeouts are + not default.`); diff --git a/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js new file mode 100644 index 00000000000..8d7ff24e3f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js @@ -0,0 +1,83 @@ +// META: script=/resources/testharness.js +// META: script=/resources/testharnessreport.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js +// META: script=./resources/pending_beacon-helper.js + +'use strict'; + +for (const beaconType of BeaconTypes) { + const beaconName = beaconType.name; + + parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + // backgroundTimeout = 0s means `beacon should be sent out right on + // entering `hidden` state after navigating away. + const options = {backgroundTimeout: 0}; + const helper = new RemoteContextHelper(); + // Opens a window with noopener so that BFCache will work. + const rc1 = await helper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + + // Creates a PendingBeacon in remote which should only be sent on navigating + // away. + await rc1.executeScript((beaconName, url, options) => { + const beacon = beaconName == 'PendingGetBeacon' ? + new PendingGetBeacon(url, options) : + new PendingPostBeacon(url, options); + }, [beaconName, url, options]); + + await expectBeacon(uuid, {count: 0}); + }, `${beaconName}: does not send without page navigation.`); + + parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + // backgroundTimeout = 0s means `beacon should be sent out right on + // entering `hidden` state after navigating away. + const options = {backgroundTimeout: 0}; + const helper = new RemoteContextHelper(); + // Opens a window with noopener so that BFCache will work. + const rc1 = await helper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + + // Creates a PendingBeacon in remote which should only be sent on navigating + // away. + await rc1.executeScript((beaconName, url, options) => { + const beacon = beaconName == 'PendingGetBeacon' ? + new PendingGetBeacon(url, options) : + new PendingPostBeacon(url, options); + }, [beaconName, url, options]); + // Navigates away to trigger beacon sending. + rc1.navigateToNew(); + + await expectBeacon(uuid, {count: 1}); + }, `${beaconName}: sends on page entering hidden state (w/ BFCache).`); + + parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + // backgroundTimeout = 0s means `beacon should be sent out right on + // entering `hidden` state after navigating away. + const options = {backgroundTimeout: 0}; + const helper = new RemoteContextHelper(); + // Opens a window without BFCache. + const rc1 = await helper.addWindow(); + + // Creates a PendingBeacon in remote which should only be sent on navigating + // away. + await rc1.executeScript((beaconName, url, options) => { + const beacon = beaconName == 'PendingGetBeacon' ? + new PendingGetBeacon(url, options) : + new PendingPostBeacon(url, options); + }, [beaconName, url, options]); + // Navigates away to trigger beacon sending. + rc1.navigateToNew(); + + await expectBeacon(uuid, {count: 1}); + }, `${beaconName}: sends on page entering hidden state (w/o BFCache).`); +} diff --git a/tests/wpt/web-platform-tests/pending-beacon/pending_get_beacon-cors.tentative.https.window.js b/tests/wpt/web-platform-tests/pending-beacon/pending_get_beacon-cors.tentative.https.window.js new file mode 100644 index 00000000000..10bb3a0bed7 --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/pending_get_beacon-cors.tentative.https.window.js @@ -0,0 +1,28 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=./resources/pending_beacon-helper.js + +'use strict'; + +const {HTTPS_ORIGIN, HTTPS_NOTSAMESITE_ORIGIN} = get_host_info(); + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid, {host: HTTPS_ORIGIN}); + + let beacon = new PendingGetBeacon(url); + beacon.sendNow(); + + await expectBeacon(uuid, {count: 1}); +}, 'PendingGetBeacon: same-origin'); + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL( + uuid, {host: HTTPS_NOTSAMESITE_ORIGIN, expectOrigin: HTTPS_ORIGIN}); + + let beacon = new PendingGetBeacon(url); + beacon.sendNow(); + + await expectBeacon(uuid, {count: 1}); +}, 'PendingGetBeacon: cross-origin'); diff --git a/tests/wpt/web-platform-tests/pending-beacon/pending_get_beacon-send.tentative.https.window.js b/tests/wpt/web-platform-tests/pending-beacon/pending_get_beacon-send.tentative.https.window.js new file mode 100644 index 00000000000..8c6e826af5b --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/pending_get_beacon-send.tentative.https.window.js @@ -0,0 +1,38 @@ +// META: script=/common/utils.js +// META: script=./resources/pending_beacon-helper.js + +'use strict'; + +const baseUrl = `${location.protocol}//${location.host}`; + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + + let beacon = new PendingGetBeacon('/'); + + beacon.setURL(url); + assert_equals(beacon.url, url); + beacon.sendNow(); + + await expectBeacon(uuid, {count: 1}); +}, 'PendingGetBeacon is sent to the updated URL'); + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + + let beacon = new PendingGetBeacon('/0'); + + for (let i = 0; i < 10; i++) { + const transientUrl = `/${i}`; + beacon.setURL(transientUrl); + assert_equals(beacon.url, transientUrl); + } + beacon.setURL(url); + assert_equals(beacon.url, url); + + beacon.sendNow(); + + await expectBeacon(uuid, {count: 1}); +}, 'PendingGetBeacon is sent to the last updated URL'); diff --git a/tests/wpt/web-platform-tests/pending-beacon/pending_post_beacon-cors.tentative.https.window.js b/tests/wpt/web-platform-tests/pending-beacon/pending_post_beacon-cors.tentative.https.window.js new file mode 100644 index 00000000000..01511d22c1b --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/pending_post_beacon-cors.tentative.https.window.js @@ -0,0 +1,66 @@ +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=./resources/pending_beacon-helper.js + +'use strict'; + +const {HTTPS_ORIGIN, HTTPS_NOTSAMESITE_ORIGIN} = get_host_info(); +const SMALL_SIZE = 500; + +for (const dataType in BeaconDataType) { + postBeaconSendDataTest( + dataType, generatePayload(SMALL_SIZE), + `PendingPostBeacon[${dataType}]: same-origin`, + {urlOptions: {host: HTTPS_ORIGIN, expectOrigin: HTTPS_ORIGIN}}); + + postBeaconSendDataTest( + dataType, generatePayload(SMALL_SIZE), + `PendingPostBeacon[${dataType}]: cross-origin, ` + + `CORS-safelisted Content-Type`, + { + urlOptions: { + host: HTTPS_NOTSAMESITE_ORIGIN, + expectOrigin: HTTPS_ORIGIN, + } + }); + + postBeaconSendDataTest( + dataType, generatePayload(SMALL_SIZE), + `PendingPostBeacon[${dataType}]: cross-origin, ` + + 'CORS-safelisted Content-Type => ' + + 'non-CORS response (from redirect handler) ' + + 'should be rejected by browser', + { + expectCount: 0, + urlOptions: { + useRedirectHandler: true, + host: HTTPS_NOTSAMESITE_ORIGIN, + } + }); + + postBeaconSendDataTest( + dataType, generatePayload(SMALL_SIZE), + `PendingPostBeacon[${dataType}]: cross-origin, ` + + 'CORS-safelisted Content-Type => no cookie expected', + { + setCookie: 'test_beacon_cookie', + urlOptions: { + host: HTTPS_NOTSAMESITE_ORIGIN, + expectOrigin: HTTPS_ORIGIN, + expectCredentials: false, + } + }); +} + +postBeaconSendDataTest( + BeaconDataType.Blob, generatePayload(SMALL_SIZE), + 'PendingPostBeacon[Blob]: cross-origin, non-CORS-safelisted Content-Type' + + ' => preflight expected', + { + urlOptions: { + host: HTTPS_NOTSAMESITE_ORIGIN, + contentType: 'application/octet-stream', + expectOrigin: HTTPS_ORIGIN, + expectPreflight: true, + } + }); diff --git a/tests/wpt/web-platform-tests/pending-beacon/pending_post_beacon-sendwithdata.tentative.https.window.js b/tests/wpt/web-platform-tests/pending-beacon/pending_post_beacon-sendwithdata.tentative.https.window.js new file mode 100644 index 00000000000..77e91479e8b --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/pending_post_beacon-sendwithdata.tentative.https.window.js @@ -0,0 +1,43 @@ +// META: script=/common/utils.js +// META: script=./resources/pending_beacon-helper.js + +'use strict'; + +// Test empty data. +for (const dataType in BeaconDataType) { + postBeaconSendDataTest( + dataType, '', `Sent empty ${dataType}, and server got no data.`, { + expectNoData: true, + }); +} + +// Test small payload. +for (const [dataType, skipCharset] of Object.entries( + BeaconDataTypeToSkipCharset)) { + postBeaconSendDataTest( + dataType, generateSequentialData(0, 1024, skipCharset), + 'Encoded and sent in POST request.'); +} + +// Test large payload. +for (const dataType in BeaconDataType) { + postBeaconSendDataTest( + dataType, generatePayload(65536), 'Sent out big data.'); +} + +test(() => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + let beacon = new PendingPostBeacon(url); + assert_throws_js(TypeError, () => beacon.setData(new ReadableStream())); +}, 'setData() does not support ReadableStream.'); + +test(() => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + let beacon = new PendingPostBeacon(url); + const formData = new FormData(); + formData.append('part1', 'value1'); + formData.append('part2', new Blob(['value2']), 'file.txt'); + assert_throws_js(RangeError, () => beacon.setData(formData)); +}, 'setData() does not support multi-parts data.'); diff --git a/tests/wpt/web-platform-tests/pending-beacon/resources/get_beacon.py b/tests/wpt/web-platform-tests/pending-beacon/resources/get_beacon.py new file mode 100644 index 00000000000..32cb9a9ba30 --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/resources/get_beacon.py @@ -0,0 +1,30 @@ +"""An HTTP request handler for WPT that handles /get_beacon.py requests.""" + +import json + +_BEACON_ID_KEY = b"uuid" +_BEACON_DATA_PATH = "beacon_data" + + +def main(request, response): + """Retrieves the beacon data keyed by the given uuid from server storage. + + The response content is a JSON string in one of the following formats: + - "{'data': ['abc', null, '123',...]}" + - "{'data': []}" indicates that no data has been set for this uuid. + """ + if _BEACON_ID_KEY not in request.GET: + response.status = 400 + return "Must provide a UUID to store beacon data" + uuid = request.GET.first(_BEACON_ID_KEY) + + with request.server.stash.lock: + body = {'data': []} + data = request.server.stash.take(key=uuid, path=_BEACON_DATA_PATH) + if data: + body['data'] = data + # The stash is read-once/write-once, so it has to be put back after + # reading if `data` is not None. + request.server.stash.put( + key=uuid, value=data, path=_BEACON_DATA_PATH) + return [(b'Content-Type', b'text/plain')], json.dumps(body) diff --git a/tests/wpt/web-platform-tests/pending-beacon/resources/pending_beacon-helper.js b/tests/wpt/web-platform-tests/pending-beacon/resources/pending_beacon-helper.js new file mode 100644 index 00000000000..3e8bd20f766 --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/resources/pending_beacon-helper.js @@ -0,0 +1,236 @@ +'use strict'; + +const ROOT_NAME = 'pending-beacon'; + +function parallelPromiseTest(func, description) { + async_test((t) => { + Promise.resolve(func(t)).then(() => t.done()).catch(t.step_func((e) => { + throw e; + })); + }, description); +} + +const BeaconTypes = [ + {type: PendingPostBeacon, name: 'PendingPostBeacon', expectedMethod: 'POST'}, + {type: PendingGetBeacon, name: 'PendingGetBeacon', expectedMethod: 'GET'}, +]; + +/** @enum {string} */ +const BeaconDataType = { + String: 'String', + ArrayBuffer: 'ArrayBuffer', + FormData: 'FormData', + URLSearchParams: 'URLSearchParams', + Blob: 'Blob', + File: 'File', +}; + +/** @enum {string} */ +const BeaconDataTypeToSkipCharset = { + String: '', + ArrayBuffer: '', + FormData: '\n\r', // CRLF characters will be normalized by FormData + URLSearchParams: ';,/?:@&=+$', // reserved URI characters + Blob: '', + File: '', +}; + +const BEACON_PAYLOAD_KEY = 'payload'; + +// Creates beacon data of the given `dataType` from `data`. +// @param {string} data - A string representation of the beacon data. Note that +// it cannot contain UTF-16 surrogates for all `BeaconDataType` except BLOB. +// @param {BeaconDataType} dataType - must be one of `BeaconDataType`. +// @param {string} contentType - Request Content-Type. +function makeBeaconData(data, dataType, contentType) { + switch (dataType) { + case BeaconDataType.String: + return data; + case BeaconDataType.ArrayBuffer: + return new TextEncoder().encode(data).buffer; + case BeaconDataType.FormData: + const formData = new FormData(); + if (data.length > 0) { + formData.append(BEACON_PAYLOAD_KEY, data); + } + return formData; + case BeaconDataType.URLSearchParams: + if (data.length > 0) { + return new URLSearchParams(`${BEACON_PAYLOAD_KEY}=${data}`); + } + return new URLSearchParams(); + case BeaconDataType.Blob: { + const options = {type: contentType || undefined}; + return new Blob([data], options); + } + case BeaconDataType.File: { + const options = {type: contentType || 'text/plain'}; + return new File([data], 'file.txt', options); + } + default: + throw Error(`Unsupported beacon dataType: ${dataType}`); + } +} + +// Create a string of `end`-`begin` characters, with characters starting from +// UTF-16 code unit `begin` to `end`-1. +function generateSequentialData(begin, end, skip) { + const codeUnits = Array(end - begin).fill().map((el, i) => i + begin); + if (skip) { + return String.fromCharCode( + ...codeUnits.filter(c => !skip.includes(String.fromCharCode(c)))); + } + return String.fromCharCode(...codeUnits); +} + +function generatePayload(size) { + let data = ''; + if (size > 0) { + const prefix = String(size) + ':'; + data = prefix + Array(size - prefix.length).fill('*').join(''); + } + return data; +} + +function generateSetBeaconURL(uuid, options) { + const host = (options && options.host) || ''; + let url = `${host}/${ROOT_NAME}/resources/set_beacon.py?uuid=${uuid}`; + if (options) { + if (options.expectOrigin !== undefined) { + url = `${url}&expectOrigin=${options.expectOrigin}`; + } + if (options.expectPreflight !== undefined) { + url = `${url}&expectPreflight=${options.expectPreflight}`; + } + if (options.expectCredentials !== undefined) { + url = `${url}&expectCredentials=${options.expectCredentials}`; + } + + if (options.useRedirectHandler) { + const redirect = `${host}/common/redirect.py` + + `?location=${encodeURIComponent(url)}`; + url = redirect; + } + } + return url; +} + +async function poll(asyncFunc, expected) { + const maxRetries = 30; + const waitInterval = 100; // milliseconds. + const delay = ms => new Promise(res => setTimeout(res, ms)); + + let result = {data: []}; + for (let i = 0; i < maxRetries; i++) { + result = await asyncFunc(); + if (!expected(result)) { + await delay(waitInterval); + continue; + } + return result; + } + return result; +} + +// Waits until the `options.count` number of beacon data available from the +// server. Defaults to 1. +// If `options.data` is set, it will be used to compare with the data from the +// response. +async function expectBeacon(uuid, options) { + const expectedCount = + (options && options.count !== undefined) ? options.count : 1; + + const res = await poll( + async () => { + const res = await fetch( + `/${ROOT_NAME}/resources/get_beacon.py?uuid=${uuid}`, + {cache: 'no-store'}); + return await res.json(); + }, + (res) => { + if (expectedCount == 0) { + // If expecting no beacon, we should try to wait as long as possible. + // So always returning false here until `poll()` decides to terminate + // itself. + return false; + } + return res.data.length == expectedCount; + }); + if (!options || !options.data) { + assert_equals( + res.data.length, expectedCount, + 'Number of sent beacons does not match expected count:'); + return; + } + + if (expectedCount == 0) { + assert_equals( + res.data.length, 0, + 'Number of sent beacons does not match expected count:'); + return; + } + + const decoder = options && options.percentDecoded ? (s) => { + // application/x-www-form-urlencoded serializer encodes space as '+' + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent + s = s.replace(/\+/g, '%20'); + return decodeURIComponent(s); + } : (s) => s; + + assert_equals( + res.data.length, options.data.length, + `The size of beacon data ${ + res.data.length} from server does not match expected value ${ + options.data.length}.`); + for (let i = 0; i < options.data.length; i++) { + assert_equals( + decoder(res.data[i]), options.data[i], + 'The beacon data does not match expected value.'); + } +} + +function postBeaconSendDataTest(dataType, testData, description, options) { + parallelPromiseTest(async t => { + const expectNoData = options && options.expectNoData; + const expectCount = (options && options.expectCount !== undefined) ? + options.expectCount : + 1; + const uuid = token(); + const url = + generateSetBeaconURL(uuid, (options && options.urlOptions) || {}); + const beacon = new PendingPostBeacon(url); + assert_equals(beacon.method, 'POST', 'must be POST to call setData().'); + + if (options && options.setCookie) { + document.cookie = options.setCookie; + } + + beacon.setData(makeBeaconData( + testData, dataType, (options && options.contentType) || {})); + beacon.sendNow(); + + const expectedData = expectNoData ? null : testData; + const percentDecoded = + !expectNoData && dataType === BeaconDataType.URLSearchParams; + await expectBeacon(uuid, { + count: expectCount, + data: [expectedData], + percentDecoded: percentDecoded + }); + }, `PendingPostBeacon(${dataType}): ${description}`); +} + +function generateHTML(script) { + return ``; +} + +// Loads `script` into an iframe and appends it to the current document. +// Returns the loaded iframe element. +async function loadScriptAsIframe(script) { + const iframe = document.createElement('iframe'); + iframe.srcdoc = generateHTML(script); + const iframeLoaded = new Promise(resolve => iframe.onload = resolve); + document.body.appendChild(iframe); + await iframeLoaded; + return iframe; +} diff --git a/tests/wpt/web-platform-tests/pending-beacon/resources/set_beacon.py b/tests/wpt/web-platform-tests/pending-beacon/resources/set_beacon.py new file mode 100644 index 00000000000..1c71f23e578 --- /dev/null +++ b/tests/wpt/web-platform-tests/pending-beacon/resources/set_beacon.py @@ -0,0 +1,83 @@ +"""An HTTP request handler for WPT that handles /set_beacon.py requests.""" + +_BEACON_ID_KEY = b"uuid" +_BEACON_DATA_PATH = "beacon_data" +_BEACON_FORM_PAYLOAD_KEY = b"payload" +_BEACON_BODY_PAYLOAD_KEY = "payload=" +_BEACON_EXPECT_ORIGIN_KEY = b"expectOrigin" +_BEACON_EXPECT_PREFLIGHT_KEY = b"expectPreflight" +_BEACON_EXPECT_CREDS_KEY = b"expectCredentials" + + +def main(request, response): + """Stores the given beacon's data keyed by uuid in the server. + + For GET request, this handler assumes no data. + For POST request, this handler extracts data from request body: + - Content-Type=multipart/form-data: data keyed by 'payload'. + - the entire request body. + + Multiple data can be added for the same uuid. + + The data is stored as UTF-8 format. + """ + if _BEACON_ID_KEY not in request.GET: + response.status = 400 + return "Must provide a UUID to store beacon data" + uuid = request.GET.first(_BEACON_ID_KEY) + + expected_origin = request.GET.get(_BEACON_EXPECT_ORIGIN_KEY) + if b"origin" in request.headers: + origin = request.headers.get(b"origin") + if expected_origin: + assert origin == expected_origin, f"expected {expected_origin}, got {origin}" + response.headers.set(b"Access-Control-Allow-Origin", origin) + else: + assert expected_origin is None, f"expected None, got {expected_origin}" + + # Handles preflight request first. + if request.method == u"OPTIONS": + assert request.GET.get( + _BEACON_EXPECT_PREFLIGHT_KEY) == b"true", "Preflight not expected." + + # preflight must not have cookies. + assert b"Cookie" not in request.headers + + requested_headers = request.headers.get( + b"Access-Control-Request-Headers") + assert b"content-type" in requested_headers, f"expected content-type, got {requested_headers}" + response.headers.set(b"Access-Control-Allow-Headers", b"content-type") + + requested_method = request.headers.get(b"Access-Control-Request-Method") + assert requested_method == b"POST", f"expected POST, got {requested_method}" + response.headers.set(b"Access-Control-Allow-Methods", b"POST") + + return response + + expect_creds = request.GET.get(_BEACON_EXPECT_CREDS_KEY) == b"true" + if expect_creds: + assert b"Cookie" in request.headers + else: + assert b"Cookie" not in request.headers + + data = None + if request.method == u"POST": + if b"multipart/form-data" in request.headers.get(b"Content-Type", b""): + if _BEACON_FORM_PAYLOAD_KEY in request.POST: + data = request.POST.first(_BEACON_FORM_PAYLOAD_KEY).decode( + 'utf-8') + elif request.body: + data = request.body.decode('utf-8') + if data.startswith(_BEACON_BODY_PAYLOAD_KEY): + data = data.split(_BEACON_BODY_PAYLOAD_KEY)[1] + + with request.server.stash.lock: + saved_data = request.server.stash.take(key=uuid, path=_BEACON_DATA_PATH) + if not saved_data: + saved_data = [data] + else: + saved_data.append(data) + request.server.stash.put( + key=uuid, value=saved_data, path=_BEACON_DATA_PATH) + + response.status = 200 diff --git a/tests/wpt/web-platform-tests/performance-timeline/back-forward-cache-restoration.tentative.html b/tests/wpt/web-platform-tests/performance-timeline/back-forward-cache-restoration.tentative.html new file mode 100644 index 00000000000..733642fd032 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/back-forward-cache-restoration.tentative.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/performance-timeline/idlharness-shadowrealm.window.js b/tests/wpt/web-platform-tests/performance-timeline/idlharness-shadowrealm.window.js new file mode 100644 index 00000000000..6caaa330613 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/idlharness-shadowrealm.window.js @@ -0,0 +1,2 @@ +// META: script=/resources/idlharness-shadowrealm.js +idl_test_shadowrealm(["performance-timeline"], ["hr-time", "dom"]); diff --git a/tests/wpt/web-platform-tests/performance-timeline/navigation-id-detached-frame.tentative.html b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-detached-frame.tentative.html new file mode 100644 index 00000000000..add11255af4 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-detached-frame.tentative.html @@ -0,0 +1,30 @@ + + + + + + The navigation_id Detached iframe Parent Page. + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/navigation-id-element-timing.tentative.html b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-element-timing.tentative.html new file mode 100644 index 00000000000..bc52f208b07 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-element-timing.tentative.html @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/navigation-id-initial-load.tentative.html b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-initial-load.tentative.html new file mode 100644 index 00000000000..3228e12778b --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-initial-load.tentative.html @@ -0,0 +1,43 @@ + + + + + + + +

                                                                      This text is to trigger a LCP entry emission.

                                                                      + + diff --git a/tests/wpt/web-platform-tests/performance-timeline/navigation-id-long-task-task-attribution.tentative.html b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-long-task-task-attribution.tentative.html new file mode 100644 index 00000000000..662e17508b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-long-task-task-attribution.tentative.html @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/navigation-id-mark-measure.tentative.html b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-mark-measure.tentative.html new file mode 100644 index 00000000000..42795f94a98 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-mark-measure.tentative.html @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/navigation-id-reset.tentative.html b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-reset.tentative.html new file mode 100644 index 00000000000..7386331d26e --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-reset.tentative.html @@ -0,0 +1,49 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/performance-timeline/navigation-id-resource-timing.tentative.html b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-resource-timing.tentative.html new file mode 100644 index 00000000000..1ec906ebbbb --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/navigation-id-resource-timing.tentative.html @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/navigation-id.helper.js b/tests/wpt/web-platform-tests/performance-timeline/navigation-id.helper.js new file mode 100644 index 00000000000..53099cadb25 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/navigation-id.helper.js @@ -0,0 +1,130 @@ +// The test functions called in the navigation-counter test. They rely on +// artifacts defined in +// '/html/browsers/browsing-the-web/back-forward-cache/resources/helper.sub.js' +// which should be included before this file to use these functions. + +// This function is to obtain navigation ids of all performance entries to +// verify. +let testInitial = () => { + return window.performance.getEntries().map(e => e.navigationId); +} + +let testMarkMeasure = (expectedNavigationId, markName, MeasureName) => { + const markName1 = 'test-mark'; + const markName2 = 'test-mark' + expectedNavigationId; + const measureName = 'test-measure' + expectedNavigationId; + + window.performance.mark(markName1); + window.performance.mark(markName2); + window.performance.measure(measureName, markName1, markName2); + return window.performance.getEntriesByName(markName2).concat( + window.performance.getEntriesByName(measureName)).map(e => e.navigationId); +} + +let testResourceTiming = async (expectedNavigationId) => { + let navigationId = -1; + + let p = new Promise(resolve => { + new PerformanceObserver((list) => { + const entry = list.getEntries().find(e => e.name.includes('json_resource') && e.navigationId == expectedNavigationId); + if (entry) { + navigationId = entry.navigationId; + resolve(); + } + }).observe({ type: 'resource' }); + }); + + const resp = await fetch('/performance-timeline/resources/json_resource.json'); + await p; + return [navigationId]; +} + +let testElementTiming = async (expectedNavigationId) => { + let navigationId = -1; + let p = new Promise(resolve => { + new PerformanceObserver((list) => { + const entry = list.getEntries().find(e => e.entryType === 'element' && e.identifier === 'test-element-timing' + expectedNavigationId); + if (entry) { + navigationId = entry.navigationId; + resolve(); + } + }).observe({ type: 'element' }); + }); + + let el = document.createElement('p'); + el.setAttribute('elementtiming', 'test-element-timing' + expectedNavigationId); + el.textContent = 'test element timing text'; + document.body.appendChild(el); + await p; + return [navigationId]; +} + +let testLongTask = async () => { + let navigationIds = []; + + let p = new Promise(resolve => { + new PerformanceObserver((list) => { + const entry = list.getEntries().find(e => e.entryType === 'longtask') + if (entry) { + navigationIds.push(entry.navigationId); + navigationIds = navigationIds.concat( + entry.attribution.map(a => a.navigationId)); + resolve(); + } + }).observe({ type: 'longtask' }); + }); + + const script = document.createElement('script'); + script.src = '/performance-timeline/resources/make_long_task.js'; + document.body.appendChild(script); + await p; + document.body.removeChild(script); + return navigationIds; +} + +const testFunctionMap = { + 'mark_measure': testMarkMeasure, + 'resource_timing': testResourceTiming, + 'element_timing': testElementTiming, + 'long_task_task_attribution': testLongTask, +}; + +function runNavigationIdTest(params, description) { + const defaultParams = { + openFunc: url => window.open(url, '_blank', 'noopener'), + scripts: [], + funcBeforeNavigation: () => { }, + targetOrigin: originCrossSite, + navigationTimes: 4, + funcAfterAssertion: () => { }, + } // Apply defaults. + params = { ...defaultParams, ...params }; + + promise_test(async t => { + const pageA = new RemoteContext(token()); + const pageB = new RemoteContext(token()); + + const urlA = executorPath + pageA.context_id; + const urlB = params.targetOrigin + executorPath + pageB.context_id; + // Open url A. + params.openFunc(urlA); + await pageA.execute_script(waitForPageShow); + + // Assert navigation id is 1 when the document is loaded first time. + let navigationIds = await pageA.execute_script(testInitial); + assert_true( + navigationIds.every(t => t === 1), 'All Navigation Ids should be 1.'); + + for (i = 1; i <= params.navigationTimes; i++) { + // Navigate away to url B and back. + await navigateAndThenBack(pageA, pageB, urlB); + + // Assert navigation id increments when the document is load from bfcache. + navigationIds = await pageA.execute_script( + testFunctionMap[params.testName], [i + 1]); + assert_true( + navigationIds.every(t => t === (i + 1)), + params.testName + ' Navigation Id should all be ' + (i + 1) + '.'); + } + }, description); +} diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.window.js new file mode 100644 index 00000000000..a39663f3d86 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.window.js @@ -0,0 +1,48 @@ +// META: title=RemoteContextHelper navigation using BFCache +// META: script=./test-helper.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=/websockets/constants.sub.js + +'use strict'; + +// Ensure that notRestoredReasons are only updated after non BFCache navigation. +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + // Open a window with noopener so that BFCache will work. + const rc1 = await rcHelper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + // Use WebSocket to block BFCache. + await useWebSocket(rc1); + const rc1_url = await rc1.executeScript(() => { + return location.href; + }); + + // Check the BFCache result and the reported reasons. + await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false); + await assertNotRestoredReasonsEquals( + rc1, + /*blocked=*/ true, + /*url=*/ rc1_url, + /*src=*/ '', + /*id=*/ '', + /*name=*/ '', + /*reasons=*/['WebSocket'], + /*children=*/[]); + + // This time no blocking feature is used, so the page is restored + // from BFCache. Ensure that the previous reasons stay there. + await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true); + await assertNotRestoredReasonsEquals( + rc1, + /*blocked=*/ true, + /*url=*/ rc1_url, + /*src=*/ '', + /*id=*/ '', + /*name=*/ '', + /*reasons=*/['WebSocket'], + /*children=*/[]); +}); diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.window.js new file mode 100644 index 00000000000..82c4c9bdd85 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.window.js @@ -0,0 +1,27 @@ +// META: title=RemoteContextHelper navigation using BFCache +// META: script=./test-helper.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js + +'use strict'; + +// Ensure that notRestoredReasons is empty for successful BFCache restore. +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + + // Open a window with noopener so that BFCache will work. + const rc1 = await rcHelper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + + // Check the BFCache result and verify that no reasons are recorded + // for successful restore. + await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true); + assert_true(await rc1.executeScript(() => { + let reasons = + performance.getEntriesByType('navigation')[0].notRestoredReasons; + return reasons == null; + })); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.window.js new file mode 100644 index 00000000000..222ed3b54a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.window.js @@ -0,0 +1,62 @@ +// META: title=RemoteContextHelper navigation using BFCache +// META: script=./test-helper.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=/websockets/constants.sub.js + +'use strict'; + +// Ensure that cross-origin subtree's reasons are not exposed to +// notRestoredReasons. +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + // Open a window with noopener so that BFCache will work. + const rc1 = await rcHelper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + const rc1_url = await rc1.executeScript(() => { + return location.href; + }); + // Add a cross-origin iframe and use BroadcastChannel. + const rc1_child = await rc1.addIframe( + /*extraConfig=*/ { + origin: 'HTTP_REMOTE_ORIGIN', + scripts: [], + headers: [], + }, + /*attributes=*/ {id: 'test-id'}, + ); + // Use WebSocket to block BFCache. + await useWebSocket(rc1_child); + + const rc1_child_url = await rc1_child.executeScript(() => { + return location.href; + }); + // Add a child to the iframe. + const rc1_grand_child = await rc1_child.addIframe(); + const rc1_grand_child_url = await rc1_grand_child.executeScript(() => { + return location.href; + }); + + // Check the BFCache result and the reported reasons. + await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false); + await assertNotRestoredReasonsEquals( + rc1, + /*blocked=*/ false, + /*url=*/ rc1_url, + /*src=*/ '', + /*id=*/ '', + /*name=*/ '', + /*reasons=*/[], + /*children=*/[{ + 'blocked': true, + 'url': '', + 'src': '', + 'id': '', + 'name': '', + 'reasons': [], + 'children': [] + }]); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.window.js new file mode 100644 index 00000000000..7bbc59e94bd --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.window.js @@ -0,0 +1,36 @@ +// META: title=RemoteContextHelper navigation using BFCache +// META: script=./test-helper.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=/websockets/constants.sub.js + +'use strict'; + +// Ensure that notRestoredReasons is populated when not restored. +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + // Open a window with noopener so that BFCache will work. + const rc1 = await rcHelper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + // Use WebSocket to block BFCache. + await useWebSocket(rc1); + + const rc1_url = await rc1.executeScript(() => { + return location.href; + }); + + // Check the BFCache result and the reported reasons. + await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false); + await assertNotRestoredReasonsEquals( + rc1, + /*blocked=*/ true, + /*url=*/ rc1_url, + /*src=*/ '', + /*id=*/ '', + /*name=*/ '', + /*reasons=*/['WebSocket'], + /*children=*/[]); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.window.js new file mode 100644 index 00000000000..36ec53364b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.window.js @@ -0,0 +1,62 @@ +// META: title=RemoteContextHelper navigation using BFCache +// META: script=./test-helper.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=/websockets/constants.sub.js + +'use strict'; + +// Ensure that same-origin subtree's reasons are exposed to notRestoredReasons. +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + // Open a window with noopener so that BFCache will work. + const rc1 = await rcHelper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + const rc1_url = await rc1.executeScript(() => { + return location.href; + }); + // Add a same-origin iframe and use WebSocket. + const rc1_child = await rc1.addIframe( + /*extra_config=*/ {}, /*attributes=*/ {id: 'test-id'}); + await useWebSocket(rc1_child); + + const rc1_child_url = await rc1_child.executeScript(() => { + return location.href; + }); + // Add a child to the iframe. + const rc1_grand_child = await rc1_child.addIframe(); + const rc1_grand_child_url = await rc1_grand_child.executeScript(() => { + return location.href; + }); + + // Check the BFCache result and the reported reasons. + await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false); + await assertNotRestoredReasonsEquals( + rc1, + /*blocked=*/ false, + /*url=*/ rc1_url, + /*src=*/ '', + /*id=*/ '', + /*name=*/ '', + /*reasons=*/[], + /*children=*/[{ + 'blocked': true, + 'url': rc1_child_url, + 'src': rc1_child_url, + 'id': 'test-id', + 'name': '', + 'reasons': ['WebSocket'], + 'children': [{ + 'blocked': false, + 'url': rc1_grand_child_url, + 'src': rc1_grand_child_url, + 'id': '', + 'name': '', + 'reasons': [], + 'children': [] + }] + }]); +}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/test-helper.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/test-helper.js new file mode 100644 index 00000000000..03ae1df3d31 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/test-helper.js @@ -0,0 +1,43 @@ +async function assertNotRestoredReasonsEquals( + remoteContextHelper, blocked, url, src, id, name, reasons, children) { + let result = await remoteContextHelper.executeScript(() => { + return performance.getEntriesByType('navigation')[0].notRestoredReasons; + }); + assertReasonsStructEquals( + result, blocked, url, src, id, name, reasons, children); +} + +function assertReasonsStructEquals( + result, blocked, url, src, id, name, reasons, children) { + assert_equals(result.blocked, blocked); + assert_equals(result.url, url); + assert_equals(result.src, src); + assert_equals(result.id, id); + assert_equals(result.name, name); + // Reasons should match. + assert_equals(result.reasons.length, reasons.length); + reasons.sort(); + result.reasons.sort(); + for (let i = 0; i < reasons.length; i++) { + assert_equals(result.reasons[i], reasons[i]); + } + // Children should match. + assert_equals(result.children.length, children.length); + children.sort(); + result.children.sort(); + for (let j = 0; j < children.length; j++) { + assertReasonsStructEquals( + result.children[0], children[0].blocked, children[0].url, + children[0].src, children[0].id, children[0].name, children[0].reasons, + children[0].children); + } +} + +// Requires: +// - /websockets/constants.sub.js in the test file and pass the domainPort +// constant here. +async function useWebSocket(remoteContextHelper) { + await remoteContextHelper.executeScript((domain) => { + var webSocketInNotRestoredReasonsTests = new WebSocket(domain + '/echo'); + }, [SCHEME_DOMAIN_PORT]); +} diff --git a/tests/wpt/web-platform-tests/performance-timeline/resources/json_resource.json b/tests/wpt/web-platform-tests/performance-timeline/resources/json_resource.json new file mode 100644 index 00000000000..68b6ac1d56f --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/resources/json_resource.json @@ -0,0 +1,4 @@ +{ + "name": "nav_id_test", + "target": "resource_timing" +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/resources/make_long_task.js b/tests/wpt/web-platform-tests/performance-timeline/resources/make_long_task.js new file mode 100644 index 00000000000..a52d6d83929 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/resources/make_long_task.js @@ -0,0 +1,4 @@ +(function () { + let now = window.performance.now(); + while (window.performance.now() < now + 60); +}()); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/resources/navigation-id-detached-frame-page.html b/tests/wpt/web-platform-tests/performance-timeline/resources/navigation-id-detached-frame-page.html new file mode 100644 index 00000000000..02aafbb5c78 --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/resources/navigation-id-detached-frame-page.html @@ -0,0 +1,21 @@ + + + + + + The navigation_id Detached iframe Page. + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html new file mode 100644 index 00000000000..a5f44795111 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy-attribute.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy-attribute.https.sub.html new file mode 100644 index 00000000000..5b1f69e86c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy-attribute.https.sub.html @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy.https.sub.html new file mode 100644 index 00000000000..283c613271a --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy.https.sub.html @@ -0,0 +1,31 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy.https.sub.html.headers b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy.https.sub.html.headers new file mode 100644 index 00000000000..a053d1a2138 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-allowed-by-permissions-policy.https.sub.html.headers @@ -0,0 +1 @@ +Permissions-Policy: bluetooth=* \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/bluetooth-default-permissions-policy.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-default-permissions-policy.https.sub.html new file mode 100644 index 00000000000..51ab40bca91 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-default-permissions-policy.https.sub.html @@ -0,0 +1,31 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/bluetooth-disabled-by-permissions-policy.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-disabled-by-permissions-policy.https.sub.html new file mode 100644 index 00000000000..7a20a9f01f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-disabled-by-permissions-policy.https.sub.html @@ -0,0 +1,35 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/bluetooth-disabled-by-permissions-policy.https.sub.html.headers b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-disabled-by-permissions-policy.https.sub.html.headers new file mode 100644 index 00000000000..10b94729dd3 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/bluetooth-disabled-by-permissions-policy.https.sub.html.headers @@ -0,0 +1 @@ +Permissions-Policy: bluetooth=() \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/experimental-features/resources/unload-helper.js b/tests/wpt/web-platform-tests/permissions-policy/experimental-features/resources/unload-helper.js new file mode 100644 index 00000000000..9739ead69d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/experimental-features/resources/unload-helper.js @@ -0,0 +1,41 @@ +// Code used by controlling frame of the unload policy tests. + +const MAIN_FRAME = 'main'; +const SUBFRAME = 'sub'; + +async function isUnloadAllowed(remoteContextWrapper) { + return remoteContextWrapper.executeScript(() => { + return document.featurePolicy.allowsFeature('unload'); + }); +} + +// Checks whether a frame runs unload handlers. +// This checks the policy directly and also installs an unload handler and +// navigates the frame checking that the handler ran. +async function assertWindowRunsUnload( + remoteContextWrapper, name, {shouldRunUnload}) { + const maybeNot = shouldRunUnload ? '' : 'not '; + assert_equals( + await isUnloadAllowed(remoteContextWrapper), shouldRunUnload, + `${name}: unload in ${name} should ${maybeNot}be allowed`); + + // Set up recording of whether unload handler ran. + await remoteContextWrapper.executeScript((name) => { + localStorage.setItem(name, 'did not run'); + addEventListener('unload', () => localStorage.setItem(name, 'did run')); + }, [name]); + + // Navigate away and then back. + const second = await remoteContextWrapper.navigateToNew(); + // Navigating back ensures that the unload has completed. + // Also if the navigation is cross-site then we have to return + // to the original origin in order to read the recorded unload. + second.historyBack(); + + // Check that unload handlers ran as expected. + const recordedUnload = await remoteContextWrapper.executeScript( + (name) => localStorage.getItem(name), [name]); + assert_equals( + recordedUnload, `did ${maybeNot}run`, + `${name}: unload should ${maybeNot}have run`); +} diff --git a/tests/wpt/web-platform-tests/permissions-policy/experimental-features/unload-allowed-by-default.tentative.window.js b/tests/wpt/web-platform-tests/permissions-policy/experimental-features/unload-allowed-by-default.tentative.window.js new file mode 100644 index 00000000000..3fdc9ed047a --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/experimental-features/unload-allowed-by-default.tentative.window.js @@ -0,0 +1,22 @@ +// META: title='unload' Policy : allowed by default +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/unload-helper.js +// META: timeout=long + +'use strict'; + +// Check that unload is allowed by policy in main frame and subframe by default. +promise_test(async t => { + const rcHelper = + new RemoteContextHelper({scripts: ['./resources/unload-helper.js']}); + // In the same browsing context group to ensure BFCache is not used. + const main = await rcHelper.addWindow(); + const sameOriginSubframe = await main.addIframe(); + const crossOriginSubframe = await main.addIframe({ origin: 'HTTP_REMOTE_ORIGIN' }); + await assertWindowRunsUnload(sameOriginSubframe, 'sameOriginSubframe', { shouldRunUnload: true }); + await assertWindowRunsUnload(crossOriginSubframe, 'crossOriginSubframe', { shouldRunUnload: true }); + await assertWindowRunsUnload(main, 'main', {shouldRunUnload: true}); +}); diff --git a/tests/wpt/web-platform-tests/permissions-policy/experimental-features/unload-disallowed-subframe.tentative.window.js b/tests/wpt/web-platform-tests/permissions-policy/experimental-features/unload-disallowed-subframe.tentative.window.js new file mode 100644 index 00000000000..b2fb19ae129 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/experimental-features/unload-disallowed-subframe.tentative.window.js @@ -0,0 +1,21 @@ +// META: title='unload' Policy : allowed in main frame but disallowed in subframe +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/unload-helper.js +// META: timeout=long + +'use strict'; + +// Check that unload is allowed by policy in main but can be disabled in the +// subframe. +promise_test(async t => { + const rcHelper = + new RemoteContextHelper({scripts: ['./resources/unload-helper.js']}); + // In the same browsing context group to ensure BFCache is not used. + const main = await rcHelper.addWindow(); + const subframe = + await main.addIframe({headers: [['Permissions-Policy', 'unload=()']]}); + await assertWindowRunsUnload(subframe, 'subframe', {shouldRunUnload: false}); + await assertWindowRunsUnload(main, 'main', {shouldRunUnload: true}); +}); diff --git a/tests/wpt/web-platform-tests/permissions-policy/experimental-features/unload-disallowed.tentative.window.js b/tests/wpt/web-platform-tests/permissions-policy/experimental-features/unload-disallowed.tentative.window.js new file mode 100644 index 00000000000..c93443c1010 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/experimental-features/unload-disallowed.tentative.window.js @@ -0,0 +1,21 @@ +// META: title='unload' Policy : disallowed when header is () +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=./resources/unload-helper.js +// META: timeout=long + +'use strict'; + +// Check that unload can be disabled by policy in main frame and subframe. +promise_test(async t => { + const rcHelper = + new RemoteContextHelper({scripts: ['./resources/unload-helper.js']}); + // In the same browsing context group to ensure BFCache is not used. + const main = await rcHelper.addWindow( + {headers: [['Permissions-Policy', 'unload=()']]}, + ); + const subframe = await main.addIframe(); + await assertWindowRunsUnload(subframe, 'subframe', {shouldRunUnload: false}); + await assertWindowRunsUnload(main, 'main', {shouldRunUnload: false}); +}); diff --git a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-all.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-all.https.sub.html index a089866c7af..16a2b60c75d 100644 --- a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-all.https.sub.html +++ b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-all.https.sub.html @@ -28,22 +28,34 @@ // Test that fullscreen is not allowed on cross-origin subframes without an // allow attribute. test_disallowed_feature_for_subframe( - header_policy + ' -- test fullscreen is allowed on cross-origin subframe', + header_policy + ' -- test fullscreen is disallowed on cross-origin subframe', 'fullscreen', cross_origin_src); - // Dynamically update sub frame's container policy + // Dynamically update sub frame's container policy to self var allow = "fullscreen 'self';" test_allowed_feature_for_subframe( header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is allowed on same-origin subframe', 'fullscreen', same_origin_src, allow); - test_disallowed_feature_for_subframe( header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on cross-origin subframe', 'fullscreen', cross_origin_src, allow); + + // Dynamically update sub frame's container policy to src + var allow = "fullscreen 'src';" + test_allowed_feature_for_subframe( + header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is allowed on same-origin subframe', + 'fullscreen', + same_origin_src, + allow); + test_allowed_feature_for_subframe( + header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is allowed on cross-origin subframe', + 'fullscreen', + cross_origin_src, + allow); diff --git a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-malformed-wildcard.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-malformed-wildcard.https.sub.html new file mode 100644 index 00000000000..daa47efb679 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-malformed-wildcard.https.sub.html @@ -0,0 +1,55 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-malformed-wildcard.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-malformed-wildcard.https.sub.html.sub.headers new file mode 100644 index 00000000000..cfb0f3f5aee --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-malformed-wildcard.https.sub.html.sub.headers @@ -0,0 +1 @@ +Permissions-Policy: fullscreen=("*://{{domains[]}}:{{ports[https][0]}}" "https://{{domains[]}}:*" "https://*.*.{{domains[]}}:{{ports[https][0]}}" "https://example.*.{{domains[]}}:{{ports[https][0]}}" self) diff --git a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-self.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-self.https.sub.html index dba317e64e4..363ff0b9819 100644 --- a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-self.https.sub.html +++ b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-self.https.sub.html @@ -36,11 +36,10 @@ 'fullscreen', same_origin_src, allow); - - test_allowed_feature_for_subframe( - header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is allowed on cross-origin subframe', + test_disallowed_feature_for_subframe( + header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on cross-origin subframe', 'fullscreen', - same_origin_src, + cross_origin_src, allow); diff --git a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-some.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-some.https.sub.html index 0035eea7d5e..e9d8ac14586 100644 --- a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-some.https.sub.html +++ b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-some.https.sub.html @@ -8,8 +8,10 @@ 'use strict'; var same_origin = 'https://{{domains[]}}:{{ports[https][0]}}'; var cross_origin = 'https://{{domains[www]}}:{{ports[https][0]}}'; + var cross_origin1 = 'https://{{domains[www1]}}:{{ports[https][0]}}'; var same_origin_src = '/permissions-policy/resources/permissions-policy-allowedfeatures.html'; var cross_origin_src = cross_origin + same_origin_src; + var cross_origin_src1 = cross_origin1 + same_origin_src; var header_policy = `Permissions-Policy: fullscreen=(self "${cross_origin}" "https://www.example.com")`; // Test that fullscreen's allowlist is [same_origin, cross_origin, 'https://www.example.com'] @@ -26,27 +28,48 @@ 'fullscreen', same_origin_src); test_disallowed_feature_for_subframe( - header_policy + ' -- test fullscreen is allowed on cross-origin ' + cross_origin_src + ' subframe', + header_policy + ' -- test fullscreen is disallowed on cross-origin ' + cross_origin_src + ' subframe', 'fullscreen', cross_origin_src); - var cross_origin_src1 = 'https://{{domains[www1]}}:{{ports[https][0]}}' + same_origin_src; test_disallowed_feature_for_subframe( header_policy + ' -- test fullscreen is disallowed on cross-origin ' + cross_origin_src1 + ' subframe', 'fullscreen', cross_origin_src1); - // dynamically update sub frame's container policy + // dynamically update sub frame's container policy to none var allow = "fullscreen 'none';" test_disallowed_feature_for_subframe( header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on same-origin subframe', 'fullscreen', same_origin_src, allow); - test_disallowed_feature_for_subframe( header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is disallowed on cross-origin subframe', 'fullscreen', cross_origin_src, allow); + test_disallowed_feature_for_subframe( + header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is disallowed on another cross-origin subframe', + 'fullscreen', + cross_origin_src1, + allow); + + // dynamically update sub frame's container policy to src + allow = "fullscreen 'src';" + test_allowed_feature_for_subframe( + header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is allowed on same-origin subframe', + 'fullscreen', + same_origin_src, + allow); + test_allowed_feature_for_subframe( + header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is allowed on cross-origin subframe', + 'fullscreen', + cross_origin_src, + allow); + test_disallowed_feature_for_subframe( + header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on another cross-origin subframe', + 'fullscreen', + cross_origin_src1, + allow); diff --git a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-wildcard.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-wildcard.https.sub.html new file mode 100644 index 00000000000..713d697e64a --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-wildcard.https.sub.html @@ -0,0 +1,68 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-wildcard.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-wildcard.https.sub.html.sub.headers new file mode 100644 index 00000000000..cc492ecc923 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-allowed-for-wildcard.https.sub.html.sub.headers @@ -0,0 +1 @@ +Permissions-Policy: fullscreen=(self "https://*.{{domains[]}}:{{ports[https][0]}}") diff --git a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-declined.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-declined.https.sub.html index 247f23893ba..f02cdce7d1e 100644 --- a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-declined.https.sub.html +++ b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-declined.https.sub.html @@ -8,8 +8,10 @@ 'use strict'; var same_origin = 'https://{{domains[]}}:{{ports[https][0]}}'; var cross_origin = 'https://{{domains[www]}}:{{ports[https][0]}}'; + var cross_origin1 = 'https://{{domains[www1]}}:{{ports[https][0]}}'; var same_origin_src = '/permissions-policy/resources/permissions-policy-allowedfeatures.html'; var cross_origin_src = cross_origin + same_origin_src; + var cross_origin_src1 = cross_origin1 + same_origin_src; var header_policy = `Permissions-Policy: fullscreen=(self "${cross_origin}" "https://www.example.com"`; // Test that fullscreen's allowlist is [same_origin, cross_origin, 'https://www.example.com'] @@ -21,45 +23,52 @@ // Test that fullscreen is everywhere. test_disallowed_feature_for_subframe( - header_policy + ' -- test fullscreen is allowed on same-origin subframe', + header_policy + ' -- test fullscreen is disallowed on same-origin subframe', 'fullscreen', same_origin_src); test_disallowed_feature_for_subframe( - header_policy + ' -- test fullscreen is allowed on cross-origin ' + cross_origin_src + ' subframe', + header_policy + ' -- test fullscreen is disallowed on cross-origin ' + cross_origin_src + ' subframe', 'fullscreen', cross_origin_src); - var cross_origin_src1 = 'https://{{domains[www1]}}:{{ports[https][0]}}' + same_origin_src; test_disallowed_feature_for_subframe( header_policy + ' -- test fullscreen is disallowed on cross-origin ' + cross_origin_src1 + ' subframe', 'fullscreen', cross_origin_src1); - // dynamically update sub frame's container policy; fullscreen will still not - // be allowed. + // dynamically update sub frame's container policy to none var disallow = "fullscreen 'none';" test_disallowed_feature_for_subframe( header_policy + ', iframe.allow = ' + disallow + ' -- test fullscreen is disallowed on same-origin subframe', 'fullscreen', same_origin_src, disallow); - test_disallowed_feature_for_subframe( - header_policy + 'iframe.allow = ' + disallow + ' -- test fullscreen is allowed on specific cross-origin subframe', + header_policy + 'iframe.allow = ' + disallow + ' -- test fullscreen is disallowed on specific cross-origin subframe', 'fullscreen', cross_origin_src, disallow); + test_disallowed_feature_for_subframe( + header_policy + 'iframe.allow = ' + disallow + ' -- test fullscreen is disallowed on another cross-origin subframe', + 'fullscreen', + cross_origin_src1, + disallow); + // dynamically update sub frame's container policy to cross_origin var allow = "fullscreen " + cross_origin; test_disallowed_feature_for_subframe( header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on same-origin subframe', 'fullscreen', same_origin_src, allow); - test_disallowed_feature_for_subframe( - header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is allowed on specific cross-origin subframe', + header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is disallowed on specific cross-origin subframe', 'fullscreen', cross_origin_src, allow); + test_disallowed_feature_for_subframe( + header_policy + 'iframe.allow = ' + allow + ' -- test fullscreen is disallowed on another cross-origin subframe', + 'fullscreen', + cross_origin_src1, + allow); diff --git a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-disallowed-for-all.https.sub.html b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-disallowed-for-all.https.sub.html index 6c6f6ef73f3..f787b7de12a 100644 --- a/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-disallowed-for-all.https.sub.html +++ b/tests/wpt/web-platform-tests/permissions-policy/permissions-policy-header-policy-disallowed-for-all.https.sub.html @@ -37,7 +37,6 @@ 'fullscreen', same_origin_src, allow); - test_disallowed_feature_for_subframe( header_policy + ', iframe.allow = ' + allow + ' -- test fullscreen is disallowed on cross-origin subframe', 'fullscreen', diff --git a/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-report-only.https.html b/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-report-only.https.html new file mode 100644 index 00000000000..9688baa5b0a --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-report-only.https.html @@ -0,0 +1,67 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-report-only.https.html.headers b/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-report-only.https.html.headers new file mode 100644 index 00000000000..dfa8cf0090d --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-report-only.https.html.headers @@ -0,0 +1 @@ +Permissions-Policy-Report-Only: bluetooth=() \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-reporting.https.html b/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-reporting.https.html new file mode 100644 index 00000000000..35b22122b97 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-reporting.https.html @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-reporting.https.html.headers b/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-reporting.https.html.headers new file mode 100644 index 00000000000..10b94729dd3 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/reporting/bluetooth-reporting.https.html.headers @@ -0,0 +1 @@ +Permissions-Policy: bluetooth=() \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/reporting/payment-report-only.https.html b/tests/wpt/web-platform-tests/permissions-policy/reporting/payment-report-only.https.html index d4425f9f3ca..f1b1b433f50 100644 --- a/tests/wpt/web-platform-tests/permissions-policy/reporting/payment-report-only.https.html +++ b/tests/wpt/web-platform-tests/permissions-policy/reporting/payment-report-only.https.html @@ -23,7 +23,7 @@ promise_test(async t => { try { await test_driver.bless(); const request = new PaymentRequest( - [{ supportedMethods: 'basic-card' }], + [{ supportedMethods: 'https://example.com/pay' }], { total: { label: 'Total', amount: { currency: 'USD', value: 0 }}}, {}); await request.show() diff --git a/tests/wpt/web-platform-tests/permissions-policy/reporting/payment-reporting.https.html b/tests/wpt/web-platform-tests/permissions-policy/reporting/payment-reporting.https.html index 72529bf9f19..f639c2b7c62 100644 --- a/tests/wpt/web-platform-tests/permissions-policy/reporting/payment-reporting.https.html +++ b/tests/wpt/web-platform-tests/permissions-policy/reporting/payment-reporting.https.html @@ -27,7 +27,7 @@ new ReportingObserver(t.step_func_done(check_report_format), t.step_func(() => { assert_throws_dom('SecurityError', () => new PaymentRequest( - [{ supportedMethods: 'basic-card' }], + [{ supportedMethods: 'https://example.com/pay' }], { total: { label: 'Total', amount: { currency: 'USD', value: 0 }}}, {}).show(), "PaymentRequest API should not be allowed in this document."); diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/screen-wake-lock-reporting.https.html b/tests/wpt/web-platform-tests/permissions-policy/reporting/screen-wake-lock-reporting.https.html similarity index 100% rename from tests/wpt/web-platform-tests/feature-policy/reporting/screen-wake-lock-reporting.https.html rename to tests/wpt/web-platform-tests/permissions-policy/reporting/screen-wake-lock-reporting.https.html diff --git a/tests/wpt/web-platform-tests/permissions-policy/reporting/screen-wake-lock-reporting.https.html.headers b/tests/wpt/web-platform-tests/permissions-policy/reporting/screen-wake-lock-reporting.https.html.headers new file mode 100644 index 00000000000..66f07f4c1c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/reporting/screen-wake-lock-reporting.https.html.headers @@ -0,0 +1 @@ +Permissions-Policy: screen-wake-lock=() diff --git a/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-bluetooth.html b/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-bluetooth.html new file mode 100644 index 00000000000..2265bd01d2b --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-bluetooth.html @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-compute-pressure.html b/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-compute-pressure.html new file mode 100644 index 00000000000..7fac3e32767 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-compute-pressure.html @@ -0,0 +1,16 @@ + + diff --git a/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-local-fonts.html b/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-local-fonts.html new file mode 100644 index 00000000000..1b965d9c7d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-local-fonts.html @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-payment-extension.html b/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-payment-extension.html index a97de546428..86f0ea3e48a 100644 --- a/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-payment-extension.html +++ b/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-payment-extension.html @@ -47,6 +47,7 @@ window.onload = async function() { }, } }; + await window.test_driver.bless('user activation'); await navigator.credentials.create({ publicKey }); diff --git a/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-screen-wakelock.html b/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-screen-wakelock.html index 6feed51d498..5b8f1aa8bc5 100644 --- a/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-screen-wakelock.html +++ b/tests/wpt/web-platform-tests/permissions-policy/resources/permissions-policy-screen-wakelock.html @@ -10,9 +10,9 @@ Promise.resolve().then(async () => { const wakeLock = await navigator.wakeLock.request("screen"); await wakeLock.release(); - window.parent.postMessage({ enabled: true }, "*"); + window.parent.postMessage({ type: 'availability-result', enabled: true }, "*"); } catch (e) { - window.parent.postMessage({ enabled: false }, "*"); + window.parent.postMessage({ type: 'availability-result', enabled: false }, "*"); } }); diff --git a/tests/wpt/web-platform-tests/permissions/META.yml b/tests/wpt/web-platform-tests/permissions/META.yml index b055f50f636..6a05abee464 100644 --- a/tests/wpt/web-platform-tests/permissions/META.yml +++ b/tests/wpt/web-platform-tests/permissions/META.yml @@ -1,5 +1,4 @@ spec: https://w3c.github.io/permissions/ suggested_reviewers: - - jyasskin - - mounirlamouri + - miketaylr - marcoscaceres diff --git a/tests/wpt/web-platform-tests/permissions/all-permissions.html b/tests/wpt/web-platform-tests/permissions/all-permissions.html new file mode 100644 index 00000000000..9ad014bc6e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions/all-permissions.html @@ -0,0 +1,43 @@ + + +Test all known permissions support + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/permissions/nfc-permission.html b/tests/wpt/web-platform-tests/permissions/nfc-permission.html deleted file mode 100644 index eeec7251c1c..00000000000 --- a/tests/wpt/web-platform-tests/permissions/nfc-permission.html +++ /dev/null @@ -1,14 +0,0 @@ - - -Test Web NFC Permission. - - -
                                                                      - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions/non-fully-active.https.html b/tests/wpt/web-platform-tests/permissions/non-fully-active.https.html new file mode 100644 index 00000000000..1c11afa3d94 --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions/non-fully-active.https.html @@ -0,0 +1,108 @@ + + +Geolocation Test: non-fully active document + + + + + + + diff --git a/tests/wpt/web-platform-tests/permissions/permissions-cg.https.html b/tests/wpt/web-platform-tests/permissions/permissions-cg.https.html new file mode 100644 index 00000000000..9a3d025346a --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions/permissions-cg.https.html @@ -0,0 +1,32 @@ + + +Test PermissionStatus's name attribute. + + + + + + diff --git a/tests/wpt/web-platform-tests/permissions/permissions-garbage-collect.https.html b/tests/wpt/web-platform-tests/permissions/permissions-garbage-collect.https.html new file mode 100644 index 00000000000..cd650dc8f2d --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions/permissions-garbage-collect.https.html @@ -0,0 +1,52 @@ + + +Test Permission garbage collection persistance. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/permissions/resources/empty.html b/tests/wpt/web-platform-tests/permissions/resources/empty.html new file mode 100644 index 00000000000..b0653f8c0cd --- /dev/null +++ b/tests/wpt/web-platform-tests/permissions/resources/empty.html @@ -0,0 +1,3 @@ + + +Just a support file diff --git a/tests/wpt/web-platform-tests/permissions/screen-wake-lock-permission.html b/tests/wpt/web-platform-tests/permissions/screen-wake-lock-permission.html deleted file mode 100644 index 0fa69ff96a0..00000000000 --- a/tests/wpt/web-platform-tests/permissions/screen-wake-lock-permission.html +++ /dev/null @@ -1,15 +0,0 @@ - - -Test "screen-wake-lock" Permission. - - -
                                                                      - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/permissions/test-background-fetch-permission.html b/tests/wpt/web-platform-tests/permissions/test-background-fetch-permission.html deleted file mode 100644 index c824ecf1d2b..00000000000 --- a/tests/wpt/web-platform-tests/permissions/test-background-fetch-permission.html +++ /dev/null @@ -1,14 +0,0 @@ - - -Test Background Fetch Permission. - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/permissions/test-periodic-background-sync-permission.html b/tests/wpt/web-platform-tests/permissions/test-periodic-background-sync-permission.html deleted file mode 100644 index c3b6a1d8b9e..00000000000 --- a/tests/wpt/web-platform-tests/permissions/test-periodic-background-sync-permission.html +++ /dev/null @@ -1,13 +0,0 @@ - - -Test Periodic Background Sync Permission. - - -
                                                                      - - diff --git a/tests/wpt/web-platform-tests/pointerevents/mouse-pointer-boundary-events-for-shadowdom.html b/tests/wpt/web-platform-tests/pointerevents/mouse-pointer-boundary-events-for-shadowdom.html index 9cd6c6b22fd..ea200d6c966 100644 --- a/tests/wpt/web-platform-tests/pointerevents/mouse-pointer-boundary-events-for-shadowdom.html +++ b/tests/wpt/web-platform-tests/pointerevents/mouse-pointer-boundary-events-for-shadowdom.html @@ -34,6 +34,7 @@ promise_test(async () => { var rect = document.getElementById("target").getBoundingClientRect(); await new test_driver.Actions() + .addPointer("default-mouse") .pointerMove(Math.ceil(rect.left - 10), Math.ceil(rect.top - 10)) .send() await resolveWhen(() => { return moveReceived == true }); @@ -41,6 +42,7 @@ promise_test(async () => { moveReceived = false; await new test_driver.Actions() + .addPointer("default-mouse") .pointerMove(Math.ceil(rect.left + 10), Math.ceil(rect.top + 10)) .send() await resolveWhen(() => { return moveReceived == true }); @@ -57,6 +59,7 @@ promise_test(async () => { moveReceived = false; await new test_driver.Actions() + .addPointer("default-mouse") .pointerMove(Math.ceil(rect.left - 10), Math.ceil(rect.top - 10)) .send() await resolveWhen(() => { return moveReceived == true }); diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_boundary_events_in_capturing.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_boundary_events_in_capturing.html index 893c7fdead6..b3a3fe7fe12 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_boundary_events_in_capturing.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_boundary_events_in_capturing.html @@ -12,101 +12,87 @@ - - - + - +

                                                                      Pointer Events boundary events in capturing

                                                                      -

                                                                      - Test Description: This test checks the boundary events of pointer events while the capturing changes. If you are using hoverable pen don't leave the range of digitizer while doing the instructions. -
                                                                        -
                                                                      1. Move your pointer over the black square
                                                                      2. -
                                                                      3. Press down the pointer (i.e. press left button with mouse or touch the screen with finger or pen).
                                                                      4. -
                                                                      5. Drag the pointer within the black square.
                                                                      6. -
                                                                      7. Release the pointer.
                                                                      8. -
                                                                      - - Test passes if the proper behavior of the events is observed. +

                                                                      + This automated test checks the boundary events of pointer events while the capturing + changes. This test cannot be run manually.

                                                                      -
                                                                      -
                                                                      -
                                                                      Do not hover over or touch this element.
                                                                      -
                                                                      -

                                                                      The following pointer types were detected: .

                                                                      -

                                                                      Refresh the page to run the tests again with a different pointer type.

                                                                      -
                                                                      +
                                                                      +
                                                                      Do not hover over or touch this element.
                                                                      - + + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_capture_suppressing_mouse.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_capture_suppressing_mouse.html index b621dcb49a9..0d7756335d1 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_capture_suppressing_mouse.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_capture_suppressing_mouse.html @@ -1,225 +1,239 @@ - - Set/Release capture - - - - - - - - - - - -

                                                                      Pointer Events capture test

                                                                      -

                                                                      - Test Description: This test checks if setCapture/releaseCapture functions works properly. Complete the following actions: -
                                                                        -
                                                                      1. Put your mouse over the black rectangle. pointerover and pointerenter should be logged inside of it.
                                                                      2. -
                                                                      3. Move your mouse out of the black rectangle. pointerout and pointerleave should be logged inside of it
                                                                      4. -
                                                                      5. Put your mouse over the purple rectangle. pointerover and pointerenter should be logged inside of it.
                                                                      6. -
                                                                      7. Move your mouse out of the purple rectangle. pointerout and pointerleave should be logged inside of it
                                                                      8. -
                                                                      9. Press and hold left mouse button over "Set Capture" button and move mouse a litte inside the button. "gotpointercapture", "pointerover", and "pointerenter" should be logged in the black rectangle
                                                                      10. -
                                                                      11. Put your mouse over the purple rectangle and then move it out. Nothing should happen
                                                                      12. -
                                                                      13. Put your mouse over the black rectangle and then move it out. Nothing should happen.
                                                                      14. -
                                                                      15. Put your mouse over the purple rectangle and then release left mouse button. "lostpointercapture" should be logged in the black rectangle. Move your mouse in the purple rectangle a little. "pointerout" and "pointerleave" should be logged in the black rectangle. Also "pointerover" and "pointerenter" should be logged in the purple rectangle"
                                                                      16. -
                                                                      -

                                                                      - Test passes if the proper behaviour of the events is observed. -
                                                                      -
                                                                      -
                                                                      -
                                                                      - - + + + + + + + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + + -

                                                                      Pointer Events Capture Test

                                                                      -
                                                                      -

                                                                      The following pointer types were detected: .

                                                                      -

                                                                      The following events were logged: .

                                                                      -
                                                                      -
                                                                      - + // On entry for this sub-test, the pointer is over the capture target. + await runCaptureAndHoverTargetActionSequence(t, target1); + assert_next_events( + target0, + ['pointerout', 'pointerleave'], + 'Move from capture target to button'); + assert_next_events( + captureButton, + ['pointerover', 'pointerenter', 'pointermove'], + 'Move from capture target to button'); + assert_next_events( + captureButton, + [ 'pointerdown', 'pointerout', 'pointerleave'], + 'Pointer down on button to trigger capture'); + assert_next_events( + target0, + ['pointerover', 'pointerenter', 'gotpointercapture', 'pointermove'], + 'Capture triggered while hovering over non-capture target'); + assert_next_events( + target0, + ['lostpointercapture', 'pointerout', 'pointerleave'], + 'Lose pointer capture while hovering over non-capture target'); + assert_next_events( + target1, + ["pointerover", "pointerenter"], + 'Post capture while hovering over non-capture target'); + assert_empty_event_queue('Check after hover on non-capture target '); + }, 'Test pointer capture.'); + }; + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_click_during_capture.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_click_during_capture.html index 2acd5dc1287..e7448c7a8bd 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_click_during_capture.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_click_during_capture.html @@ -68,7 +68,7 @@ if (target == blue && event.type == 'lostpointercapture') { if (phase == PhaseEnum.Phase1WithCapturing) { test_pointerEvent.step(function() { - assert_equals(receivedEvents.join(','), 'pointerdown@green,gotpointercapture@blue,pointerup@blue,click@grey,lostpointercapture@blue', 'An element should only receive click when it is the first common ancestor of pointerdown and pointerup targets'); + assert_equals(receivedEvents.join(','), 'pointerdown@green,gotpointercapture@blue,pointerup@blue,click@blue,lostpointercapture@blue', 'An element should only receive click when it is the first common ancestor of pointerdown and pointerup targets'); }); phase = PhaseEnum.Phase2WithCapturing; receivedEvents = []; @@ -92,6 +92,10 @@ }); // Inject mouse inputs. + // + // TODO(mustaq@chromium.org): It is no longer testable manually. + // Switch it to a promise_test to simplify the code, and remove + // the instructions on HTML. var actions_promise = new test_driver.Actions() .pointerMove(0, 0, {origin: green}) .pointerDown() diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_constructor.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_constructor.html index 5aab1326cc5..3b278746e12 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_constructor.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_constructor.html @@ -38,13 +38,13 @@ ["getCoalescedEvents()[" + i + "].isPrimary", coalescedEvent.isPrimary, event.isPrimary], ["getCoalescedEvents()[" + i + "].getCoalescedEvents().length", coalescedEvent.getCoalescedEvents().length, 0], ["getCoalescedEvents()[" + i + "].getPredictedEvents().length", coalescedEvent.getPredictedEvents().length, 0], - ["getCoalescedEvents()[" + i + "].target", coalescedEvent.target, target0], + ["getCoalescedEvents()[" + i + "].target", coalescedEvent.target, null], ["getCoalescedEvents()[" + i + "].currentTarget", coalescedEvent.currentTarget, null], ["getCoalescedEvents()[" + i + "].eventPhase", coalescedEvent.eventPhase, Event.NONE], ["getCoalescedEvents()[" + i + "].cancelable", coalescedEvent.cancelable, false], ["getCoalescedEvents()[" + i + "].bubbles", coalescedEvent.bubbles, false], - ["getCoalescedEvents()[" + i + "].offsetX", coalescedEvent.offsetX, event.offsetX + (i==0?-10:0)], - ["getCoalescedEvents()[" + i + "].offsetY", coalescedEvent.offsetY, event.offsetY], + ["getCoalescedEvents()[" + i + "].offsetX", coalescedEvent.offsetX, 310 + (i==0?-10:0)], + ["getCoalescedEvents()[" + i + "].offsetY", coalescedEvent.offsetY, 0], ]); } for (var i=0; i + +pointer-events: none correctly targets scrolls + + + + + + + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_hit_test_scroll_visible_descendant.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_hit_test_scroll_visible_descendant.html new file mode 100644 index 00000000000..0a09137e76d --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_hit_test_scroll_visible_descendant.html @@ -0,0 +1,59 @@ + + +pointer-events: auto descendant correctly targets scrolls + + + + + + + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js b/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js index 727909fee72..696ea46748b 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js @@ -1,4 +1,4 @@ -var All_Pointer_Events = [ +const All_Pointer_Events = [ "pointerdown", "pointerup", "pointercancel", @@ -10,6 +10,37 @@ var All_Pointer_Events = [ "gotpointercapture", "lostpointercapture"]; +// https://w3c.github.io/pointerevents/#the-button-property +// Values for the button property, which indicates the device button whose state +// change fired the event. +const ButtonChange = { + NONE: -1, + PEN_CONTACT: 0, + TOUCH_CONTACT: 0, + LEFT_MOUSE: 0, + MIDDLE_MOUSE: 1, + RIGHT_MOUSE: 2, + X1_MOUSE: 3, + X2_MOUSE: 4, + PEN_ERASER_BUTTON: 5 +}; + +// https://w3c.github.io/pointerevents/#the-buttons-property +// The buttons property gives the current state of the device buttons as a +// bitmask. +const ButtonsBitfield = { + NONE: 0, + PEN_CONTACT: 1, + TOUCH_CONTACT: 1, + LEFT_MOUSE: 1, + RIGHT_MOUSE: 2, + PEN_BARREL_BUTTON: 2, + MIDDLE_MOUSE: 4, + X1_MOUSE: 8, + X2_MOUSE: 16, + PEN_ERASER_BUTTON: 32 +}; + // Check for conformance to PointerEvent interface // TA: 1.1, 1.2, 1.6, 1.7, 1.8, 1.9, 1.10, 1.11, 1.12, 1.13 function check_PointerEvent(event, testNamePrefix) { @@ -105,7 +136,7 @@ function check_PointerEvent(event, testNamePrefix) { } }, pointerTestName + ".pressure value is valid"); - // Check mouse-specific properties + // Check mouse-specific properties. if (event.pointerType === "mouse") { // TA: 1.9, 1.10, 1.13 test(function () { @@ -115,7 +146,14 @@ function check_PointerEvent(event, testNamePrefix) { assert_equals(event.tiltY, 0, event.type + ".tiltY is 0 for mouse"); assert_true(event.isPrimary, event.type + ".isPrimary is true for mouse"); }, pointerTestName + " properties for pointerType = mouse"); - // Check properties for pointers other than mouse + } + + // Check "pointerup" specific properties. + if (event.type == "pointerup") { + test(function () { + assert_equals(event.width, 1, "width of pointerup should be 1"); + assert_equals(event.height, 1, "height of pointerup should be 1"); + }, pointerTestName + " properties for pointerup"); } } diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html index e8c205a042f..d927ed94b32 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html @@ -1,128 +1,97 @@ - - touch-action: inherit from parent: none - - - - - - - - - - - - - -

                                                                      Pointer Events touch-action attribute support

                                                                      -

                                                                      Test Description: Try to scroll element DOWN then RIGHT inside blue rectangle. Tap Complete button under the rectangle when done. Expected: no panning

                                                                      -

                                                                      Note: this test is for touch-devices only

                                                                      -
                                                                      -
                                                                      -

                                                                      - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem - nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. - Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit - lobortis nisl ut aliquip ex ea commodo consequat. -

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem - nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. - Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit - lobortis nisl ut aliquip ex ea commodo consequat. -

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem - nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. - Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit - lobortis nisl ut aliquip ex ea commodo consequat. -

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem - nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. - Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit - lobortis nisl ut aliquip ex ea commodo consequat. -

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -

                                                                      Lorem ipsum dolor sit amet...

                                                                      -
                                                                      + + touch-action: inherit from parent: none + + + + + + + + + + + +

                                                                      Pointer Events: effective touch-action is "none" when parent has "none" + and target has "auto"

                                                                      +

                                                                      + Try to scroll DOWN then RIGHT from inside blue rectangle. + Tap Complete button under the rectangle when done. + Expectation: no panning +

                                                                      +

                                                                      Note: this test is for touch-devices only

                                                                      +
                                                                      +
                                                                      + Try to scroll DOWN then RIGHT from here.
                                                                      - - -

                                                                      behaviour: none

                                                                      -
                                                                      -

                                                                      The following pointer types were detected: .

                                                                      -
                                                                      -
                                                                      - - \ No newline at end of file + await touchScrollInTarget(scrollTarget, 'down'); + await touchScrollInTarget(scrollTarget, 'right'); + await clickInTarget("touch", btnComplete); + await button_complete_click; + + assert_true( + pointerup_received, + "expected pointerup event with scroll gestures on " + + "touch-action:none"); + assert_false( + pointercancel_received, + "unexpected pointercancel event with scroll gestures on " + + "touch-action:none"); + assert_false( + scroll_received, + "unexpected scroll event with scroll gestures on " + + "touch-action:none"); + assert_equals(target0.scrollLeft, 0, + "expected scrollLeft 0 in the end of the test"); + assert_equals(target0.scrollTop, 0, + "expected scrollTop 0 in the end of the test"); + + updateDescriptionComplete(); + }, "touch-action attribute test"); + }; + + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-modified_touch.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-modified_touch.html new file mode 100644 index 00000000000..a91022504a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-modified_touch.html @@ -0,0 +1,60 @@ + + + + Deleting touch-action elem after pointerdown has no effect + + + + + + + + + + + +

                                                                      Deleting touch-action elem after pointerdown has no effect

                                                                      +

                                                                      + Try to scroll up/down starting at the green element. Expectation: the + green element would vanish immediately and the content won't scroll. +

                                                                      +

                                                                      Note: this test is for touch-devices only

                                                                      +
                                                                      +
                                                                      +
                                                                      Drag up or down from here
                                                                      +
                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/portals/portals-no-frame-crash.html b/tests/wpt/web-platform-tests/portals/portals-no-frame-crash.html index c87afa38c29..cc94a772c34 100644 --- a/tests/wpt/web-platform-tests/portals/portals-no-frame-crash.html +++ b/tests/wpt/web-platform-tests/portals/portals-no-frame-crash.html @@ -17,5 +17,14 @@ let portal = document.createElement("portal"); doc.body.appendChild(portal); }, "inserting a portal element into a detached iframe's document shouldn't crash or throw"); + + test(() => { + let iframe = document.createElement("iframe"); + document.body.appendChild(iframe); + let doc = iframe.contentDocument; + iframe.remove(); + let portal = doc.createElement("portal"); + doc.body.appendChild(portal); + }, "creating a portal element with a detached iframe's document shouldn't crash or throw"); diff --git a/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-modulepreload-exec.html b/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-modulepreload-exec.html new file mode 100644 index 00000000000..160aef6b5fd --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-modulepreload-exec.html @@ -0,0 +1,23 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-modulepreload.html b/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-modulepreload.html new file mode 100644 index 00000000000..df1ac72eb38 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-modulepreload.html @@ -0,0 +1,22 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/dynamic-adding-preload-nonce.html b/tests/wpt/web-platform-tests/preload/dynamic-adding-preload-nonce.html index 19e09472eef..2a5bc1ae857 100644 --- a/tests/wpt/web-platform-tests/preload/dynamic-adding-preload-nonce.html +++ b/tests/wpt/web-platform-tests/preload/dynamic-adding-preload-nonce.html @@ -1,39 +1,50 @@ + diff --git a/tests/wpt/web-platform-tests/preload/link-header-modulepreload.html b/tests/wpt/web-platform-tests/preload/link-header-modulepreload.html new file mode 100644 index 00000000000..fd759f6251f --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/link-header-modulepreload.html @@ -0,0 +1,30 @@ + + +Makes sure that Link headers support modulepreload + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/link-header-preload-non-html.html b/tests/wpt/web-platform-tests/preload/link-header-preload-non-html.html new file mode 100644 index 00000000000..c990e610d9c --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/link-header-preload-non-html.html @@ -0,0 +1,59 @@ + + +Makes sure that Link headers preload resources in non-HTML documents + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/link-header-preload-nonce.html b/tests/wpt/web-platform-tests/preload/link-header-preload-nonce.html index 74ea87042b4..cd2d8fbb5a0 100644 --- a/tests/wpt/web-platform-tests/preload/link-header-preload-nonce.html +++ b/tests/wpt/web-platform-tests/preload/link-header-preload-nonce.html @@ -1,33 +1,53 @@ -Makes sure that Link headers preload resources with CSP nonce - - - + + + + - diff --git a/tests/wpt/web-platform-tests/preload/link-header-preload-nonce.html.headers b/tests/wpt/web-platform-tests/preload/link-header-preload-nonce.html.headers deleted file mode 100644 index a54b69378e9..00000000000 --- a/tests/wpt/web-platform-tests/preload/link-header-preload-nonce.html.headers +++ /dev/null @@ -1,3 +0,0 @@ -Content-Security-Policy: script-src 'nonce-abc' -Link: ;rel=preload;as=script -Link: ;rel=preload;as=script;nonce=abc diff --git a/tests/wpt/web-platform-tests/preload/preconnect-onerror-event.html b/tests/wpt/web-platform-tests/preload/preconnect-onerror-event.html new file mode 100644 index 00000000000..4ce583d4db8 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preconnect-onerror-event.html @@ -0,0 +1,37 @@ + + +Makes sure that preloaded resources trigger the onerror event + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/preconnect.html b/tests/wpt/web-platform-tests/preload/preconnect.html new file mode 100644 index 00000000000..f95a5c0ba05 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preconnect.html @@ -0,0 +1,39 @@ + + +Makes sure that preloaded resources reduce connection time to zero + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/preload-connect-to-doc.html b/tests/wpt/web-platform-tests/preload/preload-connect-to-doc.html new file mode 100644 index 00000000000..ba45f6f3f84 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preload-connect-to-doc.html @@ -0,0 +1,102 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/preload-csp.sub.html b/tests/wpt/web-platform-tests/preload/preload-csp.sub.html index a11214e9ec8..7d367bf846d 100644 --- a/tests/wpt/web-platform-tests/preload/preload-csp.sub.html +++ b/tests/wpt/web-platform-tests/preload/preload-csp.sub.html @@ -1,55 +1,35 @@ - + Makes sure that preload requests respect CSP + - - - - - - - - - + + + + + + + + + - diff --git a/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html b/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html index c649a53f874..8d280c4a475 100644 --- a/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html +++ b/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html @@ -1,55 +1,35 @@ - + Makes sure that preload requests respect CSP - - - - - - - - - + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/preload-dynamic-csp.html b/tests/wpt/web-platform-tests/preload/preload-dynamic-csp.html new file mode 100644 index 00000000000..7a696cb7ed8 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preload-dynamic-csp.html @@ -0,0 +1,27 @@ + +Makes sure that preload requests respect CSP directives that are added after the preload + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/preload-error.sub.html b/tests/wpt/web-platform-tests/preload/preload-error.sub.html new file mode 100644 index 00000000000..3c9d35b0b35 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preload-error.sub.html @@ -0,0 +1,223 @@ + + + +link rel=preload with various errors/non-errors + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/preload-font-crossorigin.html b/tests/wpt/web-platform-tests/preload/preload-font-crossorigin.html new file mode 100644 index 00000000000..492dc393cc8 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preload-font-crossorigin.html @@ -0,0 +1,91 @@ + +Makes sure that preload font destination needs crossorigin attribute + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/preload-referrer-policy.html b/tests/wpt/web-platform-tests/preload/preload-referrer-policy.html new file mode 100644 index 00000000000..0a4fbb0b4a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preload-referrer-policy.html @@ -0,0 +1,119 @@ + + +The preload's referrerpolicy attribute should be respected + + + + + + + + +

                                                                      The preload's referrerpolicy attribute should be respected, + and consumed regardless of consumer referrer policy

                                                                      + + diff --git a/tests/wpt/web-platform-tests/preload/preload-resource-match.https.html b/tests/wpt/web-platform-tests/preload/preload-resource-match.https.html index e10043d8293..55cfd872d3f 100644 --- a/tests/wpt/web-platform-tests/preload/preload-resource-match.https.html +++ b/tests/wpt/web-platform-tests/preload/preload-resource-match.https.html @@ -11,7 +11,7 @@ const {HTTPS_REMOTE_ORIGIN} = get_host_info(); function createEchoURL(text, type) { return `/preload/resources/echo-with-cors.py?type=${ encodeURIComponent(type)}&content=${ - encodeURIComponent(text)}` + encodeURIComponent(text)}&uid=${token()}` } const urls = { image: createEchoURL('', 'image/svg+xml'), @@ -74,7 +74,7 @@ const loaders = { img.addEventListener('error', resolve); }); }, - font: (href, attr, t) => { + font: async (href, attr, t) => { const style = document.createElement('style'); style.innerHTML = `@font-face { font-family: 'MyFont'; @@ -87,6 +87,7 @@ const loaders = { p.style.fontFamily = 'MyFont'; document.body.appendChild(p); t.add_cleanup(() => p.remove()); + await document.fonts.ready; }, shape: (href, attr, t) => { const div = document.createElement('div'); @@ -126,13 +127,15 @@ const loaders = { document.body.appendChild(script); await new Promise(resolve => { script.onload = resolve }); }, - style: (href, attr, t) => { + style: async (href, attr, t) => { const style = document.createElement('link'); style.rel = 'stylesheet'; + style.href = href; t.add_cleanup(() => style.remove()); if (attr.crossOrigin) style.setAttribute('crossorigin', attr.crossOrigin); document.body.appendChild(style); + await new Promise(resolve => style.addEventListener('load', resolve)); } } @@ -144,15 +147,19 @@ function preload_reuse_test(type, as, url, preloadConfig, resourceConfig) { }&${token()}`) promise_test(async t => { await preload({href, as, ...configs[preloadConfig].attributes}, t); - await loaders[as](href, configs[resourceConfig].attributes, t) - verifyNumberOfResourceTimingEntries(href, expected === "reuse" ? 1 : 2) + await loaders[as](href, configs[resourceConfig].attributes, t); + const expectedEntries = expected === "reuse" ? 1 : 2; + + if (numberOfResourceTimingEntries(href) < expectedEntries) + await new Promise(resolve => t.step_timeout(resolve, 300)); + verifyNumberOfResourceTimingEntries(href, expectedEntries); }, `Loading ${type} (${resourceConfig}) with link (${preloadConfig}) should ${expected} the preloaded response`); } for (const [resourceTypeName, resourceInfo] of Object.entries(resourceTypes)) { const configNames = resourceInfo.config ? [resourceInfo.config, 'same-origin'] : Object.keys(configs) for (const resourceConfigName of configNames) { - for (const preloadConfigName of Object.keys(configs)) { + for (const preloadConfigName in configs) { // Same-origin requests ignore their CORS attributes, so no need to match all of them. if ((resourceConfigName === 'same-origin' && preloadConfigName === 'same-origin') || (resourceConfigName !== 'same-origin' && preloadConfigName !== 'same-origin')) diff --git a/tests/wpt/web-platform-tests/preload/preload-strict-dynamic.html b/tests/wpt/web-platform-tests/preload/preload-strict-dynamic.html deleted file mode 100644 index 76395656f9b..00000000000 --- a/tests/wpt/web-platform-tests/preload/preload-strict-dynamic.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - -CSP strict-dynamic + preload - - - - - - - - diff --git a/tests/wpt/web-platform-tests/preload/preload-strict-dynamic.sub.html b/tests/wpt/web-platform-tests/preload/preload-strict-dynamic.sub.html new file mode 100644 index 00000000000..bdd7a1746ba --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preload-strict-dynamic.sub.html @@ -0,0 +1,88 @@ + + + + + + +CSP strict-dynamic + preload + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/preload-time-to-fetch.https.html b/tests/wpt/web-platform-tests/preload/preload-time-to-fetch.https.html new file mode 100644 index 00000000000..774501ef3e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preload-time-to-fetch.https.html @@ -0,0 +1,99 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/preload/preload-type-match.html b/tests/wpt/web-platform-tests/preload/preload-type-match.html new file mode 100644 index 00000000000..646500f6b38 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preload-type-match.html @@ -0,0 +1,71 @@ + +Makes sure that only matching types are loaded + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/preload/resources/echo-preload-header.py b/tests/wpt/web-platform-tests/preload/resources/echo-preload-header.py new file mode 100644 index 00000000000..5cfb9e8c259 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/resources/echo-preload-header.py @@ -0,0 +1,16 @@ +import os +from wptserve.utils import isomorphic_encode + +def main(request, response): + response.headers.set(b"Content-Type", request.GET.first(b"type")) + link = request.GET.first(b"link") + response.headers.set(b"Access-Control-Allow-Origin", b"*") + response.headers.set(b"Access-Control-Allow-Credentials", b"true") + if link is not None: + response.headers.set(b"Link", link) + + if b"file" in request.GET: + path = os.path.join(os.path.dirname(isomorphic_encode(__file__)), request.GET.first(b"file")); + response.content = open(path, mode=u'rb').read(); + else: + return request.GET.first(b"content") diff --git a/tests/wpt/web-platform-tests/preload/resources/echo-referrer.py b/tests/wpt/web-platform-tests/preload/resources/echo-referrer.py new file mode 100644 index 00000000000..287e000f8f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/resources/echo-referrer.py @@ -0,0 +1,6 @@ +def main(request, response): + response_headers = [(b"Access-Control-Allow-Origin", b"*"), (b"Content-Type", b"text/javascript")] + body = b""" + window.referrers["%s"] = "%s"; + """ % (request.GET.first(b"uid", b""), request.headers.get(b"referer", b"")) + return (200, response_headers, body) diff --git a/tests/wpt/web-platform-tests/preload/resources/link-header-referrer-policy.html b/tests/wpt/web-platform-tests/preload/resources/link-header-referrer-policy.html new file mode 100644 index 00000000000..dd2144d5075 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/resources/link-header-referrer-policy.html @@ -0,0 +1,26 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/preload/resources/link-header-referrer-policy.py b/tests/wpt/web-platform-tests/preload/resources/link-header-referrer-policy.py new file mode 100644 index 00000000000..984518d364d --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/resources/link-header-referrer-policy.py @@ -0,0 +1,11 @@ +def main(request, response): + response_headers = [(b"Link", b"<%s>;rel=\"preload\";%s;as=\"script\"" % + (request.GET.first(b"href", b""), + request.GET.first(b"preload-policy", b"")))] + body = "" + body_name_list = __file__.split(".")[:-1] + body_name_list.append("html") + filename = ".".join(body_name_list) + with open(filename, 'r+b') as f: + body = f.readlines() + return (200, response_headers, body) diff --git a/tests/wpt/web-platform-tests/preload/resources/modulepreload-iframe.html b/tests/wpt/web-platform-tests/preload/resources/modulepreload-iframe.html new file mode 100644 index 00000000000..1d3d21f4d95 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/resources/modulepreload-iframe.html @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/preload/resources/preload_helper.js b/tests/wpt/web-platform-tests/preload/resources/preload_helper.js index 1c7c1a2750e..5b7a6eb52ba 100644 --- a/tests/wpt/web-platform-tests/preload/resources/preload_helper.js +++ b/tests/wpt/web-platform-tests/preload/resources/preload_helper.js @@ -1,3 +1,18 @@ +function stashPutUrl(token) { + return `/preload/resources/stash-put.py?key=${token}`; +} + +function encodedStashPutUrl(token) { + return encodeURIComponent(stashPutUrl(token)); +} + +async function hasArrivedAtServer(token) { + const res = await fetch(`/preload/resources/stash-take.py?key=${token}`); + assert_true(res.status === 200 || res.status === 404, + 'status must be either 200 or 404'); + return res.status === 200; +} + function verifyPreloadAndRTSupport() { var link = window.document.createElement("link"); diff --git a/tests/wpt/web-platform-tests/preload/resources/slow-exec.js b/tests/wpt/web-platform-tests/preload/resources/slow-exec.js new file mode 100644 index 00000000000..3b37da4ef4b --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/resources/slow-exec.js @@ -0,0 +1,3 @@ +window.didLoadModule = false; +await new Promise(r => setTimeout(t, 5000)); +window.didLoadModule = true; diff --git a/tests/wpt/web-platform-tests/preload/resources/stash-put.py b/tests/wpt/web-platform-tests/preload/resources/stash-put.py new file mode 100644 index 00000000000..f4bc87940ec --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/resources/stash-put.py @@ -0,0 +1,20 @@ +from wptserve.utils import isomorphic_decode + +def main(request, response): + if request.method == u'OPTIONS': + # CORS preflight + response.headers.set(b'Access-Control-Allow-Origin', b'*') + response.headers.set(b'Access-Control-Allow-Methods', b'*') + response.headers.set(b'Access-Control-Allow-Headers', b'*') + return 'done' + + url_dir = u'/'.join(request.url_parts.path.split(u'/')[:-1]) + u'/' + key = request.GET.first(b"key") + if b"value" in request.GET: + value = request.GET.first(b"value") + else: + value = b"value" + # value here must be a text string. It will be json.dump()'ed in stash-take.py. + request.server.stash.put(key, isomorphic_decode(value), url_dir) + response.headers.set(b'Access-Control-Allow-Origin', b'*') + return "done" diff --git a/tests/wpt/web-platform-tests/preload/resources/stash-take.py b/tests/wpt/web-platform-tests/preload/resources/stash-take.py new file mode 100644 index 00000000000..9977197cae5 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/resources/stash-take.py @@ -0,0 +1,14 @@ +from wptserve.handlers import json_handler + + +@json_handler +def main(request, response): + dir = u'/'.join(request.url_parts.path.split(u'/')[:-1]) + u'/' + key = request.GET.first(b"key") + response.headers.set(b'Access-Control-Allow-Origin', b'*') + value = request.server.stash.take(key, dir) + if value is None: + response.status = 404 + return 'No entry is found' + response.status = 200 + return value diff --git a/tests/wpt/web-platform-tests/preload/subresource-integrity-font.html b/tests/wpt/web-platform-tests/preload/subresource-integrity-font.html new file mode 100644 index 00000000000..da705dcb135 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/subresource-integrity-font.html @@ -0,0 +1,201 @@ + +Subresource Integrity for font + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/subresource-integrity-partial-image.html b/tests/wpt/web-platform-tests/preload/subresource-integrity-partial-image.html index 3abc8399219..108897c4d65 100644 --- a/tests/wpt/web-platform-tests/preload/subresource-integrity-partial-image.html +++ b/tests/wpt/web-platform-tests/preload/subresource-integrity-partial-image.html @@ -21,7 +21,7 @@ const t = async_test( { assert_throws_js(TypeError, () => { - new Request("", {importance: 'invalid'}); - }, "a new Request() must throw a TypeError if RequestInit's importance is an invalid value"); + new Request("", {priority: 'invalid'}); + }, "a new Request() must throw a TypeError if RequestInit's priority is an invalid value"); }, "new Request() throws a TypeError if any of RequestInit's members' values are invalid"); diff --git a/tests/wpt/web-platform-tests/priority-hints/img-attr-named-constructor.tentative.html b/tests/wpt/web-platform-tests/priority-hints/img-attr-named-constructor.tentative.html index ce677ccc177..a6a629059ee 100644 --- a/tests/wpt/web-platform-tests/priority-hints/img-attr-named-constructor.tentative.html +++ b/tests/wpt/web-platform-tests/priority-hints/img-attr-named-constructor.tentative.html @@ -4,23 +4,23 @@ - - - - + + + + diff --git a/tests/wpt/web-platform-tests/priority-hints/link-attr.tentative.html b/tests/wpt/web-platform-tests/priority-hints/link-attr.tentative.html index 1c5aeb530eb..0190a611f13 100644 --- a/tests/wpt/web-platform-tests/priority-hints/link-attr.tentative.html +++ b/tests/wpt/web-platform-tests/priority-hints/link-attr.tentative.html @@ -4,21 +4,21 @@ - - - - + + + + diff --git a/tests/wpt/web-platform-tests/proximity/META.yml b/tests/wpt/web-platform-tests/proximity/META.yml index 284afed59d9..87450781306 100644 --- a/tests/wpt/web-platform-tests/proximity/META.yml +++ b/tests/wpt/web-platform-tests/proximity/META.yml @@ -1,5 +1,4 @@ spec: https://w3c.github.io/proximity/ suggested_reviewers: - - zqzhang - Honry - rakuco diff --git a/tests/wpt/web-platform-tests/push-api/META.yml b/tests/wpt/web-platform-tests/push-api/META.yml index 2f5a866d940..4886e6a70da 100644 --- a/tests/wpt/web-platform-tests/push-api/META.yml +++ b/tests/wpt/web-platform-tests/push-api/META.yml @@ -1,3 +1,4 @@ spec: https://w3c.github.io/push-api/ suggested_reviewers: - beverloo + - marcoscaceres diff --git a/tests/wpt/web-platform-tests/push-api/permission.https.html b/tests/wpt/web-platform-tests/push-api/permission.https.html new file mode 100644 index 00000000000..61cb40a843a --- /dev/null +++ b/tests/wpt/web-platform-tests/push-api/permission.https.html @@ -0,0 +1,14 @@ + + +Test push is a powerful feature via Permissions API + + + + diff --git a/tests/wpt/web-platform-tests/quirks/text-decoration-doesnt-propagate-into-tables/standards-ref.html b/tests/wpt/web-platform-tests/quirks/text-decoration-doesnt-propagate-into-tables/standards-ref.html index 4e2a3f45547..188e00ba945 100644 --- a/tests/wpt/web-platform-tests/quirks/text-decoration-doesnt-propagate-into-tables/standards-ref.html +++ b/tests/wpt/web-platform-tests/quirks/text-decoration-doesnt-propagate-into-tables/standards-ref.html @@ -7,6 +7,7 @@ .tbody { display: table-row-group } .tr { display: table-row } .td { display: table-cell } +tbody { vertical-align: initial; }
                                                                      this should be underlined
                                                                      this should not be underlined
                                                                      diff --git a/tests/wpt/web-platform-tests/quirks/text-decoration-doesnt-propagate-into-tables/standards.html b/tests/wpt/web-platform-tests/quirks/text-decoration-doesnt-propagate-into-tables/standards.html index 6b1c8a72751..62d4859696c 100644 --- a/tests/wpt/web-platform-tests/quirks/text-decoration-doesnt-propagate-into-tables/standards.html +++ b/tests/wpt/web-platform-tests/quirks/text-decoration-doesnt-propagate-into-tables/standards.html @@ -8,6 +8,7 @@ .tbody { display: table-row-group } .tr { display: table-row } .td { display: table-cell } +tbody { vertical-align: initial; }
                                                                      this should be underlined
                                                                      this should not be underlined
                                                                      diff --git a/tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-002.html b/tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-002.html index 5f98bc283eb..b8b3b2e5c58 100644 --- a/tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-002.html +++ b/tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-002.html @@ -35,6 +35,7 @@ for (let property of properties) { target.style[property] = '1234'; assert_not_equals(target.style[property], '1234'); assert_not_equals(target.style[property], '1234px'); + assert_not_equals(target.style[property], '1234px auto'); }, 'Property ' + property + ' does not support quirky length'); } diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html new file mode 100644 index 00000000000..2c03792a077 --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html @@ -0,0 +1,30 @@ + + +Referrer Policy: popup src="about:blank" + + + + + + + + diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/resources/submit-form-and-remove-frame.html b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/resources/submit-form-and-remove-frame.html new file mode 100644 index 00000000000..bf5ede96d9a --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/resources/submit-form-and-remove-frame.html @@ -0,0 +1,10 @@ + + + + +
                                                                      diff --git a/tests/wpt/web-platform-tests/remote-playback/META.yml b/tests/wpt/web-platform-tests/remote-playback/META.yml index c23f3bd9b8f..a234398b8b8 100644 --- a/tests/wpt/web-platform-tests/remote-playback/META.yml +++ b/tests/wpt/web-platform-tests/remote-playback/META.yml @@ -1,3 +1,4 @@ spec: https://w3c.github.io/remote-playback/ suggested_reviewers: - - mounirlamouri + - mfoltzgoogle + - louaybassbouss diff --git a/tests/wpt/web-platform-tests/reporting/README.md b/tests/wpt/web-platform-tests/reporting/README.md new file mode 100644 index 00000000000..52f08265c5d --- /dev/null +++ b/tests/wpt/web-platform-tests/reporting/README.md @@ -0,0 +1,19 @@ +Tests for the [Reporting API](https://w3c.github.io/reporting/). + +The tests in this directory validate the generic functionaity of the Reporting +API. Since reports are not actually generated by that specification, these tests +occasionally make use of other integrations, like CSP or Permissions Policy. + +## Testing integration with the Reporting API + +More comprehensive tests for other specifications' generated reports should be +in those specs' respective directories. + +There are two general methods of testing reporting integration: + +* The simpler is with the ReportingObserver interface, generating reports + within a document and reading them from script running in that document. +* For reports which cannot be observed from a document, there is a reporting + collector provided which can receive reports sent over HTTP and then serve + them in response to queries from the test script. See resources/README.md for + details. diff --git a/tests/wpt/web-platform-tests/reporting/cross-origin-report-no-credentials.https.sub.html b/tests/wpt/web-platform-tests/reporting/cross-origin-report-no-credentials.https.sub.html index 727259b0d96..f10d4cef3e4 100644 --- a/tests/wpt/web-platform-tests/reporting/cross-origin-report-no-credentials.https.sub.html +++ b/tests/wpt/web-platform-tests/reporting/cross-origin-report-no-credentials.https.sub.html @@ -26,7 +26,6 @@ }); // Wait for report to be received. - await wait(3000); const reports = await pollReports(endpoint, id); checkReportExists(reports, 'csp-violation', location.href); diff --git a/tests/wpt/web-platform-tests/reporting/cross-origin-reports-isolated.https.sub.html b/tests/wpt/web-platform-tests/reporting/cross-origin-reports-isolated.https.sub.html index 47be26e1a0c..4e9cb1eb01b 100644 --- a/tests/wpt/web-platform-tests/reporting/cross-origin-reports-isolated.https.sub.html +++ b/tests/wpt/web-platform-tests/reporting/cross-origin-reports-isolated.https.sub.html @@ -33,7 +33,6 @@ }); // Wait for 2 reports to be received. - await wait(3000); const reports = await pollReports(endpoint, id, 2); assert_equals(reports.length, 2); diff --git a/tests/wpt/web-platform-tests/reporting/document-reporting-default-endpoint.https.sub.html b/tests/wpt/web-platform-tests/reporting/document-reporting-default-endpoint.https.sub.html index 24c1216afaa..f1951e3469b 100644 --- a/tests/wpt/web-platform-tests/reporting/document-reporting-default-endpoint.https.sub.html +++ b/tests/wpt/web-platform-tests/reporting/document-reporting-default-endpoint.https.sub.html @@ -19,7 +19,7 @@ observer.observe(); }, "report generated"); - + - + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/reporting/generateTestReport-honors-endpoint.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/reporting/generateTestReport-honors-endpoint.https.sub.html.sub.headers new file mode 100644 index 00000000000..7167d54d838 --- /dev/null +++ b/tests/wpt/web-platform-tests/reporting/generateTestReport-honors-endpoint.https.sub.html.sub.headers @@ -0,0 +1 @@ +Reporting-Endpoints: default="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?reportID=41534b09-65b2-498a-9fd3-104281ed63ce" diff --git a/tests/wpt/web-platform-tests/reporting/path-absolute-endpoint.https.sub.html b/tests/wpt/web-platform-tests/reporting/path-absolute-endpoint.https.sub.html deleted file mode 100644 index fe119ac5cdf..00000000000 --- a/tests/wpt/web-platform-tests/reporting/path-absolute-endpoint.https.sub.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - Test that reports are sent when report-endpoint points to path-absolute-url - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/reporting/path-absolute-endpoint.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/reporting/path-absolute-endpoint.https.sub.html.sub.headers deleted file mode 100644 index 64d0894062d..00000000000 --- a/tests/wpt/web-platform-tests/reporting/path-absolute-endpoint.https.sub.html.sub.headers +++ /dev/null @@ -1,2 +0,0 @@ -Report-To: { "group": "csp-group", "max_age": 10886400, "endpoints": [{ "url": "/reporting/resources/report.py?reportID=33444bb6-e444-4978-9d62-d3825844041f" }] } -Content-Security-Policy: script-src 'self' 'unsafe-inline'; img-src 'none'; report-to csp-group diff --git a/tests/wpt/web-platform-tests/reporting/reporting-api-honors-limits.https.sub.html b/tests/wpt/web-platform-tests/reporting/reporting-api-honors-limits.https.sub.html new file mode 100644 index 00000000000..4732711888c --- /dev/null +++ b/tests/wpt/web-platform-tests/reporting/reporting-api-honors-limits.https.sub.html @@ -0,0 +1,70 @@ + + + + Test that the report-api honors buffer limits on a per-report type basis + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/reporting/reporting-api-honors-limits.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/reporting/reporting-api-honors-limits.https.sub.html.sub.headers new file mode 100644 index 00000000000..376788443e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/reporting/reporting-api-honors-limits.https.sub.html.sub.headers @@ -0,0 +1,7 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: reporting-api-honors-limits={{$id:uuid()}}; Path=/reporting +Reporting-Endpoints: csp-group="https://{{host}}:{{ports[https][0]}}/reporting/resources/report.py?op=put&reportID={{$id}}" +Content-Security-Policy: script-src 'self' 'unsafe-inline'; img-src 'none'; report-to csp-group diff --git a/tests/wpt/web-platform-tests/reporting/resources/generate-report-once.py b/tests/wpt/web-platform-tests/reporting/resources/generate-report-once.py index 076d5008751..163846a4b96 100644 --- a/tests/wpt/web-platform-tests/reporting/resources/generate-report-once.py +++ b/tests/wpt/web-platform-tests/reporting/resources/generate-report-once.py @@ -29,6 +29,6 @@ def main(request, response): Generate deprecation report """ diff --git a/tests/wpt/web-platform-tests/reporting/resources/generate-report.https.sub.html b/tests/wpt/web-platform-tests/reporting/resources/generate-report.https.sub.html index ee40c46e387..f1f4e963006 100644 --- a/tests/wpt/web-platform-tests/reporting/resources/generate-report.https.sub.html +++ b/tests/wpt/web-platform-tests/reporting/resources/generate-report.https.sub.html @@ -2,5 +2,5 @@ Generate deprecation report diff --git a/tests/wpt/web-platform-tests/reporting/same-origin-report-credentials.https.sub.html b/tests/wpt/web-platform-tests/reporting/same-origin-report-credentials.https.sub.html index fb753783e63..cd93bd601b9 100644 --- a/tests/wpt/web-platform-tests/reporting/same-origin-report-credentials.https.sub.html +++ b/tests/wpt/web-platform-tests/reporting/same-origin-report-credentials.https.sub.html @@ -26,7 +26,6 @@ }); // Wait for report to be received. - await wait(3000); const reports = await pollReports(endpoint, id); checkReportExists(reports, 'csp-violation', location.href); diff --git a/tests/wpt/web-platform-tests/requestidlecallback/deadline-max-rAF-dynamic.html b/tests/wpt/web-platform-tests/requestidlecallback/deadline-max-rAF-dynamic.html new file mode 100644 index 00000000000..43eebd7641b --- /dev/null +++ b/tests/wpt/web-platform-tests/requestidlecallback/deadline-max-rAF-dynamic.html @@ -0,0 +1,31 @@ + +window.requestIdleCallback max idle period deadline (requestAnimationFrame). + + + + + + +

                                                                      Test of requestIdleCallback deadline behavior

                                                                      +

                                                                      The test can pass accidentally as idle deadlines have a maximum but they can always be shorter. +It runs multiple times to expose potential failures.

                                                                      +
                                                                      diff --git a/tests/wpt/web-platform-tests/requestidlecallback/deadline-max-rAF.html b/tests/wpt/web-platform-tests/requestidlecallback/deadline-max-rAF.html new file mode 100644 index 00000000000..314f250254f --- /dev/null +++ b/tests/wpt/web-platform-tests/requestidlecallback/deadline-max-rAF.html @@ -0,0 +1,21 @@ + +window.requestIdleCallback max idle period deadline (requestAnimationFrame). + + + + + + +

                                                                      Test of requestIdleCallback deadline behavior

                                                                      +

                                                                      The test can pass accidentally as idle deadlines have a maximum but they can always be shorter. +It runs multiple times to expose potential failures.

                                                                      +
                                                                      diff --git a/tests/wpt/web-platform-tests/requestidlecallback/deadline-max-timeout-dynamic.html b/tests/wpt/web-platform-tests/requestidlecallback/deadline-max-timeout-dynamic.html new file mode 100644 index 00000000000..169e6db5485 --- /dev/null +++ b/tests/wpt/web-platform-tests/requestidlecallback/deadline-max-timeout-dynamic.html @@ -0,0 +1,31 @@ + +window.requestIdleCallback max idle period deadline (dynamic timoeout). + + + + + + +

                                                                      Test of requestIdleCallback deadline behavior

                                                                      +

                                                                      The test can pass accidentally as idle deadlines have a maximum but they can always be shorter. +It runs multiple times to expose potential failures.

                                                                      +
                                                                      diff --git a/tests/wpt/web-platform-tests/requestidlecallback/deadline-max.html b/tests/wpt/web-platform-tests/requestidlecallback/deadline-max.html new file mode 100644 index 00000000000..e33341ac9dd --- /dev/null +++ b/tests/wpt/web-platform-tests/requestidlecallback/deadline-max.html @@ -0,0 +1,20 @@ + +window.requestIdleCallback max idle period deadline. + + + + + + +

                                                                      Test of requestIdleCallback deadline behavior

                                                                      +

                                                                      This test validates that deadlines returned for requestIdleCallback are less than 50ms.

                                                                      +

                                                                      The test can pass accidentally as idle deadlines have a maximum but they can always be shorter. +It runs multiple times to expose potential failures.

                                                                      +
                                                                      diff --git a/tests/wpt/web-platform-tests/requestidlecallback/resources/ric-utils.js b/tests/wpt/web-platform-tests/requestidlecallback/resources/ric-utils.js new file mode 100644 index 00000000000..d6d22767a98 --- /dev/null +++ b/tests/wpt/web-platform-tests/requestidlecallback/resources/ric-utils.js @@ -0,0 +1,14 @@ +function getDeadlineForNextIdleCallback() { + return new Promise( + resolve => + requestIdleCallback(deadline => resolve(deadline.timeRemaining())) + ); +} + +function getPendingRenderDeadlineCap() { + return 1000 / 60; +} + +function getRICRetryCount() { + return 10; +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resize-observer/calculate-depth-for-node.html b/tests/wpt/web-platform-tests/resize-observer/calculate-depth-for-node.html new file mode 100644 index 00000000000..339e52bb79c --- /dev/null +++ b/tests/wpt/web-platform-tests/resize-observer/calculate-depth-for-node.html @@ -0,0 +1,26 @@ + + + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/resize-observer/create-pattern-data-url.js b/tests/wpt/web-platform-tests/resize-observer/create-pattern-data-url.js new file mode 100644 index 00000000000..d3634dc424b --- /dev/null +++ b/tests/wpt/web-platform-tests/resize-observer/create-pattern-data-url.js @@ -0,0 +1,22 @@ +const patternSize = 4; + +export default function createPatternDataURL() { + const ctx = document.createElement('canvas').getContext('2d'); + ctx.canvas.width = patternSize; + ctx.canvas.height = patternSize; + + const b = [0, 0, 0, 255]; + const t = [0, 0, 0, 0]; + const r = [255, 0, 0, 255]; + const g = [0, 255, 0, 255]; + + const imageData = new ImageData(patternSize, patternSize); + imageData.data.set([ + b, t, t, r, + t, b, g, t, + t, r, b, t, + g, t, t, b, + ].flat()); + ctx.putImageData(imageData, 0, 0); + return {patternSize, dataURL: ctx.canvas.toDataURL()}; +} diff --git a/tests/wpt/web-platform-tests/resize-observer/devicepixel2-ref.html b/tests/wpt/web-platform-tests/resize-observer/devicepixel2-ref.html new file mode 100644 index 00000000000..7674eb0ab83 --- /dev/null +++ b/tests/wpt/web-platform-tests/resize-observer/devicepixel2-ref.html @@ -0,0 +1,21 @@ + + + + diff --git a/tests/wpt/web-platform-tests/resize-observer/devicepixel2.html b/tests/wpt/web-platform-tests/resize-observer/devicepixel2.html new file mode 100644 index 00000000000..97b6255457f --- /dev/null +++ b/tests/wpt/web-platform-tests/resize-observer/devicepixel2.html @@ -0,0 +1,131 @@ + + + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/resize-observer/fragments.html b/tests/wpt/web-platform-tests/resize-observer/fragments.html new file mode 100644 index 00000000000..bba94db88e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/resize-observer/fragments.html @@ -0,0 +1,115 @@ + + +ResizeObserver with multiple fragments + + + + + + + +
                                                                      + +
                                                                      +
                                                                      +
                                                                      + + + + diff --git a/tests/wpt/web-platform-tests/resize-observer/notify.html b/tests/wpt/web-platform-tests/resize-observer/notify.html index d5888515d5a..7f0e4485404 100644 --- a/tests/wpt/web-platform-tests/resize-observer/notify.html +++ b/tests/wpt/web-platform-tests/resize-observer/notify.html @@ -194,19 +194,29 @@ function test5() { function test6() { let helper = new ResizeTestHelper( - "test6: inline element does not notify", + "test6: inline element notifies once with 0x0.", [ { setup: observer => { observer.observe(inline); - observer.observe(t1); - t1.style.width = "66px"; + }, + notify: (entries, observer) => { + assert_equals(entries.length, 1, "observing inline element triggers notification"); + assert_equals(entries[0].target, inline, "observing inline element triggers notification"); + assert_equals(entries[0].contentRect.width, 0); + assert_equals(entries[0].contentRect.height, 0); + return true; // Delay next step + } + }, + { + setup: observer => { inline.style.width = "66px"; }, notify: (entries, observer) => { - assert_equals(entries.length, 1, "inline elements must not trigger notifications"); - assert_equals(entries[0].target, t1, "inline elements must not trigger notifications"); - return true; // Delay next step + assert_unreached("resizing inline element should not cause resize notifications"); + }, + timeout: () => { + // expected } }, { // "inline element that becomes block should notify", @@ -214,7 +224,8 @@ function test6() { inline.style.display = "block"; }, notify: (entries, observer) => { - assert_equals(entries[0].target, inline); + assert_equals(entries.length, 1, "inline element becoming a non-zero sized block triggers a notification"); + assert_equals(entries[0].target, inline, "inline element becoming a non-zero sized block triggers a notification"); } } ]); diff --git a/tests/wpt/web-platform-tests/resize-observer/observe.html b/tests/wpt/web-platform-tests/resize-observer/observe.html index a3bf784b62c..f6015bef788 100644 --- a/tests/wpt/web-platform-tests/resize-observer/observe.html +++ b/tests/wpt/web-platform-tests/resize-observer/observe.html @@ -719,16 +719,26 @@ function test16() { let helper = new ResizeTestHelper( // See: https://drafts.csswg.org/resize-observer/#intro. - "test16: observations do not fire for non-replaced inline elements", + "test16: observations fire once with 0x0 size for non-replaced inline elements", [ { setup: observer => { observer.observe(t); }, notify: entries => { - assert_unreached("No observation should fire for non box element") - }, - timeout: () => {} + assert_equals(entries.length, 1, "1 pending notification"); + assert_equals(entries[0].target, t, "target is t"); + assert_equals(entries[0].contentRect.width, 0, "target width"); + assert_equals(entries[0].contentRect.height, 0, "target height"); + assert_equals(entries[0].contentBoxSize[0].inlineSize, 0, + "target content-box inline size"); + assert_equals(entries[0].contentBoxSize[0].blockSize, 0, + "target content-box block size"); + assert_equals(entries[0].borderBoxSize[0].inlineSize, 0, + "target border-box inline size"); + assert_equals(entries[0].borderBoxSize[0].blockSize, 0, + "target border-box block size"); + } } ]); diff --git a/tests/wpt/web-platform-tests/resize-observer/ordering.html b/tests/wpt/web-platform-tests/resize-observer/ordering.html new file mode 100644 index 00000000000..1cd9950c534 --- /dev/null +++ b/tests/wpt/web-platform-tests/resize-observer/ordering.html @@ -0,0 +1,24 @@ + +ResizeObserver and IntersectionObserver ordering + + + diff --git a/tests/wpt/web-platform-tests/resize-observer/scrollbars-2.html b/tests/wpt/web-platform-tests/resize-observer/scrollbars-2.html new file mode 100644 index 00000000000..51b470c8a2d --- /dev/null +++ b/tests/wpt/web-platform-tests/resize-observer/scrollbars-2.html @@ -0,0 +1,36 @@ + +ResizeObserver content-box size and scrollbars + + + + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/resize-observer/scrollbars.html b/tests/wpt/web-platform-tests/resize-observer/scrollbars.html new file mode 100644 index 00000000000..129e74e5cd9 --- /dev/null +++ b/tests/wpt/web-platform-tests/resize-observer/scrollbars.html @@ -0,0 +1,56 @@ + +ResizeObserver content-box size and scrollbars + + + + +
                                                                      +
                                                                      +
                                                                      + diff --git a/tests/wpt/web-platform-tests/resize-observer/svg-with-css-box-001.html b/tests/wpt/web-platform-tests/resize-observer/svg-with-css-box-001.html new file mode 100644 index 00000000000..4ec0a7de72f --- /dev/null +++ b/tests/wpt/web-platform-tests/resize-observer/svg-with-css-box-001.html @@ -0,0 +1,91 @@ + +ResizeObserver for SVG elements with CSS box. + + + +
                                                                      + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resize-observer/svg-with-css-box-002.svg b/tests/wpt/web-platform-tests/resize-observer/svg-with-css-box-002.svg new file mode 100644 index 00000000000..3c009641db3 --- /dev/null +++ b/tests/wpt/web-platform-tests/resize-observer/svg-with-css-box-002.svg @@ -0,0 +1,94 @@ + + +ResizeObserver for SVG elements with CSS box. + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resize-observer/svg.html b/tests/wpt/web-platform-tests/resize-observer/svg.html index 08c1cf9a373..6511afc8b00 100644 --- a/tests/wpt/web-platform-tests/resize-observer/svg.html +++ b/tests/wpt/web-platform-tests/resize-observer/svg.html @@ -345,10 +345,10 @@ function test11() { observer.observe(view); }, notify: (entries, observer) => { - assert_unreached("no entries should be observed on Element"); - }, - timeout: () => { - // expected + assert_equals(entries.length, 1); + assert_equals(entries[0].target, view); + assert_equals(entries[0].contentRect.width, 0); + assert_equals(entries[0].contentRect.height, 0); } }, { @@ -356,10 +356,10 @@ function test11() { observer.observe(stop); }, notify: (entries, observer) => { - assert_unreached("no entries should be observed on Element"); - }, - timeout: () => { - // expected + assert_equals(entries.length, 1); + assert_equals(entries[0].target, stop); + assert_equals(entries[0].contentRect.width, 0); + assert_equals(entries[0].contentRect.height, 0); } }, ]); diff --git a/tests/wpt/web-platform-tests/resource-timing/content-type.html b/tests/wpt/web-platform-tests/resource-timing/content-type.html new file mode 100644 index 00000000000..f6b1db7d9f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/content-type.html @@ -0,0 +1,117 @@ + + + +This test validates the content-type of resources. + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/cross-origin-iframe.html b/tests/wpt/web-platform-tests/resource-timing/cross-origin-iframe.html new file mode 100644 index 00000000000..69daebffaf2 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/cross-origin-iframe.html @@ -0,0 +1,33 @@ + + +Test ResourceTiming reporting for cross-origin iframe. + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/delivery-type.tentative.any.js b/tests/wpt/web-platform-tests/resource-timing/delivery-type.tentative.any.js new file mode 100644 index 00000000000..e2b408fdd74 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/delivery-type.tentative.any.js @@ -0,0 +1,90 @@ +// META: global=window,worker +// META: script=/common/get-host-info.sub.js +// META: script=/resource-timing/resources/resource-loaders.js + +// TODO(crbug/1358591): Rename this file from "tentative" once +// `w3c/resource-timing#343` is merged. + +const {REMOTE_ORIGIN, ORIGIN} = get_host_info(); + +const redirectBase = new URL( + '/resource-timing/resources/redirect-cors.py', REMOTE_ORIGIN).href; +const cacheAndValidatedBase = new URL( + '/resource-timing/resources/cacheable-and-validated.py?content=content', + ORIGIN).href; + +const mustRevalidate = {headers: {'Cache-Control': 'max-age=0'}}; + +const fetchAndEatBody = (url, fetchOption) => { + return fetch(url, fetchOption).then(response => response.arrayBuffer()); +}; + +const accumulateEntries = () => { + return new Promise(resolve => { + const po = new PerformanceObserver(list => { + resolve(list); + }); + po.observe({type: "resource", buffered: true}); + }); +}; + +const checkDeliveryTypeBase = + (list, lookupURL, deliveryTypeForCachedResources) => { + const entries = list.getEntriesByName(lookupURL); + assert_equals(entries.length, 3, 'Wrong number of entries'); + + // 200 response (`cacheMode` is an empty string) + assert_equals(entries[0].deliveryType, "", + "Expect empty deliveryType for 200 response."); + // Cached response (`cacheMode` is "local") or 304 response (`cacheMode` is + // "validated"). + assert_equals(entries[1].deliveryType, deliveryTypeForCachedResources, + `Expect "${deliveryTypeForCachedResources}" deliveryType for a + cached response.`); + assert_equals(entries[2].deliveryType, deliveryTypeForCachedResources, + `Expect "${deliveryTypeForCachedResources}" deliveryType for a + revalidated response.`); +}; + +promise_test(() => { + // Use a different URL every time so that the cache behaviour does not depend + // on execution order. + const initialURL = load.cache_bust(cacheAndValidatedBase); + const checkDeliveryType = + list => checkDeliveryTypeBase(list, initialURL, "cache"); + return fetchAndEatBody(initialURL, {}) // 200. + .then(() => fetchAndEatBody(initialURL, {})) // Cached. + .then(() => fetchAndEatBody(initialURL, mustRevalidate)) // 304. + .then(accumulateEntries) + .then(checkDeliveryType); +}, 'PerformanceResourceTiming deliveryType test, same origin.'); + +promise_test(() => { + const cacheAndValidatedURL = load.cache_bust( + cacheAndValidatedBase + '&timing_allow_origin=*'); + const redirectURL = redirectBase + + "?timing_allow_origin=*" + + `&allow_origin=${encodeURIComponent(ORIGIN)}` + + `&location=${encodeURIComponent(cacheAndValidatedURL)}`; + const checkDeliveryType = + list => checkDeliveryTypeBase(list, redirectURL, "cache"); + return fetchAndEatBody(redirectURL, {}) // 200. + .then(() => fetchAndEatBody(redirectURL, {})) // Cached. + .then(() => fetchAndEatBody(redirectURL, mustRevalidate)) // 304. + .then(accumulateEntries) + .then(checkDeliveryType); +}, 'PerformanceResourceTiming deliveryType test, cross origin, TAO passes.'); + +promise_test(() => { + const cacheAndValidatedURL = load.cache_bust(cacheAndValidatedBase); + const redirectURL = redirectBase + + `?allow_origin=${encodeURIComponent(ORIGIN)}` + + `&location=${encodeURIComponent(cacheAndValidatedURL)}`; + const checkDeliveryType = + list => checkDeliveryTypeBase(list, redirectURL, ""); + return fetchAndEatBody(redirectURL, {}) // 200. + .then(() => fetchAndEatBody(redirectURL, {})) // Cached. + .then(() => fetchAndEatBody(redirectURL, mustRevalidate)) // 304. + .then(accumulateEntries) + .then(checkDeliveryType); +}, 'PerformanceResourceTiming deliveryType test, cross origin, TAO fails.'); diff --git a/tests/wpt/web-platform-tests/resource-timing/entries-for-network-errors.sub.https.html b/tests/wpt/web-platform-tests/resource-timing/entries-for-network-errors.sub.https.html index a3c4791f68d..95849d28262 100644 --- a/tests/wpt/web-platform-tests/resource-timing/entries-for-network-errors.sub.https.html +++ b/tests/wpt/web-platform-tests/resource-timing/entries-for-network-errors.sub.https.html @@ -24,7 +24,7 @@ network_error_entry_test(`/common/redirect.py?location=${validDataURL}`, null, " network_error_entry_test('//{{hosts[][nonexistent]}}/common/dummy.xml', null, "DNS failure"); network_error_entry_test(`http://${ORIGINAL_HOST}:${HTTP_PORT}/commo/dummy.xml`, null, "Mixed content"); -network_error_entry_test('/common/dummy.xml', {cache: 'only-if-cached'}, +network_error_entry_test('/common/dummy.xml', {cache: 'only-if-cached', mode: 'same-origin'}, "only-if-cached resource that was not cached"); network_error_entry_test( diff --git a/tests/wpt/web-platform-tests/resource-timing/event-source-timing.html b/tests/wpt/web-platform-tests/resource-timing/event-source-timing.html new file mode 100644 index 00000000000..917e7c34952 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/event-source-timing.html @@ -0,0 +1,32 @@ + + + + + +Resource Timing: EventSource timing behavior + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/frameset-timing.html b/tests/wpt/web-platform-tests/resource-timing/frameset-timing.html new file mode 100644 index 00000000000..1a6facbfc4d --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/frameset-timing.html @@ -0,0 +1,6 @@ + + +Test the sequence of events when reporting timing for frames. + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/iframe-failed-commit.html b/tests/wpt/web-platform-tests/resource-timing/iframe-failed-commit.html index 4c5bf6c8ddb..1da207d2fbe 100644 --- a/tests/wpt/web-platform-tests/resource-timing/iframe-failed-commit.html +++ b/tests/wpt/web-platform-tests/resource-timing/iframe-failed-commit.html @@ -87,6 +87,22 @@ masked_entry_with_csp_test( new URL("/resource-timing/resources/200_empty.asis", REMOTE_ORIGIN), "Cross-origin empty iframe with a 200 status gets reported"); +unmasked_entry_with_csp_test( + new URL("/resource-timing/resources/204_empty.asis"), + "Same-origin empty iframe with a 204 status gets reported"); + +unmasked_entry_with_csp_test( + new URL("/resource-timing/resources/205_empty.asis"), + "Same-origin empty iframe with a 205 status gets reported"); + +masked_entry_with_csp_test( + new URL("/resource-timing/resources/204_empty.asis", REMOTE_ORIGIN), + "Cross-origin empty iframe with a 204 status gets reported"); + +masked_entry_with_csp_test( + new URL("/resource-timing/resources/205_empty.asis", REMOTE_ORIGIN), + "Cross-origin empty iframe with a 205 status gets reported"); + diff --git a/tests/wpt/web-platform-tests/resource-timing/iframe-non-html.html b/tests/wpt/web-platform-tests/resource-timing/iframe-non-html.html new file mode 100644 index 00000000000..a5df3b03489 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/iframe-non-html.html @@ -0,0 +1,23 @@ + + +Test the sequence of events when reporting iframe timing. + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/iframe-redirect-without-location.html b/tests/wpt/web-platform-tests/resource-timing/iframe-redirect-without-location.html new file mode 100644 index 00000000000..bae5f3112fe --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/iframe-redirect-without-location.html @@ -0,0 +1,17 @@ + + +Test the sequence of events when reporting iframe timing. + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/iframe-sequence-of-events.html b/tests/wpt/web-platform-tests/resource-timing/iframe-sequence-of-events.html new file mode 100644 index 00000000000..5f99a5cab2d --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/iframe-sequence-of-events.html @@ -0,0 +1,12 @@ + + +Test the sequence of events when reporting iframe timing. + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/iframe-with-download.html b/tests/wpt/web-platform-tests/resource-timing/iframe-with-download.html new file mode 100644 index 00000000000..9583024dd8f --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/iframe-with-download.html @@ -0,0 +1,24 @@ + + +Test the sequence of events when reporting iframe timing. + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/image-sequence-of-events.html b/tests/wpt/web-platform-tests/resource-timing/image-sequence-of-events.html new file mode 100644 index 00000000000..630fed78c96 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/image-sequence-of-events.html @@ -0,0 +1,29 @@ + + +Test the sequence of events when reporting image timing. + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/initiator-type/input.html b/tests/wpt/web-platform-tests/resource-timing/initiator-type/input.html new file mode 100644 index 00000000000..a46d416671c --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/initiator-type/input.html @@ -0,0 +1,19 @@ + + + + +Resource Timing initiator type: input + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/initiator-type/link.html b/tests/wpt/web-platform-tests/resource-timing/initiator-type/link.html index 6213ed8b45d..43367ac3d50 100644 --- a/tests/wpt/web-platform-tests/resource-timing/initiator-type/link.html +++ b/tests/wpt/web-platform-tests/resource-timing/initiator-type/link.html @@ -1,36 +1,35 @@ + - -Resource Timing initiator type: link - - - - - - + + Resource Timing initiator type: link + + + + + + + + + + + + - - - - - - -
                                                                        This content forces a font to get fetched
                                                                      + // Verify there are enries for each of nested.css' nested resources. + initiator_type_test("resource_timing_test0.css?id=n1", "css", "css resources embedded in css"); + initiator_type_test("fonts/Ahem.ttf?id=n1", "css", "font resources embedded in css"); + initiator_type_test("blue.png?id=n1", "css", "image resources embedded in css"); + initiator_type_test("resource_timing_test0.css?id=prefetch", "link", ""); + initiator_type_test("resource_timing_test0.css?id=preload", "link", ""); + initiator_type_test("manifest.json", "link", ""); + initiator_type_test("resources/empty.js?id=modulePreload", "other", "module preload"); + +
                                                                        This content forces a font to get fetched
                                                                      diff --git a/tests/wpt/web-platform-tests/resource-timing/initiator-type/workers.html b/tests/wpt/web-platform-tests/resource-timing/initiator-type/workers.html new file mode 100644 index 00000000000..3a23ad71a31 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/initiator-type/workers.html @@ -0,0 +1,23 @@ + + + + +Resource Timing initiatorType: worker resources + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/input-sequence-of-events.html b/tests/wpt/web-platform-tests/resource-timing/input-sequence-of-events.html new file mode 100644 index 00000000000..446e24a0bca --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/input-sequence-of-events.html @@ -0,0 +1,21 @@ + + +Test the sequence of events when reporting input timing. + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/link-sequence-of-events.html b/tests/wpt/web-platform-tests/resource-timing/link-sequence-of-events.html new file mode 100644 index 00000000000..be9db32cd92 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/link-sequence-of-events.html @@ -0,0 +1,30 @@ + + +Test the sequence of events when reporting link timing. + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/load-from-mem-cache-transfer-size.html b/tests/wpt/web-platform-tests/resource-timing/load-from-mem-cache-transfer-size.html new file mode 100644 index 00000000000..3d2d32d6e63 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/load-from-mem-cache-transfer-size.html @@ -0,0 +1,65 @@ + + + + + + This tests transfer size of resource timing when loaded from memory cache. + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-embed.html b/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-embed.html index 5c8a62a9ae2..f804adbb8a9 100644 --- a/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-embed.html +++ b/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-embed.html @@ -15,13 +15,22 @@ open_test_window("resources/embed-navigate-back.html?crossorigin", "Test that crossorigin embed navigations are not observable by the " + "parent, even after history navigations by the parent"); + open_test_window("resources/embed-navigate-back.html?cross-site", + "Test that cross-site embed navigations are not observable by the " + + "parent, even after history navigations by the parent"); + open_test_window("resources/embed-navigate.html", "Test that embed navigations are not observable by the parent"); open_test_window("resources/embed-navigate.html?crossorigin", "Test that crossorigin embed navigations are not observable by the parent"); + open_test_window("resources/embed-navigate.html?cross-site", + "Test that cross-site embed navigations are not observable by the parent"); open_test_window("resources/embed-refresh.html", "Test that embed refreshes are not observable by the parent"); open_test_window("resources/embed-refresh.html?crossorigin", "Test that crossorigin embed refreshes are not observable by the parent"); + open_test_window("resources/embed-refresh.html?cross-site", + "Test that cross-site embed refreshes are not observable by the parent"); + diff --git a/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-iframe.html b/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-iframe.html index 6e5cdd85c30..32ab21633c6 100644 --- a/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-iframe.html +++ b/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-iframe.html @@ -10,19 +10,23 @@ diff --git a/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-object.html b/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-object.html index 8d63c5e3d44..1508d8829fd 100644 --- a/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-object.html +++ b/tests/wpt/web-platform-tests/resource-timing/nested-context-navigations-object.html @@ -15,14 +15,23 @@ open_test_window("resources/object-navigate-back.html?crossorigin", "Test that crossorigin object navigations are not observable by the " + "parent, even after history navigations by the parent"); + open_test_window("resources/object-navigate-back.html?cross-site", + "Test that cross-site object navigations are not observable by the " + + "parent, even after history navigations by the parent"); open_test_window("resources/object-navigate.html", "Test that object navigations are not observable by the parent"); open_test_window("resources/object-navigate.html?crossorigin", "Test that crossorigin object navigations are not observable by the " + "parent"); + open_test_window("resources/object-navigate.html?cross-site", + "Test that cross-site object navigations are not observable by the " + + "parent"); open_test_window("resources/object-refresh.html", "Test that object refreshes are not observable by the parent"); open_test_window("resources/object-refresh.html?crossorigin", "Test that crossorigin object refreshes are not observable by the parent"); + open_test_window("resources/object-refresh.html?cross-site", + "Test that cross-site object refreshes are not observable by the parent"); + diff --git a/tests/wpt/web-platform-tests/resource-timing/no-entries-for-cross-origin-css-fetched-memory-cache.sub.html b/tests/wpt/web-platform-tests/resource-timing/no-entries-for-cross-origin-css-fetched-memory-cache.sub.html new file mode 100644 index 00000000000..2cfcfc7d680 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/no-entries-for-cross-origin-css-fetched-memory-cache.sub.html @@ -0,0 +1,38 @@ + + +Make sure that resources fetched by cross origin CSS are not in the timeline. + + + + + + + +
                                                                        Some content
                                                                      + diff --git a/tests/wpt/web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect.html b/tests/wpt/web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect.html index a455ec406b3..c1a82d49708 100644 --- a/tests/wpt/web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect.html +++ b/tests/wpt/web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect.html @@ -2,45 +2,35 @@ -This test validates resource timing information for a cross-origin redirect chain. - +This test validates the values in resource timing for cross-origin +redirects. + + + - - - - - - + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/ping-rt-entries.html b/tests/wpt/web-platform-tests/resource-timing/ping-rt-entries.html new file mode 100644 index 00000000000..34dad10b9f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/ping-rt-entries.html @@ -0,0 +1,29 @@ + + + + +Resource Timing Entry For hyperlink audit (ping) + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/render-blocking-status-link.html b/tests/wpt/web-platform-tests/resource-timing/render-blocking-status-link.html new file mode 100644 index 00000000000..8c6544db486 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/render-blocking-status-link.html @@ -0,0 +1,222 @@ + + + +This test validates the render blocking status of resources. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/render-blocking-status-script.html b/tests/wpt/web-platform-tests/resource-timing/render-blocking-status-script.html new file mode 100644 index 00000000000..bcd55b89944 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/render-blocking-status-script.html @@ -0,0 +1,196 @@ + + + +This test validates the render blocking status of resources. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/200.https.asis b/tests/wpt/web-platform-tests/resource-timing/resources/200.https.asis new file mode 100644 index 00000000000..5b7c25f4ca0 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/200.https.asis @@ -0,0 +1,5 @@ +HTTP/1.0 200 OK +Content-Length: 0 +Timing-Allow-Origin: * + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/204_empty.asis b/tests/wpt/web-platform-tests/resource-timing/resources/204_empty.asis new file mode 100644 index 00000000000..3d9151326b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/204_empty.asis @@ -0,0 +1,3 @@ +HTTP/1.0 204 OK +Content-Length: 0 + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/205_empty.asis b/tests/wpt/web-platform-tests/resource-timing/resources/205_empty.asis new file mode 100644 index 00000000000..2c06998c1eb --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/205_empty.asis @@ -0,0 +1,3 @@ +HTTP/1.0 205 OK +Content-Length: 0 + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/cacheable-and-validated.py b/tests/wpt/web-platform-tests/resource-timing/resources/cacheable-and-validated.py index 31f0e3ab417..97de8662777 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resources/cacheable-and-validated.py +++ b/tests/wpt/web-platform-tests/resource-timing/resources/cacheable-and-validated.py @@ -1,11 +1,30 @@ def main(request, response): - revalidation = 'Cache-Control' in request.headers + # Headers need to be set before `response.writer` writes out the response. + tao = request.GET.get(b'timing_allow_origin') + if tao: + response.headers.set(b"Timing-Allow-Origin", tao) + + if b'origin' in request.headers: + origin = request.headers[b'origin'] + response.headers.set(b'Access-Control-Allow-Origin', origin) + content = request.GET.first(b'content') response.headers.set(b'Cache-Control', b'max-age=60') response.headers.set(b'ETag', b'assdfsdfe') - if revalidation: - response.status = (304, b'NotModified') + + # Handle CORS-preflights of non-simple requests. + if request.method == 'OPTIONS': + response.status = 204 + requested_method = request.headers.get(b"Access-Control-Request-Method") + if requested_method: + response.headers.set(b"Access-Control-Allow-Methods", requested_method) + requested_headers = request.headers.get(b"Access-Control-Request-Headers") + if requested_headers: + response.headers.set(b"Access-Control-Allow-Headers", requested_headers) else: - response.status = (200, b'OK'); - response.write_status_headers() - response.writer.write(content); + if 'Cache-Control' in request.headers: + response.status = (304, b'NotModified') + else: + response.status = (200, b'OK') + response.write_status_headers() + response.writer.write(content) diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/close.html b/tests/wpt/web-platform-tests/resource-timing/resources/close.html new file mode 100644 index 00000000000..02c275f37b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/close.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/content-type.py b/tests/wpt/web-platform-tests/resource-timing/resources/content-type.py new file mode 100644 index 00000000000..23a4f0dbc6f --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/content-type.py @@ -0,0 +1,5 @@ +def main(request, response): + if b'content_type' in request.GET: + response.headers.set(b'content-type', request.GET.first(b'content_type')) + if b'allow_origin' in request.GET: + response.headers.set(b'access-control-allow-origin', request.GET.first(b'allow_origin')) \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/delay-css.py b/tests/wpt/web-platform-tests/resource-timing/resources/delay-css.py new file mode 100644 index 00000000000..9a905960eea --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/delay-css.py @@ -0,0 +1,6 @@ +import time + +def main(request, response): + time.sleep(float(request.GET.first(b"delay", 1000)) / 1000) + response.headers.set('Content-Type', 'text/css') + return "/* */" diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/download.asis b/tests/wpt/web-platform-tests/resource-timing/resources/download.asis new file mode 100644 index 00000000000..167386d7a52 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/download.asis @@ -0,0 +1,6 @@ +HTTP/1.0 200 OK +Content-Type: application/octet-stream + +12312313 + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/empty_style.css b/tests/wpt/web-platform-tests/resource-timing/resources/empty_style.css new file mode 100644 index 00000000000..eb90b432e84 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/empty_style.css @@ -0,0 +1 @@ +/*Nothing here*/ diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/entry-invariants.js b/tests/wpt/web-platform-tests/resource-timing/resources/entry-invariants.js index 0bb18c59833..4bef9496103 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resources/entry-invariants.js +++ b/tests/wpt/web-platform-tests/resource-timing/resources/entry-invariants.js @@ -423,6 +423,9 @@ const invariants = { assert_positive_(entry, [ "startTime", + ]); + + assert_not_negative_(entry, [ "duration", ]); @@ -501,4 +504,4 @@ const network_error_entry_test = (originalURL, args, label) => { assert_greater_than_equal(timeAfter, entry.responseEnd, 'endTime should be less than the time right after returning from the fetch'); invariants.assert_tao_failure_resource(entry); }, `A ResourceTiming entry should be created for network error of type ${label}`); -} \ No newline at end of file +} diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/fake_responses.py b/tests/wpt/web-platform-tests/resource-timing/resources/fake_responses.py index e33adbfe44e..66b17be154b 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resources/fake_responses.py +++ b/tests/wpt/web-platform-tests/resource-timing/resources/fake_responses.py @@ -12,6 +12,7 @@ def main(request, response): match = request.headers.get(b"If-None-Match", None) date = request.GET.first(b"date", b"") modified = request.headers.get(b"If-Modified-Since", None) + url = request.GET.first(b"url", None) response.headers.set(b"Access-Control-Allow-Origin", b"*"); response.headers.set(b"Timing-Allow-Origin", b"*"); if tag: @@ -23,6 +24,14 @@ def main(request, response): response.status = (302, b"Moved") return b"" + if url: + filename = url.decode('utf-8').split("?")[0] + filepath = "./resource-timing/resources/{}".format(filename) + response.headers.set(b"Content-Type", b"text/javascript") + with open(filepath, 'rb') as f: + filedata = f.read() + return filedata + if ((match is not None and match == tag) or (modified is not None and modified == date)): response.status = (304, b"SUPERCOOL") diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/frame-timing.js b/tests/wpt/web-platform-tests/resource-timing/resources/frame-timing.js new file mode 100644 index 00000000000..e0c364e9b2c --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/frame-timing.js @@ -0,0 +1,48 @@ +function test_frame_timing_before_load_event(type) { + promise_test(async t => { + const {document, performance} = type === 'frame' ? window.parent : window; + const delay = 500; + const frame = document.createElement(type); + t.add_cleanup(() => frame.remove()); + await new Promise(resolve => { + frame.addEventListener('load', resolve); + frame.src = `resources/iframe-with-delay.sub.html?delay=${delay}`; + (type === 'frame' ? document.querySelector('frameset') : document.body).appendChild(frame); + }); + + const entries = performance.getEntriesByName(frame.src); + const navigationEntry = frame.contentWindow.performance.getEntriesByType('navigation')[0]; + assert_equals(entries.length, 1); + assert_equals(entries[0].initiatorType, type); + assert_greater_than(performance.now(), entries[0].responseEnd + delay); + const domContentLoadedEventAbsoluteTime = navigationEntry.domContentLoadedEventStart + frame.contentWindow.performance.timeOrigin; + const frameResponseEndAbsoluteTime = entries[0].responseEnd + performance.timeOrigin; + assert_greater_than(domContentLoadedEventAbsoluteTime, frameResponseEndAbsoluteTime); + }, `A ${type} should report its RT entry when the response is done and before it is completely loaded`); +} + + +function test_frame_timing_change_src(type) { + promise_test(async t => { + const {document, performance} = type === 'frame' ? window.parent : window; + const frame = document.createElement(type); + t.add_cleanup(() => frame.remove()); + await new Promise(resolve => { + const done = () => { + resolve(); + frame.removeEventListener('load', done); + } + frame.addEventListener('load', done); + frame.src = 'resources/green.html?1'; + (type === 'frame' ? document.querySelector('frameset') : document.body).appendChild(frame); + }); + + await new Promise(resolve => { + frame.addEventListener('load', resolve); + frame.src = 'resources/green.html?2'; + }); + + const entries = performance.getEntries().filter(e => e.name.includes('green.html')); + assert_equals(entries.length, 2); + }, `A ${type} should report separate RT entries if its src changed from the outside`); +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/frameset-timing-frame.html b/tests/wpt/web-platform-tests/resource-timing/resources/frameset-timing-frame.html new file mode 100644 index 00000000000..e260f575268 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/frameset-timing-frame.html @@ -0,0 +1,8 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/iframe-load-from-mem-cache-transfer-size.html b/tests/wpt/web-platform-tests/resource-timing/resources/iframe-load-from-mem-cache-transfer-size.html new file mode 100644 index 00000000000..6f37a33e8c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/iframe-load-from-mem-cache-transfer-size.html @@ -0,0 +1,24 @@ + + + + + + transfer size of resource timing when loaded from memory cache. + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/iframe-with-delay.sub.html b/tests/wpt/web-platform-tests/resource-timing/resources/iframe-with-delay.sub.html new file mode 100644 index 00000000000..fe50aa7e471 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/iframe-with-delay.sub.html @@ -0,0 +1,3 @@ + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/import.sub.css b/tests/wpt/web-platform-tests/resource-timing/resources/import.sub.css new file mode 100644 index 00000000000..618c568d2a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/import.sub.css @@ -0,0 +1 @@ +@import "delay-css.py?delay={{GET[delay]}}" \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/importer.css b/tests/wpt/web-platform-tests/resource-timing/resources/importer.css new file mode 100644 index 00000000000..771204cdd15 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/importer.css @@ -0,0 +1 @@ +@import 'empty_style.css?stylesheet-imported' \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/importer.js b/tests/wpt/web-platform-tests/resource-timing/resources/importer.js new file mode 100644 index 00000000000..e73d45da29f --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/importer.js @@ -0,0 +1,2 @@ +import './fake_responses.py?url=empty_script.js?script-head-import-defer'; +import('./fake_responses.py?url=empty_script.js?script-head-import-defer-dynamic').then(module => {}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/importer_async.js b/tests/wpt/web-platform-tests/resource-timing/resources/importer_async.js new file mode 100644 index 00000000000..4b1cd4ddaef --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/importer_async.js @@ -0,0 +1,2 @@ +import './fake_responses.py?url=empty_script.js?script-head-import-async'; +import('./fake_responses.py?url=empty_script.js?script-head-import-async-dynamic').then(module => {}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/importer_dynamic.css b/tests/wpt/web-platform-tests/resource-timing/resources/importer_dynamic.css new file mode 100644 index 00000000000..f0ba069f0c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/importer_dynamic.css @@ -0,0 +1 @@ +@import 'empty_style.css?stylesheet-imported-dynamic' \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/importer_print.css b/tests/wpt/web-platform-tests/resource-timing/resources/importer_print.css new file mode 100644 index 00000000000..aac191635ed --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/importer_print.css @@ -0,0 +1 @@ +@import 'empty_style.css?stylesheet-imported-print' \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/invalid.jpg b/tests/wpt/web-platform-tests/resource-timing/resources/invalid.jpg new file mode 100644 index 00000000000..81c545efebe --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/invalid.jpg @@ -0,0 +1 @@ +1234 diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/nested-contexts.js b/tests/wpt/web-platform-tests/resource-timing/resources/nested-contexts.js index 31bc97bb119..c0822943e86 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resources/nested-contexts.js +++ b/tests/wpt/web-platform-tests/resource-timing/resources/nested-contexts.js @@ -1,7 +1,10 @@ let destination = location; -if (location.search == "?crossorigin") { - const {REMOTE_HOST} = get_host_info(); - destination = `${location.protocol}//${REMOTE_HOST}:${location.port}`; + +if (location.search == "?cross-site") { + const https = destination.protocol.startsWith("https"); + destination = get_host_info()[https ? 'HTTPS_NOTSAMESITE_ORIGIN' : 'HTTP_NOTSAMESITE_ORIGIN']; +} else if (location.search == "?crossorigin") { + destination = get_host_info().REMOTE_ORIGIN; } const pre_navigate_url = diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/no-entries-for-cross-origin-css-fetched-memory-cache-iframe.sub.html b/tests/wpt/web-platform-tests/resource-timing/resources/no-entries-for-cross-origin-css-fetched-memory-cache-iframe.sub.html new file mode 100644 index 00000000000..f47913468b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/no-entries-for-cross-origin-css-fetched-memory-cache-iframe.sub.html @@ -0,0 +1,8 @@ + + + + + + +
                                                                        Some content
                                                                      + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/redirect-cors.py b/tests/wpt/web-platform-tests/resource-timing/resources/redirect-cors.py index ea67cb8e7ac..655b862fcd6 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resources/redirect-cors.py +++ b/tests/wpt/web-platform-tests/resource-timing/resources/redirect-cors.py @@ -1,10 +1,22 @@ def main(request, response): - location = request.GET.first(b"location") - response.status = 302 - response.headers.set(b"Location", location) - if b"allow_origin" in request.GET: - response.headers.set(b"Access-Control-Allow-Origin", request.GET.first(b"allow_origin")) + response.headers.set(b"Access-Control-Allow-Origin", + request.GET.first(b"allow_origin")) if b"timing_allow_origin" in request.GET: - response.headers.set(b"Timing-Allow-Origin", request.GET.first(b"timing_allow_origin")) + response.headers.set(b"Timing-Allow-Origin", + request.GET.first(b"timing_allow_origin")) + + # Handle CORS-preflights of non-simple requests. + if request.method == 'OPTIONS': + response.status = 204 + requested_method = request.headers.get(b"Access-Control-Request-Method") + if requested_method: + response.headers.set(b"Access-Control-Allow-Methods", requested_method) + requested_headers = request.headers.get(b"Access-Control-Request-Headers") + if requested_headers: + response.headers.set(b"Access-Control-Allow-Headers", requested_headers) + else: + location = request.GET.first(b"location") + response.status = 302 + response.headers.set(b"Location", location) diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/redirect-without-location.py b/tests/wpt/web-platform-tests/resource-timing/resources/redirect-without-location.py new file mode 100644 index 00000000000..eef1df858b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/redirect-without-location.py @@ -0,0 +1,2 @@ +def main(request, response): + response.status = 302 diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/resource-loaders.js b/tests/wpt/web-platform-tests/resource-timing/resources/resource-loaders.js index 99a2c28d2b3..8bc1a77134c 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resources/resource-loaders.js +++ b/tests/wpt/web-platform-tests/resource-timing/resources/resource-loaders.js @@ -1,21 +1,35 @@ const load = { - _cache_bust_value: Math.random().toString().substr(2), cache_bust: path => { let url = new URL(path, location.origin); url.href += (url.href.includes("?")) ? '&' : '?'; - url.href += "unique=" + load._cache_bust_value++ + // The `Number` type in Javascript, when interpreted as an integer, can only + // safely represent [-2^53 + 1, 2^53 - 1] without the loss of precision [1]. + // We do not generate a global value and increment from it, as the increment + // might not have enough precision to be reflected. + // + // [1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number + url.href += "unique=" + Math.random().toString().substring(2); return url.href; }, + image_with_attrs: async (path, attribute_map) => { + return new Promise(resolve => { + const img = new Image(); + if (attribute_map instanceof Object) { + for (const [key, value] of Object.entries(attribute_map)) { + img[key] = value; + } + } + img.onload = img.onerror = resolve; + img.src = load.cache_bust(path); + }); + }, + // Returns a promise that settles once the given path has been fetched as an // image resource. image: path => { - return new Promise(resolve => { - const img = new Image(); - img.onload = img.onerror = resolve; - img.src = load.cache_bust(path); - }); + return load.image_with_attrs(path, undefined); }, // Returns a promise that settles once the given path has been fetched as a @@ -37,10 +51,13 @@ const load = { }); }, - // Returns a promise that settles once the given path has been fetched as a - // stylesheet resource. - stylesheet: async path => { + stylesheet_with_attrs: async (path, attribute_map) => { const link = document.createElement("link"); + if (attribute_map instanceof Object) { + for (const [key, value] of Object.entries(attribute_map)) { + link[key] = value; + } + } link.rel = "stylesheet"; link.type = "text/css"; link.href = load.cache_bust(path); @@ -54,6 +71,12 @@ const load = { document.head.removeChild(link); }, + // Returns a promise that settles once the given path has been fetched as a + // stylesheet resource. + stylesheet: async path => { + return load.stylesheet_with_attrs(path, undefined); + }, + iframe_with_attrs: async (path, attribute_map, validator) => { const frame = document.createElement("iframe"); if (attribute_map instanceof Object) { @@ -79,10 +102,13 @@ const load = { return load.iframe_with_attrs(path, undefined, validator); }, - // Returns a promise that settles once the given path has been fetched as a - // script. - script: async path => { + script_with_attrs: async (path, attribute_map) => { const script = document.createElement("script"); + if (attribute_map instanceof Object) { + for (const [key, value] of Object.entries(attribute_map)) { + script[key] = value; + } + } const loaded = new Promise(resolve => { script.onload = script.onerror = resolve; }); @@ -92,6 +118,12 @@ const load = { document.body.removeChild(script); }, + // Returns a promise that settles once the given path has been fetched as a + // script. + script: async path => { + return load.script_with_attrs(path, undefined); + }, + // Returns a promise that settles once the given path has been fetched as an // object. object: async (path, type) => { diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/resource_timing_test0.js.headers b/tests/wpt/web-platform-tests/resource-timing/resources/resource_timing_test0.js.headers new file mode 100644 index 00000000000..308bee94d0e --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/resource_timing_test0.js.headers @@ -0,0 +1,2 @@ +Content-Type: text/javascript +Cache-Control: max-age=36000 diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/shared-worker.js b/tests/wpt/web-platform-tests/resource-timing/resources/shared-worker.js new file mode 100644 index 00000000000..f3ef3feb964 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/shared-worker.js @@ -0,0 +1,3 @@ +self.onconnect = e => { + e.ports[0].postMessage(performance.timeOrigin); +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/status-code.py b/tests/wpt/web-platform-tests/resource-timing/resources/status-code.py index 72222b39e48..1c6a0216333 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resources/status-code.py +++ b/tests/wpt/web-platform-tests/resource-timing/resources/status-code.py @@ -3,4 +3,6 @@ def main(request, response): response.status = (status, b""); if b'tao_value' in request.GET: response.headers.set(b'timing-allow-origin', request.GET.first(b'tao_value')) + if b'allow_origin' in request.GET: + response.headers.set(b'access-control-allow-origin', request.GET.first(b'allow_origin')) diff --git a/tests/wpt/web-platform-tests/resource-timing/response-status-code.html b/tests/wpt/web-platform-tests/resource-timing/response-status-code.html new file mode 100644 index 00000000000..2da1a2c0c0d --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/response-status-code.html @@ -0,0 +1,135 @@ + + + +This test validates the response status of resources. + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/script-rt-entries.html b/tests/wpt/web-platform-tests/resource-timing/script-rt-entries.html new file mode 100644 index 00000000000..cdd72bd1e25 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/script-rt-entries.html @@ -0,0 +1,37 @@ + + + + +Resource Timing Entry Sequence of Events for Scripts + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/secure-iframe-in-insecure-context.html b/tests/wpt/web-platform-tests/resource-timing/secure-iframe-in-insecure-context.html new file mode 100644 index 00000000000..87f4711146c --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/secure-iframe-in-insecure-context.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/shared-worker-rt-entry.html b/tests/wpt/web-platform-tests/resource-timing/shared-worker-rt-entry.html new file mode 100644 index 00000000000..194500a0950 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/shared-worker-rt-entry.html @@ -0,0 +1,26 @@ + + + + +Resource Timing Entry for Shared Workers + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/tojson.html b/tests/wpt/web-platform-tests/resource-timing/tojson.html index 2fe2a60e74a..2564b855dff 100644 --- a/tests/wpt/web-platform-tests/resource-timing/tojson.html +++ b/tests/wpt/web-platform-tests/resource-timing/tojson.html @@ -46,7 +46,10 @@ promise_test(() => { 'responseEnd', 'transferSize', 'encodedBodySize', - 'decodedBodySize' + 'decodedBodySize', + 'renderBlockingStatus', + 'responseStatus', + 'contentType', ]; for (const key of performanceResourceTimingKeys) { try { diff --git a/tests/wpt/web-platform-tests/resource-timing/worklet-rt-entries.https.html b/tests/wpt/web-platform-tests/resource-timing/worklet-rt-entries.https.html new file mode 100644 index 00000000000..8ed280be170 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/worklet-rt-entries.https.html @@ -0,0 +1,19 @@ + + + + +Resource Timing Entry Sequence of Events for Worklets + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resources/channel.sub.js b/tests/wpt/web-platform-tests/resources/channel.sub.js index 7385a65f6e4..370d4f5905e 100644 --- a/tests/wpt/web-platform-tests/resources/channel.sub.js +++ b/tests/wpt/web-platform-tests/resources/channel.sub.js @@ -604,7 +604,7 @@ * @returns {Promise} - Resolved once the channel is disconnected. */ disconnectReader() { - // This causes any readers to disconnect until they are explictly reconnected + // This causes any readers to disconnect until they are explicitly reconnected return this.sendChannel.disconnectReader(); } diff --git a/tests/wpt/web-platform-tests/resources/check-layout-th.js b/tests/wpt/web-platform-tests/resources/check-layout-th.js index a507a8dfd7f..9cd8abc938d 100644 --- a/tests/wpt/web-platform-tests/resources/check-layout-th.js +++ b/tests/wpt/web-platform-tests/resources/check-layout-th.js @@ -20,7 +20,7 @@ function checkAttribute(output, node, attribute) function assert_tolerance(actual, expected, message) { - if (isNaN(expected) || Math.abs(actual - expected) >= 1) { + if (isNaN(expected) || isNaN(actual) || Math.abs(actual - expected) >= 1) { assert_equals(actual, Number(expected), message); } } diff --git a/tests/wpt/web-platform-tests/resources/chromium/README.md b/tests/wpt/web-platform-tests/resources/chromium/README.md index 3813f6de5d7..be090b332fc 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/README.md +++ b/tests/wpt/web-platform-tests/resources/chromium/README.md @@ -1,7 +1,7 @@ This directory contains Chromium-specific test resources, including mocks for test-only APIs implemented with -[MojoJS](https://chromium.googlesource.com/chromium/src/+/master/mojo/public/js/README.md). +[MojoJS](https://chromium.googlesource.com/chromium/src/+/main/mojo/public/js/README.md). Please do **not** copy `*.mojom.m.js` into this directory. Follow this doc if you want to add new MojoJS-backed mocks: -https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md#mojojs +https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md#mojojs diff --git a/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js b/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js index 2ace6d49ffa..049685242bc 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js +++ b/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. diff --git a/tests/wpt/web-platform-tests/resources/chromium/fake-hid.js b/tests/wpt/web-platform-tests/resources/chromium/fake-hid.js new file mode 100644 index 00000000000..70a01490d87 --- /dev/null +++ b/tests/wpt/web-platform-tests/resources/chromium/fake-hid.js @@ -0,0 +1,297 @@ +import {HidConnectionReceiver, HidDeviceInfo} from '/gen/services/device/public/mojom/hid.mojom.m.js'; +import {HidService, HidServiceReceiver} from '/gen/third_party/blink/public/mojom/hid/hid.mojom.m.js'; + +// Fake implementation of device.mojom.HidConnection. HidConnection represents +// an open connection to a HID device and can be used to send and receive +// reports. +class FakeHidConnection { + constructor(client) { + this.client_ = client; + this.receiver_ = new HidConnectionReceiver(this); + this.expectedWrites_ = []; + this.expectedGetFeatureReports_ = []; + this.expectedSendFeatureReports_ = []; + } + + bindNewPipeAndPassRemote() { + return this.receiver_.$.bindNewPipeAndPassRemote(); + } + + // Simulate an input report sent from the device to the host. The connection + // client's onInputReport method will be called with the provided |reportId| + // and |buffer|. + simulateInputReport(reportId, reportData) { + if (this.client_) { + this.client_.onInputReport(reportId, reportData); + } + } + + // Specify the result for an expected call to write. If |success| is true the + // write will be successful, otherwise it will simulate a failure. The + // parameters of the next write call must match |reportId| and |buffer|. + queueExpectedWrite(success, reportId, reportData) { + this.expectedWrites_.push({ + params: {reportId, data: reportData}, + result: {success}, + }); + } + + // Specify the result for an expected call to getFeatureReport. If |success| + // is true the operation is successful, otherwise it will simulate a failure. + // The parameter of the next getFeatureReport call must match |reportId|. + queueExpectedGetFeatureReport(success, reportId, reportData) { + this.expectedGetFeatureReports_.push({ + params: {reportId}, + result: {success, buffer: reportData}, + }); + } + + // Specify the result for an expected call to sendFeatureReport. If |success| + // is true the operation is successful, otherwise it will simulate a failure. + // The parameters of the next sendFeatureReport call must match |reportId| and + // |buffer|. + queueExpectedSendFeatureReport(success, reportId, reportData) { + this.expectedSendFeatureReports_.push({ + params: {reportId, data: reportData}, + result: {success}, + }); + } + + // Asserts that there are no more expected operations. + assertExpectationsMet() { + assert_equals(this.expectedWrites_.length, 0); + assert_equals(this.expectedGetFeatureReports_.length, 0); + assert_equals(this.expectedSendFeatureReports_.length, 0); + } + + read() {} + + // Implementation of HidConnection::Write. Causes an assertion failure if + // there are no expected write operations, or if the parameters do not match + // the expected call. + async write(reportId, buffer) { + let expectedWrite = this.expectedWrites_.shift(); + assert_not_equals(expectedWrite, undefined); + assert_equals(reportId, expectedWrite.params.reportId); + let actual = new Uint8Array(buffer); + compareDataViews( + new DataView(actual.buffer, actual.byteOffset), + new DataView( + expectedWrite.params.data.buffer, + expectedWrite.params.data.byteOffset)); + return expectedWrite.result; + } + + // Implementation of HidConnection::GetFeatureReport. Causes an assertion + // failure if there are no expected write operations, or if the parameters do + // not match the expected call. + async getFeatureReport(reportId) { + let expectedGetFeatureReport = this.expectedGetFeatureReports_.shift(); + assert_not_equals(expectedGetFeatureReport, undefined); + assert_equals(reportId, expectedGetFeatureReport.params.reportId); + return expectedGetFeatureReport.result; + } + + // Implementation of HidConnection::SendFeatureReport. Causes an assertion + // failure if there are no expected write operations, or if the parameters do + // not match the expected call. + async sendFeatureReport(reportId, buffer) { + let expectedSendFeatureReport = this.expectedSendFeatureReports_.shift(); + assert_not_equals(expectedSendFeatureReport, undefined); + assert_equals(reportId, expectedSendFeatureReport.params.reportId); + let actual = new Uint8Array(buffer); + compareDataViews( + new DataView(actual.buffer, actual.byteOffset), + new DataView( + expectedSendFeatureReport.params.data.buffer, + expectedSendFeatureReport.params.data.byteOffset)); + return expectedSendFeatureReport.result; + } +} + + +// A fake implementation of the HidService mojo interface. HidService manages +// HID device access for clients in the render process. Typically, when a client +// requests access to a HID device a chooser dialog is shown with a list of +// available HID devices. Selecting a device from the chooser also grants +// permission for the client to access that device. +// +// The fake implementation allows tests to simulate connected devices. It also +// skips the chooser dialog and instead allows tests to specify which device +// should be selected. All devices are treated as if the user had already +// granted permission. It is possible to revoke permission with forget() later. +class FakeHidService { + constructor() { + this.interceptor_ = new MojoInterfaceInterceptor(HidService.$interfaceName); + this.interceptor_.oninterfacerequest = e => this.bind(e.handle); + this.receiver_ = new HidServiceReceiver(this); + this.nextGuidValue_ = 0; + this.simulateConnectFailure_ = false; + this.reset(); + } + + start() { + this.interceptor_.start(); + } + + stop() { + this.interceptor_.stop(); + } + + reset() { + this.devices_ = new Map(); + this.allowedDevices_ = new Map(); + this.fakeConnections_ = new Map(); + this.selectedDevices_ = []; + } + + // Creates and returns a HidDeviceInfo with the specified device IDs. + makeDevice(vendorId, productId) { + let guidValue = ++this.nextGuidValue_; + let info = new HidDeviceInfo(); + info.guid = 'guid-' + guidValue.toString(); + info.physicalDeviceId = 'physical-device-id-' + guidValue.toString(); + info.vendorId = vendorId; + info.productId = productId; + info.productName = 'product name'; + info.serialNumber = '0'; + info.reportDescriptor = new Uint8Array(); + info.collections = []; + info.deviceNode = 'device node'; + return info; + } + + // Simulates a connected device the client has already been granted permission + // to. Returns the key used to store the device in the map. The key is either + // the physical device ID, or the device GUID if it has no physical device ID. + addDevice(deviceInfo, grantPermission = true) { + let key = deviceInfo.physicalDeviceId; + if (key.length === 0) + key = deviceInfo.guid; + + let devices = this.devices_.get(key) || []; + devices.push(deviceInfo); + this.devices_.set(key, devices); + + if (grantPermission) { + let allowedDevices = this.allowedDevices_.get(key) || []; + allowedDevices.push(deviceInfo); + this.allowedDevices_.set(key, allowedDevices); + } + + if (this.client_) + this.client_.deviceAdded(deviceInfo); + return key; + } + + // Simulates disconnecting a connected device. + removeDevice(key) { + let devices = this.devices_.get(key); + this.devices_.delete(key); + if (this.client_ && devices) { + devices.forEach(deviceInfo => { + this.client_.deviceRemoved(deviceInfo); + }); + } + } + + // Simulates updating the device information for a connected device. + changeDevice(deviceInfo) { + let key = deviceInfo.physicalDeviceId; + if (key.length === 0) + key = deviceInfo.guid; + + let devices = this.devices_.get(key) || []; + let i = devices.length; + while (i--) { + if (devices[i].guid == deviceInfo.guid) + devices.splice(i, 1); + } + devices.push(deviceInfo); + this.devices_.set(key, devices); + + let allowedDevices = this.allowedDevices_.get(key) || []; + let j = allowedDevices.length; + while (j--) { + if (allowedDevices[j].guid == deviceInfo.guid) + allowedDevices.splice(j, 1); + } + allowedDevices.push(deviceInfo); + this.allowedDevices_.set(key, allowedDevices); + + if (this.client_) + this.client_.deviceChanged(deviceInfo); + return key; + } + + // Sets a flag that causes the next call to connect() to fail. + simulateConnectFailure() { + this.simulateConnectFailure_ = true; + } + + // Sets the key of the device that will be returned as the selected item the + // next time requestDevice is called. The device with this key must have been + // previously added with addDevice. + setSelectedDevice(key) { + this.selectedDevices_ = this.devices_.get(key); + } + + // Returns the fake HidConnection object for this device, if there is one. A + // connection is created once the device is opened. + getFakeConnection(guid) { + return this.fakeConnections_.get(guid); + } + + bind(handle) { + this.receiver_.$.bindHandle(handle); + } + + registerClient(client) { + this.client_ = client; + } + + // Returns an array of connected devices the client has already been granted + // permission to access. + async getDevices() { + let devices = []; + this.allowedDevices_.forEach((value) => { + devices = devices.concat(value); + }); + return {devices}; + } + + // Simulates a device chooser prompt, returning |selectedDevices_| as the + // simulated selection. |options| is ignored. + async requestDevice(options) { + return {devices: this.selectedDevices_}; + } + + // Returns a fake connection to the device with the specified GUID. If + // |connectionClient| is not null, its onInputReport method will be called + // when input reports are received. If simulateConnectFailure() was called + // then a null connection is returned instead, indicating failure. + async connect(guid, connectionClient) { + if (this.simulateConnectFailure_) { + this.simulateConnectFailure_ = false; + return {connection: null}; + } + const fakeConnection = new FakeHidConnection(connectionClient); + this.fakeConnections_.set(guid, fakeConnection); + return {connection: fakeConnection.bindNewPipeAndPassRemote()}; + } + + // Removes the allowed device. + async forget(deviceInfo) { + for (const [key, value] of this.allowedDevices_) { + for (const device of value) { + if (device.guid == deviceInfo.guid) { + this.allowedDevices_.delete(key); + break; + } + } + } + return {success: true}; + } +} + +export const fakeHidService = new FakeHidService(); diff --git a/tests/wpt/web-platform-tests/resources/chromium/fake-serial.js b/tests/wpt/web-platform-tests/resources/chromium/fake-serial.js index 1a0f4b52178..e1e4d57e3ee 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/fake-serial.js +++ b/tests/wpt/web-platform-tests/resources/chromium/fake-serial.js @@ -307,10 +307,14 @@ class FakeSerialPort { } this.writable_ = undefined; - if (this.receiver_) { - this.receiver_.$.close(); - this.receiver_ = undefined; - } + // Close the receiver asynchronously so the reply to this message can be + // sent first. + const receiver = this.receiver_; + this.receiver_ = undefined; + setTimeout(() => { + receiver.$.close(); + }, 0); + return {}; } } @@ -420,6 +424,20 @@ class FakeSerialService { return {port: null}; } } + + async forgetPort(token) { + let record = this.ports_.get(Number(token.low)); + if (record === undefined) { + return {success: false}; + } + + this.ports_.delete(Number(token.low)); + if (record.fakePort.receiver_) { + record.fakePort.receiver_.$.close(); + record.fakePort.receiver_ = undefined; + } + return {success: true}; + } } export const fakeSerialService = new FakeSerialService(); diff --git a/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js b/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js index b7b303b6f14..bbc3973b407 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js +++ b/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js @@ -31,6 +31,58 @@ self.RingBuffer = class { } }; +class DefaultSensorTraits { + // https://w3c.github.io/sensors/#threshold-check-algorithm + static isSignificantlyDifferent(reading1, reading2) { + return true; + } + + // https://w3c.github.io/sensors/#reading-quantization-algorithm + static roundToMultiple(reading) { + return reading; + } + + // https://w3c.github.io/ambient-light/#ambient-light-threshold-check-algorithm + static areReadingsEqual(reading1, reading2) { + return false; + } +} + +class AmbientLightSensorTraits extends DefaultSensorTraits { + // https://w3c.github.io/ambient-light/#reduce-sensor-accuracy + static #ROUNDING_MULTIPLE = 50; + static #SIGNIFICANCE_THRESHOLD = 25; + + // https://w3c.github.io/ambient-light/#ambient-light-threshold-check-algorithm + static isSignificantlyDifferent([illuminance1], [illuminance2]) { + return Math.abs(illuminance1 - illuminance2) >= + this.#SIGNIFICANCE_THRESHOLD; + } + + // https://w3c.github.io/ambient-light/#ambient-light-reading-quantization-algorithm + static roundToMultiple(reading) { + const illuminance = reading[0]; + const scaledValue = + illuminance / AmbientLightSensorTraits.#ROUNDING_MULTIPLE; + let roundedReading = reading.splice(); + + if (illuminance < 0.0) { + roundedReading[0] = -AmbientLightSensorTraits.#ROUNDING_MULTIPLE * + Math.floor(-scaledValue + 0.5); + } else { + roundedReading[0] = AmbientLightSensorTraits.#ROUNDING_MULTIPLE * + Math.floor(scaledValue + 0.5); + } + + return roundedReading; + } + + // https://w3c.github.io/ambient-light/#ambient-light-threshold-check-algorithm + static areReadingsEqual([illuminance1], [illuminance2]) { + return illuminance1 === illuminance2; + } +} + self.GenericSensorTest = (() => { // Default sensor frequency in default configurations. const DEFAULT_FREQUENCY = 5; @@ -38,11 +90,15 @@ self.GenericSensorTest = (() => { // Class that mocks Sensor interface defined in // https://cs.chromium.org/chromium/src/services/device/public/mojom/sensor.mojom class MockSensor { - constructor(sensorRequest, handle, offset, size, reportingMode) { + static #BUFFER_OFFSET_TIMESTAMP = 1; + static #BUFFER_OFFSET_READINGS = 2; + + constructor(sensorRequest, buffer, reportingMode, sensorType) { this.client_ = null; this.startShouldFail_ = false; this.notifyOnReadingChange_ = true; this.reportingMode_ = reportingMode; + this.sensorType_ = sensorType; this.sensorReadingTimerId_ = null; this.readingData_ = null; this.requestedFrequencies_ = []; @@ -51,14 +107,31 @@ self.GenericSensorTest = (() => { // In this mock implementation we use a starting value // and an increment step value that resemble a platform timestamp reasonably enough. this.timestamp_ = window.performance.timeOrigin; - let rv = handle.mapBuffer(offset, size); - if (rv.result != Mojo.RESULT_OK) { - throw new Error("MockSensor(): Failed to map shared buffer"); - } - this.buffer_ = new Float64Array(rv.buffer); + // |buffer| represents a SensorReadingSharedBuffer on the C++ side in + // Chromium. It consists, in this order, of a + // SensorReadingField (an 8-byte union that includes + // 32-bit integer used by the lock class), and a SensorReading consisting + // of an 8-byte timestamp and 4 8-byte reading fields. + // + // |this.buffer_[0]| is zeroed by default, which allows OneWriterSeqLock + // to work with our custom memory buffer that did not actually create a + // OneWriterSeqLock instance. It is never changed manually here. + // + // Use MockSensor.#BUFFER_OFFSET_TIMESTAMP and + // MockSensor.#BUFFER_OFFSET_READINGS to access the other positions in + // |this.buffer_| without having to hardcode magic numbers in the code. + this.buffer_ = buffer; this.buffer_.fill(0); this.receiver_ = new SensorReceiver(this); this.receiver_.$.bindHandle(sensorRequest.handle); + this.lastRawReading_ = null; + this.lastRoundedReading_ = null; + + if (sensorType == SensorType.AMBIENT_LIGHT) { + this.sensorTraits = AmbientLightSensorTraits; + } else { + this.sensorTraits = DefaultSensorTraits; + } } // Returns default configuration. @@ -119,12 +192,13 @@ self.GenericSensorTest = (() => { this.readingData_ = null; this.buffer_.fill(0); this.receiver_.$.close(); + this.lastRawReading_ = null; + this.lastRoundedReading_ = null; } // Sets fake data that is used to deliver sensor reading updates. - async setSensorReading(readingData) { + setSensorReading(readingData) { this.readingData_ = new RingBuffer(readingData); - return this; } // This is a workaround to accommodate Blink's Device Orientation @@ -134,8 +208,8 @@ self.GenericSensorTest = (() => { this.setSensorReading(readingData); const reading = this.readingData_.value(); - this.buffer_.set(reading, 2); - this.buffer_[1] = this.timestamp_++; + this.buffer_.set(reading, MockSensor.#BUFFER_OFFSET_READINGS); + this.buffer_[MockSensor.#BUFFER_OFFSET_TIMESTAMP] = this.timestamp_++; } // Sets flag that forces sensor to fail when addConfiguration is invoked. @@ -158,11 +232,34 @@ self.GenericSensorTest = (() => { throw new TypeError("startReading(): The readings passed to " + "setSensorReading() must be arrays"); } - this.buffer_.set(reading, 2); + + if (this.reportingMode_ == ReportingMode.ON_CHANGE && + this.lastRawReading_ !== null && + !this.sensorTraits.isSignificantlyDifferent( + this.lastRawReading_, reading)) { + // In case new value is not significantly different compared to + // old value, new value is not sent. + return; + } + + this.lastRawReading_ = reading.slice(); + const roundedReading = this.sensorTraits.roundToMultiple(reading); + + if (this.reportingMode_ == ReportingMode.ON_CHANGE && + this.lastRoundedReading_ !== null && + this.sensorTraits.areReadingsEqual( + roundedReading, this.lastRoundedReading_)) { + // In case new rounded value is not different compared to old + // value, new value is not sent. + return; + } + this.buffer_.set(roundedReading, MockSensor.#BUFFER_OFFSET_READINGS); + this.lastRoundedReading_ = roundedReading; } + // For all tests sensor reading should have monotonically // increasing timestamp. - this.buffer_[1] = this.timestamp_++; + this.buffer_[MockSensor.#BUFFER_OFFSET_TIMESTAMP] = this.timestamp_++; if (this.reportingMode_ === ReportingMode.ON_CHANGE && this.notifyOnReadingChange_) { @@ -198,11 +295,22 @@ self.GenericSensorTest = (() => { Number(SensorInitParams_READ_BUFFER_SIZE_FOR_TESTS); this.sharedBufferSizeInBytes_ = this.readingSizeInBytes_ * (SensorType.MAX_VALUE + 1); - const rv = Mojo.createSharedBuffer(this.sharedBufferSizeInBytes_); + let rv = Mojo.createSharedBuffer(this.sharedBufferSizeInBytes_); + if (rv.result != Mojo.RESULT_OK) { + throw new Error('MockSensorProvider: Failed to create shared buffer'); + } + const handle = rv.handle; + rv = handle.mapBuffer(0, this.sharedBufferSizeInBytes_); if (rv.result != Mojo.RESULT_OK) { throw new Error("MockSensorProvider: Failed to map shared buffer"); } - this.sharedBufferHandle_ = rv.handle; + this.shmemArrayBuffer_ = rv.buffer; + rv = handle.duplicateBufferHandle({readOnly: true}); + if (rv.result != Mojo.RESULT_OK) { + throw new Error( + 'MockSensorProvider: failed to duplicate shared buffer'); + } + this.readOnlySharedBufferHandle_ = rv.handle; this.activeSensors_ = new Map(); this.resolveFuncs_ = new Map(); this.getSensorShouldFail_ = new Map(); @@ -252,16 +360,20 @@ self.GenericSensorTest = (() => { const sensor = new SensorRemote(); if (!this.activeSensors_.has(type)) { + const shmemView = new Float64Array( + this.shmemArrayBuffer_, offset, + this.readingSizeInBytes_ / Float64Array.BYTES_PER_ELEMENT); const mockSensor = new MockSensor( - sensor.$.bindNewPipeAndPassReceiver(), this.sharedBufferHandle_, - offset, this.readingSizeInBytes_, reportingMode); + sensor.$.bindNewPipeAndPassReceiver(), shmemView, reportingMode, + type); this.activeSensors_.set(type, mockSensor); this.activeSensors_.get(type).client_ = new SensorClientRemote(); } - const rv = this.sharedBufferHandle_.duplicateBufferHandle(); + const rv = this.readOnlySharedBufferHandle_.duplicateBufferHandle( + {readOnly: true}); if (rv.result != Mojo.RESULT_OK) { - throw new Error("getSensor(): failed to duplicate Mojo buffer handler"); + throw new Error('getSensor(): failed to duplicate shared buffer'); } const defaultConfig = { frequency: DEFAULT_FREQUENCY }; @@ -271,24 +383,11 @@ self.GenericSensorTest = (() => { this.maxFrequency_ = Math.min(10, this.maxFrequency_); } - // Chromium applies some rounding and other privacy-related measures that - // can cause ALS not to report a reading when it has not changed beyond a - // certain threshold compared to the previous illuminance value. Make - // each reading return a different value that is significantly different - // from the previous one when setSensorReading() is not called by client - // code (e.g. run_generic_sensor_iframe_tests()). - if (type == SensorType.AMBIENT_LIGHT) { - this.activeSensors_.get(type).setSensorReading([ - [window.performance.now() * 100], - [(window.performance.now() + 50) * 100] - ]); - } - const client = this.activeSensors_.get(type).client_; const initParams = { sensor, clientReceiver: client.$.bindNewPipeAndPassReceiver(), - memory: rv.handle, + memory: {buffer: rv.handle}, bufferOffset: BigInt(offset), mode: reportingMode, defaultConfiguration: defaultConfig, diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-pressure-service.js b/tests/wpt/web-platform-tests/resources/chromium/mock-pressure-service.js new file mode 100644 index 00000000000..15bd6578930 --- /dev/null +++ b/tests/wpt/web-platform-tests/resources/chromium/mock-pressure-service.js @@ -0,0 +1,121 @@ +import {PressureFactor, PressureState} from '/gen/services/device/public/mojom/pressure_update.mojom.m.js' +import {PressureService, PressureServiceReceiver, PressureStatus} from '/gen/third_party/blink/public/mojom/compute_pressure/pressure_service.mojom.m.js' + +class MockPressureService { + constructor() { + this.receiver_ = new PressureServiceReceiver(this); + this.interceptor_ = + new MojoInterfaceInterceptor(PressureService.$interfaceName); + this.interceptor_.oninterfacerequest = e => { + this.receiver_.$.bindHandle(e.handle); + }; + this.reset(); + this.mojomStateType_ = new Map([ + ['nominal', PressureState.kNominal], ['fair', PressureState.kFair], + ['serious', PressureState.kSerious], ['critical', PressureState.kCritical] + ]); + this.mojomFactorType_ = new Map([ + ['thermal', PressureFactor.kThermal], + ['power-supply', PressureFactor.kPowerSupply] + ]); + this.pressureServiceReadingTimerId_ = null; + } + + start() { + this.interceptor_.start(); + } + + stop() { + this.stopPlatformCollector(); + this.receiver_.$.close(); + this.interceptor_.stop(); + + // Wait for an event loop iteration to let any pending mojo commands in + // the pressure service finish. + return new Promise(resolve => setTimeout(resolve, 0)); + } + + reset() { + this.observer_ = null; + this.pressureUpdate_ = null; + this.pressureServiceReadingTimerId_ = null; + this.pressureStatus_ = PressureStatus.kOk; + this.updatesDelivered_ = 0; + } + + async bindObserver(observer) { + if (this.observer_ !== null) + throw new Error('BindObserver() has already been called'); + + this.observer_ = observer; + + return {status: this.pressureStatus_}; + } + + startPlatformCollector(sampleRate) { + if (sampleRate === 0) + return; + + if (this.pressureServiceReadingTimerId_ != null) + this.stopPlatformCollector(); + + // The following code for calculating the timestamp was taken from + // https://source.chromium.org/chromium/chromium/src/+/main:third_party/ + // blink/web_tests/http/tests/resources/ + // geolocation-mock.js;l=131;drc=37a9b6c03b9bda9fcd62fc0e5e8016c278abd31f + + // The new Date().getTime() returns the number of milliseconds since the + // UNIX epoch (1970-01-01 00::00:00 UTC), while |internalValue| of the + // device.mojom.PressureUpdate represents the value of microseconds since + // the Windows FILETIME epoch (1601-01-01 00:00:00 UTC). So add the delta + // when sets the |internalValue|. See more info in //base/time/time.h. + const windowsEpoch = Date.UTC(1601, 0, 1, 0, 0, 0, 0); + const unixEpoch = Date.UTC(1970, 0, 1, 0, 0, 0, 0); + // |epochDeltaInMs| equals to base::Time::kTimeTToMicrosecondsOffset. + const epochDeltaInMs = unixEpoch - windowsEpoch; + + const timeout = (1 / sampleRate) * 1000; + this.pressureServiceReadingTimerId_ = window.setInterval(() => { + if (this.pressureUpdate_ === null || this.observer_ === null) + return; + this.pressureUpdate_.timestamp = { + internalValue: BigInt((new Date().getTime() + epochDeltaInMs) * 1000) + }; + this.observer_.onUpdate(this.pressureUpdate_); + this.updatesDelivered_++; + }, timeout); + } + + stopPlatformCollector() { + if (this.pressureServiceReadingTimerId_ != null) { + window.clearInterval(this.pressureServiceReadingTimerId_); + this.pressureServiceReadingTimerId_ = null; + } + this.updatesDelivered_ = 0; + } + + updatesDelivered() { + return this.updatesDelivered_; + } + + setPressureUpdate(state, factors) { + if (!this.mojomStateType_.has(state)) + throw new Error(`PressureState '${state}' is invalid`); + + let pressureFactors = []; + if (Array.isArray(factors)) { + for (const factor of factors) { + if (!this.mojomFactorType_.has(factor)) + throw new Error(`PressureFactor '${factor}' is invalid`); + pressureFactors.push(this.mojomFactorType_.get(factor)); + } + } + + this.pressureUpdate_ = { + state: this.mojomStateType_.get(state), + factors: pressureFactors, + }; + } +} + +export const mockPressureService = new MockPressureService(); diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-pressure-service.js.headers b/tests/wpt/web-platform-tests/resources/chromium/mock-pressure-service.js.headers new file mode 100644 index 00000000000..6805c323df5 --- /dev/null +++ b/tests/wpt/web-platform-tests/resources/chromium/mock-pressure-service.js.headers @@ -0,0 +1 @@ +Content-Type: text/javascript; charset=utf-8 diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-subapps.js b/tests/wpt/web-platform-tests/resources/chromium/mock-subapps.js new file mode 100644 index 00000000000..467d932465b --- /dev/null +++ b/tests/wpt/web-platform-tests/resources/chromium/mock-subapps.js @@ -0,0 +1,86 @@ +'use strict'; + +import {SubAppsService, SubAppsServiceReceiver, SubAppsServiceResult} from '/gen/third_party/blink/public/mojom/subapps/sub_apps_service.mojom.m.js'; + +self.SubAppsServiceTest = (() => { + // Class that mocks SubAppsService interface defined in /third_party/blink/public/mojom/subapps/sub_apps_service.mojom + + class MockSubAppsService { + constructor() { + this.interceptor_ = + new MojoInterfaceInterceptor(SubAppsService.$interfaceName); + this.receiver_ = new SubAppsServiceReceiver(this); + this.interceptor_.oninterfacerequest = + e => this.receiver_.$.bindHandle(e.handle); + this.interceptor_.start(); + } + + reset() { + this.interceptor_.stop(); + this.receiver_.$.close(); + } + + add(sub_apps) { + return Promise.resolve({ + result: testInternal.addCallReturnValue, + }); + } + + list() { + return Promise.resolve({ + result: { + code: testInternal.serviceResultCode, + subApps: testInternal.listCallReturnValue, + } + }); + } + + remove() { + return Promise.resolve({ + result: testInternal.serviceResultCode, + }); + } + } + + let testInternal = { + initialized: false, + mockSubAppsService: null, + serviceResultCode: 0, + addCallReturnValue: [], + listCallReturnValue: [], + } + + class SubAppsServiceTestChromium { + constructor() { + Object.freeze(this); // Make it immutable. + } + + initialize(service_result_code, add_call_return_value, list_call_return_value) { + if (!testInternal.initialized) { + testInternal = { + mockSubAppsService: new MockSubAppsService(), + initialized: true, + serviceResultCode: service_result_code, + addCallReturnValue: add_call_return_value, + listCallReturnValue: list_call_return_value, + }; + }; + } + + async reset() { + if (testInternal.initialized) { + testInternal.mockSubAppsService.reset(); + testInternal = { + mockSubAppsService: null, + initialized: false, + serviceResultCode: 0, + addCallReturnValue: [], + listCallReturnValue: [], + }; + await new Promise(resolve => setTimeout(resolve, 0)); + } + } + } + + return SubAppsServiceTestChromium; +})(); diff --git a/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js b/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js index 10140a54fab..fc322bd4736 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js +++ b/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js @@ -386,6 +386,10 @@ class FakeWebUsbService { this.client_.onDeviceAdded(fakeDeviceInitToDeviceInfo(device.guid, info)); } + async forgetDevice(guid) { + // Permissions are currently untestable through WPT. + } + removeDevice(fakeDevice) { let device = this.devices_.get(fakeDevice); if (!device) diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js index c3984ca8bbb..452cdfa5e37 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js +++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js @@ -59,6 +59,12 @@ function composeGFXTransform(fakeTransformInit) { return {matrix: getMatrixFromTransform(fakeTransformInit)}; } +// Value equality for camera image init objects - they must contain `width` & +// `height` properties and may contain `pixels` property. +function isSameCameraImageInit(rhs, lhs) { + return lhs.width === rhs.width && lhs.height === rhs.height && lhs.pixels === rhs.pixels; +} + class ChromeXRTest { constructor() { this.mockVRService_ = new MockVRService(); @@ -327,6 +333,7 @@ class MockRuntime { 'anchors': vrMojom.XRSessionFeature.ANCHORS, 'depth-sensing': vrMojom.XRSessionFeature.DEPTH, 'secondary-views': vrMojom.XRSessionFeature.SECONDARY_VIEWS, + 'camera-access': vrMojom.XRSessionFeature.CAMERA_ACCESS, }; static _sessionModeToMojoMap = { @@ -400,16 +407,7 @@ class MockRuntime { } this.supportedModes_ = this._convertModesToEnum(supportedModes); - - // Initialize DisplayInfo first to set the defaults, then override with - // anything from the deviceInit - if (this.supportedModes_.includes(vrMojom.XRSessionMode.kImmersiveVr) || - this.supportedModes_.includes(vrMojom.XRSessionMode.kImmersiveAr)) { - this.displayInfo_ = this._getImmersiveDisplayInfo(); - } else if (this.supportedModes_.includes(vrMojom.XRSessionMode.kInline)) { - this.displayInfo_ = this._getNonImmersiveDisplayInfo(); - } else { - // This should never happen! + if (this.supportedModes_.length == 0) { console.error("Device has empty supported modes array!"); throw new InvalidStateError(); } @@ -445,26 +443,33 @@ class MockRuntime { // WebXR Test API setViews(primaryViews, secondaryViews) { + this.cameraImage_ = null; this.primaryViews_ = []; this.secondaryViews_ = []; let xOffset = 0; if (primaryViews) { this.primaryViews_ = []; xOffset = this._setViews(primaryViews, xOffset, this.primaryViews_); + const cameraImage = this._findCameraImage(primaryViews); + + if (cameraImage) { + this.cameraImage_ = cameraImage; + } } if (secondaryViews) { this.secondaryViews_ = []; this._setViews(secondaryViews, xOffset, this.secondaryViews_); - } + const cameraImage = this._findCameraImage(secondaryViews); - // Do not include secondary views here because they are only exposed to - // WebXR if requested by the session. getFrameData() will send back the - // secondary views when enabled. - this.displayInfo_.views = this.primaryViews_; + if (cameraImage) { + if (!isSameCameraImageInit(this.cameraImage_, cameraImage)) { + throw new Error("If present, camera resolutions on each view must match each other!" + + " Secondary views' camera doesn't match primary views."); + } - if (this.sessionClient_) { - this.sessionClient_.onChanged(this.displayInfo_); + this.cameraImage_ = cameraImage; + } } } @@ -720,33 +725,35 @@ class MockRuntime { return xOffset; } + _findCameraImage(views) { + const viewWithCamera = views.find(view => view.cameraImageInit); + if (viewWithCamera) { + //If we have one view with a camera resolution, all views should have the same camera resolution. + const allViewsHaveSameCamera = views.every( + view => isSameCameraImageInit(view.cameraImageInit, viewWithCamera.cameraImageInit)); + + if (!allViewsHaveSameCamera) { + throw new Error("If present, camera resolutions on each view must match each other!"); + } + + return viewWithCamera.cameraImageInit; + } + + return null; + } + _onStageParametersUpdated() { // Indicate for the frame loop that the stage parameters have been updated. this.stageParametersId_++; } - _getNonImmersiveDisplayInfo() { - const displayInfo = this._getImmersiveDisplayInfo(); + _getDefaultViews() { + if (this.primaryViews_) { + return this.primaryViews_; + } - displayInfo.capabilities.canPresent = false; - displayInfo.views = []; - - return displayInfo; - } - - // Function to generate some valid display information for the device. - _getImmersiveDisplayInfo() { const viewport_size = 20; - return { - displayName: 'FakeDevice', - capabilities: { - hasPosition: false, - hasExternalDisplay: false, - canPresent: true, - maxLayers: 1 - }, - stageParameters: null, - views: [{ + return [{ eye: vrMojom.XREye.kLeft, fieldOfView: { upDegrees: 48.316, @@ -773,8 +780,7 @@ class MockRuntime { orientation: [0, 0, 0, 1] })), viewport: { x: viewport_size, y: 0, width: viewport_size, height: viewport_size } - }] - }; + }]; } // This function converts between the matrix provided by the WebXR test API @@ -930,7 +936,10 @@ class MockRuntime { }, frameId: this.next_frame_id_, bufferHolder: null, - bufferSize: {}, + cameraImageSize: this.cameraImage_ ? { + width: this.cameraImage_.width, + height: this.cameraImage_.height + } : null, renderingTimeRatio: 0, stageParameters: this.stageParameters_, stageParametersId: this.stageParametersId_, @@ -1199,7 +1208,6 @@ class MockRuntime { submitFrameSink: submit_frame_sink, dataProvider: dataProviderPtr, clientReceiver: clientReceiver, - displayInfo: this.displayInfo_, enabledFeatures: enabled_features, deviceConfig: { usesInputEventing: false, @@ -1210,6 +1218,7 @@ class MockRuntime { depthUsage: vrMojom.XRDepthUsage.kCPUOptimized, depthDataFormat: vrMojom.XRDepthDataFormat.kLuminanceAlpha, } : null, + views: this._getDefaultViews(), }, enviromentBlendMode: this.enviromentBlendMode_, interactionMode: this.interactionMode_ @@ -2094,7 +2103,7 @@ class MockXRPresentationProvider { this.submitFrameClient_.onSubmitFrameRendered(); } - submitFrameWithTextureHandle(frameId, texture) {} + submitFrameWithTextureHandle(frameId, texture, syncToken) {} submitFrameDrawnIntoTexture(frameId, syncToken, timeWaited) {} diff --git a/tests/wpt/web-platform-tests/resources/idlharness-shadowrealm.js b/tests/wpt/web-platform-tests/resources/idlharness-shadowrealm.js index 89990400d24..9484ca6f512 100644 --- a/tests/wpt/web-platform-tests/resources/idlharness-shadowrealm.js +++ b/tests/wpt/web-platform-tests/resources/idlharness-shadowrealm.js @@ -21,53 +21,41 @@ function fetch_text(url) { * dependency (i.e. have already been seen). */ function idl_test_shadowrealm(srcs, deps) { - const script_urls = [ - "/resources/testharness.js", - "/resources/WebIDLParser.js", - "/resources/idlharness.js", - ]; promise_setup(async t => { const realm = new ShadowRealm(); // https://github.com/web-platform-tests/wpt/issues/31996 - realm.evaluate("globalThis.self = globalThis; undefined"); + realm.evaluate("globalThis.self = globalThis; undefined;"); - const ss = await Promise.all(script_urls.map(url => fetch_text(url))); - for (const s of ss) { - realm.evaluate(s); - } + realm.evaluate(` + globalThis.self.GLOBAL = { + isWindow: function() { return false; }, + isWorker: function() { return false; }, + isShadowRealm: function() { return true; }, + }; undefined; + `); const specs = await Promise.all(srcs.concat(deps).map(spec => { return fetch_text("/interfaces/" + spec + ".idl"); })); const idls = JSON.stringify(specs); - const code = ` - const idls = ${idls}; - let results; - add_completion_callback(function (tests, harness_status, asserts_run) { - results = tests; - }); - - // Without the wrapping test, testharness.js will think it's done after it has run - // the first idlharness test. - test(() => { - const idl_array = new IdlArray(); - for (let i = 0; i < ${srcs.length}; i++) { - idl_array.add_idls(idls[i]); - } - for (let i = ${srcs.length}; i < ${srcs.length + deps.length}; i++) { - idl_array.add_dependency_idls(idls[i]); - } - idl_array.test(); - }, "setup"); - String(JSON.stringify(results)) - `; - - // We ran the tests in the ShadowRealm and gathered the results. Now treat them as if - // we'd run them directly here, so we can see them. - const results = JSON.parse(realm.evaluate(code)); - for (const {name, status, message} of results) { - // TODO: make this an API in testharness.js - needs RFC? - promise_test(t => {t.set_status(status, message); t.phase = t.phases.HAS_RESULT; t.done()}, name); - } - }, "outer setup"); + await new Promise( + realm.evaluate(`(resolve,reject) => { + (async () => { + await import("/resources/testharness.js"); + await import("/resources/WebIDLParser.js"); + await import("/resources/idlharness.js"); + const idls = ${idls}; + const idl_array = new IdlArray(); + for (let i = 0; i < ${srcs.length}; i++) { + idl_array.add_idls(idls[i]); + } + for (let i = ${srcs.length}; i < ${srcs.length + deps.length}; i++) { + idl_array.add_dependency_idls(idls[i]); + } + idl_array.test(); + })().then(resolve, (e) => reject(e.toString())); + }`) + ); + await fetch_tests_from_shadow_realm(realm); + }); } // vim: set expandtab shiftwidth=4 tabstop=4 foldmarker=@{,@} foldmethod=marker: diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js index 611a26f1fe8..e097ee7f7fe 100644 --- a/tests/wpt/web-platform-tests/resources/idlharness.js +++ b/tests/wpt/web-platform-tests/resources/idlharness.js @@ -817,6 +817,13 @@ IdlArray.prototype.merge_partials = function() test(function () { const partialExposure = exposure_set(parsed_idl); const memberExposure = exposure_set(this.members[parsed_idl.name]); + if (memberExposure === "*") { + return; + } + if (partialExposure === "*") { + throw new IdlHarnessError( + `Partial ${parsed_idl.name} ${parsed_idl.type} is exposed everywhere, the original ${parsed_idl.type} is not.`); + } partialExposure.forEach(name => { if (!memberExposure || !memberExposure.has(name)) { throw new IdlHarnessError( @@ -955,7 +962,7 @@ IdlArray.prototype.assert_type_is = function(value, type) return; } - if (type.generic === "sequence") + if (type.generic === "sequence" || type.generic == "ObservableArray") { assert_true(Array.isArray(value), "should be an Array"); if (!value.length) @@ -1522,12 +1529,12 @@ IdlInterface.prototype.test_self = function() // https://github.com/heycam/webidl/issues/698 assert_true(isConstructor(this.get_interface_object()), "interface object must pass IsConstructor check"); + var interface_object = this.get_interface_object(); + assert_throws_js(globalOf(interface_object).TypeError, function() { + interface_object(); + }, "interface object didn't throw TypeError when called as a function"); + if (!this.constructors().length) { - // "If I was not declared with a constructor operation, then throw a TypeError." - var interface_object = this.get_interface_object(); - assert_throws_js(globalOf(interface_object).TypeError, function() { - interface_object(); - }, "interface object didn't throw TypeError when called as a function"); assert_throws_js(globalOf(interface_object).TypeError, function() { new interface_object(); }, "interface object didn't throw TypeError when called as a constructor"); @@ -1593,7 +1600,7 @@ IdlInterface.prototype.test_self = function() if (this.is_callback()) { throw new IdlHarnessError("Invalid IDL: LegacyWindowAlias extended attribute on non-interface " + this.name); } - if (!this.exposureSet.has("Window")) { + if (!(this.exposureSet === "*" || this.exposureSet.has("Window"))) { throw new IdlHarnessError("Invalid IDL: LegacyWindowAlias extended attribute on " + this.name + " which is not exposed in Window"); } // TODO: when testing of [LegacyNoInterfaceObject] interfaces is supported, @@ -2426,73 +2433,176 @@ IdlInterface.prototype.test_to_json_operation = function(desc, memberHolderObjec } }; -IdlInterface.prototype.test_member_iterable = function(member) -{ - subsetTestByKey(this.name, test, function() - { - var isPairIterator = member.idlType.length === 2; - var proto = this.get_interface_object().prototype; - var iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.iterator); +IdlInterface.prototype.test_member_maplike = function(member) { + subsetTestByKey(this.name, test, () => { + const proto = this.get_interface_object().prototype; - assert_true(iteratorDesc.writable, "@@iterator property should be writable"); - assert_true(iteratorDesc.configurable, "@@iterator property should be configurable"); - assert_false(iteratorDesc.enumerable, "@@iterator property should not be enumerable"); - assert_equals(typeof iteratorDesc.value, "function", "@@iterator property should be a function"); - assert_equals(iteratorDesc.value.length, 0, "@@iterator function object length should be 0"); - assert_equals(iteratorDesc.value.name, isPairIterator ? "entries" : "values", "@@iterator function object should have the right name"); - - if (isPairIterator) { - assert_equals(proto["entries"], proto[Symbol.iterator], "entries method should be the same as @@iterator method"); - [ - ["entries", 0], - ["keys", 0], - ["values", 0], - ["forEach", 1] - ].forEach(([property, length]) => { - var desc = Object.getOwnPropertyDescriptor(proto, property); - assert_equals(typeof desc.value, "function", property + " property should be a function"); - assert_equals(desc.value.length, length, property + " function object length should be " + length); - assert_equals(desc.value.name, property, property + " function object should have the right name"); - }); - } else { - assert_equals(proto[Symbol.iterator], Array.prototype[Symbol.iterator], "@@iterator method should be the same as Array prototype's"); - ["entries", "keys", "values", "forEach", Symbol.iterator].forEach(property => { - var propertyName = property === Symbol.iterator ? "@@iterator" : property; - assert_equals(proto[property], Array.prototype[property], propertyName + " method should be the same as Array prototype's"); - }); + const methods = [ + ["entries", 0], + ["keys", 0], + ["values", 0], + ["forEach", 1], + ["get", 1], + ["has", 1] + ]; + if (!member.readonly) { + methods.push( + ["set", 2], + ["delete", 1], + ["clear", 1] + ); } - }.bind(this), this.name + " interface: iterable<" + member.idlType.map(function(t) { return t.idlType; }).join(", ") + ">"); + + for (const [name, length] of methods) { + const desc = Object.getOwnPropertyDescriptor(proto, name); + assert_equals(typeof desc.value, "function", `${name} should be a function`); + assert_equals(desc.enumerable, true, `${name} enumerable`); + assert_equals(desc.configurable, true, `${name} configurable`); + assert_equals(desc.writable, true, `${name} writable`); + assert_equals(desc.value.length, length, `${name} function object length should be ${length}`); + assert_equals(desc.value.name, name, `${name} function object should have the right name`); + } + + const iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.iterator); + assert_equals(iteratorDesc.value, proto.entries, `@@iterator should equal entries`); + assert_equals(iteratorDesc.enumerable, false, `@@iterator enumerable`); + assert_equals(iteratorDesc.configurable, true, `@@iterator configurable`); + assert_equals(iteratorDesc.writable, true, `@@iterator writable`); + + const sizeDesc = Object.getOwnPropertyDescriptor(proto, "size"); + assert_equals(typeof sizeDesc.get, "function", `size getter should be a function`); + assert_equals(sizeDesc.set, undefined, `size should not have a setter`); + assert_equals(sizeDesc.enumerable, true, `size enumerable`); + assert_equals(sizeDesc.configurable, true, `size configurable`); + assert_equals(sizeDesc.get.length, 0, `size getter length should have the right length`); + assert_equals(sizeDesc.get.name, "get size", `size getter have the right name`); + }, `${this.name} interface: maplike<${member.idlType.map(t => t.idlType).join(", ")}>`); }; -IdlInterface.prototype.test_member_async_iterable = function(member) -{ - subsetTestByKey(this.name, test, function() - { - var isPairIterator = member.idlType.length === 2; - var proto = this.get_interface_object().prototype; - var iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.asyncIterator); +IdlInterface.prototype.test_member_setlike = function(member) { + subsetTestByKey(this.name, test, () => { + const proto = this.get_interface_object().prototype; - assert_true(iteratorDesc.writable, "@@asyncIterator property should be writable"); - assert_true(iteratorDesc.configurable, "@@asyncIterator property should be configurable"); - assert_false(iteratorDesc.enumerable, "@@asyncIterator property should not be enumerable"); - assert_equals(typeof iteratorDesc.value, "function", "@@asyncIterator property should be a function"); - assert_equals(iteratorDesc.value.length, 0, "@@asyncIterator function object length should be 0"); - assert_equals(iteratorDesc.value.name, isPairIterator ? "entries" : "values", "@@asyncIterator function object should have the right name"); + const methods = [ + ["entries", 0], + ["keys", 0], + ["values", 0], + ["forEach", 1], + ["has", 1] + ]; + if (!member.readonly) { + methods.push( + ["add", 1], + ["delete", 1], + ["clear", 1] + ); + } + + for (const [name, length] of methods) { + const desc = Object.getOwnPropertyDescriptor(proto, name); + assert_equals(typeof desc.value, "function", `${name} should be a function`); + assert_equals(desc.enumerable, true, `${name} enumerable`); + assert_equals(desc.configurable, true, `${name} configurable`); + assert_equals(desc.writable, true, `${name} writable`); + assert_equals(desc.value.length, length, `${name} function object length should be ${length}`); + assert_equals(desc.value.name, name, `${name} function object should have the right name`); + } + + const iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.iterator); + assert_equals(iteratorDesc.value, proto.values, `@@iterator should equal values`); + assert_equals(iteratorDesc.enumerable, false, `@@iterator enumerable`); + assert_equals(iteratorDesc.configurable, true, `@@iterator configurable`); + assert_equals(iteratorDesc.writable, true, `@@iterator writable`); + + const sizeDesc = Object.getOwnPropertyDescriptor(proto, "size"); + assert_equals(typeof sizeDesc.get, "function", `size getter should be a function`); + assert_equals(sizeDesc.set, undefined, `size should not have a setter`); + assert_equals(sizeDesc.enumerable, true, `size enumerable`); + assert_equals(sizeDesc.configurable, true, `size configurable`); + assert_equals(sizeDesc.get.length, 0, `size getter length should have the right length`); + assert_equals(sizeDesc.get.name, "size", `size getter have the right name`); + }, `${this.name} interface: setlike<${member.idlType.map(t => t.idlType).join(", ")}>`); +}; + +IdlInterface.prototype.test_member_iterable = function(member) { + subsetTestByKey(this.name, test, () => { + const isPairIterator = member.idlType.length === 2; + const proto = this.get_interface_object().prototype; + + const methods = [ + ["entries", 0], + ["keys", 0], + ["values", 0], + ["forEach", 1] + ]; + + for (const [name, length] of methods) { + const desc = Object.getOwnPropertyDescriptor(proto, name); + assert_equals(typeof desc.value, "function", `${name} should be a function`); + assert_equals(desc.enumerable, true, `${name} enumerable`); + assert_equals(desc.configurable, true, `${name} configurable`); + assert_equals(desc.writable, true, `${name} writable`); + assert_equals(desc.value.length, length, `${name} function object length should be ${length}`); + assert_equals(desc.value.name, name, `${name} function object should have the right name`); + + if (!isPairIterator) { + assert_equals(desc.value, Array.prototype[name], `${name} equality with Array.prototype version`); + } + } + + const iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.iterator); + assert_equals(iteratorDesc.enumerable, false, `@@iterator enumerable`); + assert_equals(iteratorDesc.configurable, true, `@@iterator configurable`); + assert_equals(iteratorDesc.writable, true, `@@iterator writable`); if (isPairIterator) { - assert_equals(proto["entries"], proto[Symbol.asyncIterator], "entries method should be the same as @@asyncIterator method"); - ["entries", "keys", "values"].forEach(property => { - var desc = Object.getOwnPropertyDescriptor(proto, property); - assert_equals(typeof desc.value, "function", property + " property should be a function"); - assert_equals(desc.value.length, 0, property + " function object length should be 0"); - assert_equals(desc.value.name, property, property + " function object should have the right name"); - }); + assert_equals(iteratorDesc.value, proto.entries, `@@iterator equality with entries`); } else { - assert_equals(proto["values"], proto[Symbol.asyncIterator], "values method should be the same as @@asyncIterator method"); - assert_false("entries" in proto, "should not have an entries method"); - assert_false("keys" in proto, "should not have a keys method"); + assert_equals(iteratorDesc.value, Array.prototype[Symbol.iterator], `@@iterator equality with Array.prototype version`); } - }.bind(this), this.name + " interface: async iterable<" + member.idlType.map(function(t) { return t.idlType; }).join(", ") + ">"); + }, `${this.name} interface: iterable<${member.idlType.map(t => t.idlType).join(", ")}>`); +}; + +IdlInterface.prototype.test_member_async_iterable = function(member) { + subsetTestByKey(this.name, test, () => { + const isPairIterator = member.idlType.length === 2; + const proto = this.get_interface_object().prototype; + + // Note that although the spec allows arguments, which will be passed to the @@asyncIterator + // method (which is either values or entries), those arguments must always be optional. So + // length of 0 is still correct for values and entries. + const methods = [ + ["values", 0], + ]; + + if (isPairIterator) { + methods.push( + ["entries", 0], + ["keys", 0] + ); + } + + for (const [name, length] of methods) { + const desc = Object.getOwnPropertyDescriptor(proto, name); + assert_equals(typeof desc.value, "function", `${name} should be a function`); + assert_equals(desc.enumerable, true, `${name} enumerable`); + assert_equals(desc.configurable, true, `${name} configurable`); + assert_equals(desc.writable, true, `${name} writable`); + assert_equals(desc.value.length, length, `${name} function object length should be ${length}`); + assert_equals(desc.value.name, name, `${name} function object should have the right name`); + } + + const iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.asyncIterator); + assert_equals(iteratorDesc.enumerable, false, `@@iterator enumerable`); + assert_equals(iteratorDesc.configurable, true, `@@iterator configurable`); + assert_equals(iteratorDesc.writable, true, `@@iterator writable`); + + if (isPairIterator) { + assert_equals(iteratorDesc.value, proto.entries, `@@iterator equality with entries`); + } else { + assert_equals(iteratorDesc.value, proto.values, `@@iterator equality with values`); + } + }, `${this.name} interface: async iterable<${member.idlType.map(t => t.idlType).join(", ")}>`); }; IdlInterface.prototype.test_member_stringifier = function(member) @@ -2617,6 +2727,12 @@ IdlInterface.prototype.test_members = function() this.test_member_iterable(member); } break; + case "maplike": + this.test_member_maplike(member); + break; + case "setlike": + this.test_member_setlike(member); + break; default: // TODO: check more member types. break; @@ -2647,21 +2763,26 @@ IdlInterface.prototype.test_object = function(desc) expected_typeof = "object"; } - this.test_primary_interface_of(desc, obj, exception, expected_typeof); + if (this.is_callback()) { + assert_equals(exception, null, "Unexpected exception when evaluating object"); + assert_equals(typeof obj, expected_typeof, "wrong typeof object"); + } else { + this.test_primary_interface_of(desc, obj, exception, expected_typeof); - var current_interface = this; - while (current_interface) - { - if (!(current_interface.name in this.array.members)) + var current_interface = this; + while (current_interface) { - throw new IdlHarnessError("Interface " + current_interface.name + " not found (inherited by " + this.name + ")"); + if (!(current_interface.name in this.array.members)) + { + throw new IdlHarnessError("Interface " + current_interface.name + " not found (inherited by " + this.name + ")"); + } + if (current_interface.prevent_multiple_testing && current_interface.already_tested) + { + return; + } + current_interface.test_interface_of(desc, obj, exception, expected_typeof); + current_interface = this.array.members[current_interface.base]; } - if (current_interface.prevent_multiple_testing && current_interface.already_tested) - { - return; - } - current_interface.test_interface_of(desc, obj, exception, expected_typeof); - current_interface = this.array.members[current_interface.base]; } }; diff --git a/tests/wpt/web-platform-tests/resources/sriharness.js b/tests/wpt/web-platform-tests/resources/sriharness.js index d57a1b38465..943d677224f 100644 --- a/tests/wpt/web-platform-tests/resources/sriharness.js +++ b/tests/wpt/web-platform-tests/resources/sriharness.js @@ -1,17 +1,30 @@ -var SRIScriptTest = function(pass, name, src, integrityValue, crossoriginValue, nonce) { +// `integrityValue` indicates the 'integrity' attribute value at the time of +// #prepare-a-script. +// +// `integrityValueAfterPrepare` indicates how the 'integrity' attribute value +// is modified after #prepare-a-script: +// - `undefined` => not modified. +// - `null` => 'integrity' attribute is removed. +// - others => 'integrity' attribute value is set to that value. +// +// TODO: Make the arguments a dictionary for readability in the test files. +var SRIScriptTest = function(pass, name, src, integrityValue, crossoriginValue, nonce, integrityValueAfterPrepare) { this.pass = pass; this.name = "Script: " + name; this.src = src; this.integrityValue = integrityValue; this.crossoriginValue = crossoriginValue; this.nonce = nonce; + this.integrityValueAfterPrepare = integrityValueAfterPrepare; } SRIScriptTest.prototype.execute = function() { var test = async_test(this.name); var e = document.createElement("script"); e.src = this.src; - e.setAttribute("integrity", this.integrityValue); + if (this.integrityValue) { + e.setAttribute("integrity", this.integrityValue); + } if(this.crossoriginValue) { e.setAttribute("crossorigin", this.crossoriginValue); } @@ -30,6 +43,12 @@ SRIScriptTest.prototype.execute = function() { e.addEventListener("error", function() {test.done()}); } document.body.appendChild(e); + + if (this.integrityValueAfterPrepare === null) { + e.removeAttribute("integrity"); + } else if (this.integrityValueAfterPrepare !== undefined) { + e.setAttribute("integrity", this.integrityValueAfterPrepare); + } }; function set_extra_attributes(element, attrs) { diff --git a/tests/wpt/web-platform-tests/resources/test/README.md b/tests/wpt/web-platform-tests/resources/test/README.md index 185ae5f4efc..edc03ef214d 100644 --- a/tests/wpt/web-platform-tests/resources/test/README.md +++ b/tests/wpt/web-platform-tests/resources/test/README.md @@ -81,10 +81,3 @@ must include a summary of the expected results as a JSON string within a "type": "complete" } - -`testharness.js` is expected to function consistently in a number of -distinct environments. In order to verify this expectation, each functional -test may be executed under a number of distinct conditions. These conditions -are applied using WPT's "test variants" pattern. The available variants are -defined in the `variants.js` file; this file must be included before -`testharness.js`. Every test must specify at least one variant. diff --git a/tests/wpt/web-platform-tests/resources/test/conftest.py b/tests/wpt/web-platform-tests/resources/test/conftest.py index 744a80c08be..7253cac9acf 100644 --- a/tests/wpt/web-platform-tests/resources/test/conftest.py +++ b/tests/wpt/web-platform-tests/resources/test/conftest.py @@ -16,7 +16,6 @@ HERE = os.path.dirname(os.path.abspath(__file__)) WPT_ROOT = os.path.normpath(os.path.join(HERE, '..', '..')) HARNESS = os.path.join(HERE, 'harness.html') TEST_TYPES = ('functional', 'unit') -DEFAULT_VARIANTS = ["?default"] sys.path.insert(0, os.path.normpath(os.path.join(WPT_ROOT, "tools"))) import localpaths @@ -30,12 +29,12 @@ def pytest_addoption(parser): parser.addoption("--headless", action="store_true", default=False, help="run browser in headless mode") -def pytest_collect_file(path, parent): - if path.ext.lower() != '.html': +def pytest_collect_file(file_path, path, parent): + if file_path.suffix.lower() != '.html': return # Tests are organized in directories by type - test_type = os.path.relpath(str(path), HERE) + test_type = os.path.relpath(str(file_path), HERE) if os.path.sep not in test_type or ".." in test_type: # HTML files in this directory are not tests return @@ -44,8 +43,8 @@ def pytest_collect_file(path, parent): # Handle the deprecation of Node construction in pytest6 # https://docs.pytest.org/en/stable/deprecations.html#node-construction-changed-to-node-from-parent if hasattr(HTMLItem, "from_parent"): - return HTMLItem.from_parent(parent, filename=str(path), test_type=test_type) - return HTMLItem(parent, str(path), test_type) + return HTMLItem.from_parent(parent, filename=str(file_path), test_type=test_type) + return HTMLItem(parent, str(file_path), test_type) def pytest_configure(config): @@ -89,11 +88,66 @@ def resolve_uri(context, uri): return os.path.exists(os.path.join(base, path)) +def _summarize(actual): + def _scrub_stack(test_obj): + copy = dict(test_obj) + del copy['stack'] + return copy + + def _expand_status(status_obj): + for key, value in [item for item in status_obj.items()]: + # In "status" and "test" objects, the "status" value enum + # definitions are interspersed with properties for unrelated + # metadata. The following condition is a best-effort attempt to + # ignore non-enum properties. + if key != key.upper() or not isinstance(value, int): + continue + + del status_obj[key] + + if status_obj['status'] == value: + status_obj[u'status_string'] = key + + del status_obj['status'] + + return status_obj + + def _summarize_test(test_obj): + del test_obj['index'] + + assert 'phase' in test_obj + assert 'phases' in test_obj + assert 'COMPLETE' in test_obj['phases'] + assert test_obj['phase'] == test_obj['phases']['COMPLETE'] + del test_obj['phases'] + del test_obj['phase'] + + return _expand_status(_scrub_stack(test_obj)) + + def _summarize_status(status_obj): + return _expand_status(_scrub_stack(status_obj)) + + + summarized = {} + + summarized[u'summarized_status'] = _summarize_status(actual['status']) + summarized[u'summarized_tests'] = [ + _summarize_test(test) for test in actual['tests']] + summarized[u'summarized_tests'].sort(key=lambda test_obj: test_obj.get('name')) + summarized[u'summarized_asserts'] = [ + {"assert_name": assert_item["assert_name"], + "test": assert_item["test"]["name"] if assert_item["test"] else None, + "args": assert_item["args"], + "status": assert_item["status"]} for assert_item in actual["asserts"]] + summarized[u'type'] = actual['type'] + + return summarized + + class HTMLItem(pytest.Item, pytest.Collector): def __init__(self, parent, filename, test_type): self.url = parent.session.config.server.url(filename) self.type = test_type - self.variants = [] # Some tests are reliant on the WPT servers substitution functionality, # so tests must be retrieved from the server rather than read from the # file system directly. @@ -109,16 +163,12 @@ class HTMLItem(pytest.Item, pytest.Collector): parsed = html5lib.parse(markup, namespaceHTMLElements=False) name = None - includes_variants_script = False self.expected = None for element in parsed.iter(): if not name and element.tag == 'title': name = element.text continue - if element.tag == 'meta' and element.attrib.get('name') == 'variant': - self.variants.append(element.attrib.get('content')) - continue if element.tag == 'script': if element.attrib.get('id') == 'expected': try: @@ -127,23 +177,11 @@ class HTMLItem(pytest.Item, pytest.Collector): print("Failed parsing JSON in %s" % filename) raise - src = element.attrib.get('src', '') - - if 'variants.js' in src: - includes_variants_script = True - if not resolve_uri(filename, src): - raise ValueError('Could not resolve path "%s" from %s' % (src, filename)) - if not name: raise ValueError('No name found in %s add a element' % filename) elif self.type == 'functional': if not self.expected: raise ValueError('Functional tests must specify expected report data') - if not includes_variants_script: - raise ValueError('No variants script found in file %s add ' - '\'<script src="../../variants.js"></script>\'' % filename) - if len(self.variants) == 0: - self.variants = DEFAULT_VARIANTS elif self.type == 'unit' and self.expected: raise ValueError('Unit tests must not specify expected report data') @@ -181,7 +219,7 @@ class HTMLItem(pytest.Item, pytest.Collector): 'runTest("%s", "foo", arguments[0])' % self.url ) - summarized = self._summarize(copy.deepcopy(actual)) + summarized = _summarize(copy.deepcopy(actual)) print(json.dumps(summarized, indent=2)) @@ -191,21 +229,17 @@ class HTMLItem(pytest.Item, pytest.Collector): assert test[u'status_string'] == u'PASS', msg def _run_functional_test(self): - for variant in self.variants: - self._run_functional_test_variant(variant) - - def _run_functional_test_variant(self, variant): driver = self.session.config.driver server = self.session.config.server driver.url = server.url(HARNESS) - test_url = self.url + variant + test_url = self.url actual = driver.execute_async_script('runTest("%s", "foo", arguments[0])' % test_url) print(json.dumps(actual, indent=2)) - summarized = self._summarize(copy.deepcopy(actual)) + summarized = _summarize(copy.deepcopy(actual)) print(json.dumps(summarized, indent=2)) @@ -229,65 +263,7 @@ class HTMLItem(pytest.Item, pytest.Collector): assert summarized == self.expected - def _summarize(self, actual): - summarized = {} - - summarized[u'summarized_status'] = self._summarize_status(actual['status']) - summarized[u'summarized_tests'] = [ - self._summarize_test(test) for test in actual['tests']] - summarized[u'summarized_tests'].sort(key=lambda test_obj: test_obj.get('name')) - summarized[u'summarized_asserts'] = [ - {"assert_name": assert_item["assert_name"], - "test": assert_item["test"]["name"] if assert_item["test"] else None, - "args": assert_item["args"], - "status": assert_item["status"]} for assert_item in actual["asserts"]] - summarized[u'type'] = actual['type'] - - return summarized - @staticmethod def _assert_sequence(nums): if nums and len(nums) > 0: assert nums == list(range(1, nums[-1] + 1)) - - @staticmethod - def _scrub_stack(test_obj): - copy = dict(test_obj) - del copy['stack'] - return copy - - @staticmethod - def _expand_status(status_obj): - for key, value in [item for item in status_obj.items()]: - # In "status" and "test" objects, the "status" value enum - # definitions are interspersed with properties for unrelated - # metadata. The following condition is a best-effort attempt to - # ignore non-enum properties. - if key != key.upper() or not isinstance(value, int): - continue - - del status_obj[key] - - if status_obj['status'] == value: - status_obj[u'status_string'] = key - - del status_obj['status'] - - return status_obj - - @staticmethod - def _summarize_test(test_obj): - del test_obj['index'] - - assert 'phase' in test_obj - assert 'phases' in test_obj - assert 'COMPLETE' in test_obj['phases'] - assert test_obj['phase'] == test_obj['phases']['COMPLETE'] - del test_obj['phases'] - del test_obj['phase'] - - return HTMLItem._expand_status(HTMLItem._scrub_stack(test_obj)) - - @staticmethod - def _summarize_status(status_obj): - return HTMLItem._expand_status(HTMLItem._scrub_stack(status_obj)) diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup.html index 31fe19c4bce..468319fdbea 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup.html @@ -1,10 +1,7 @@ <!DOCTYPE HTML> <html> <head> -<meta name="variant" content=""> -<meta name="variant" content="?keep-promise"> <title>Test#add_cleanup - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async.html index 9d0ade4150a..07ade4b93b6 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async.html @@ -1,9 +1,7 @@ - Test#add_cleanup with Promise-returning functions - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_bad_return.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_bad_return.html index 0b45362f164..867bde2c399 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_bad_return.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_bad_return.html @@ -1,9 +1,7 @@ - Test#add_cleanup with non-thenable-returning function - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_rejection.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_rejection.html index 0528b4254f6..e51465e7eb0 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_rejection.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_rejection.html @@ -1,9 +1,7 @@ - Test#add_cleanup with Promise-returning functions (rejection handling) - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_rejection_after_load.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_rejection_after_load.html index bd8fb379c78..f9b28461000 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_rejection_after_load.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_rejection_after_load.html @@ -1,9 +1,7 @@ - Test#add_cleanup with Promise-returning functions (rejection handling following "load" event) -

                                                                      Promise Tests

                                                                      diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_timeout.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_timeout.html index 5cb04d5a8ba..429536ce6ee 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_timeout.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_async_timeout.html @@ -1,9 +1,7 @@ - Test#add_cleanup with Promise-returning functions (timeout handling) - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_bad_return.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_bad_return.html index 1f1c6fbf44b..3cfb28adf25 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_bad_return.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_bad_return.html @@ -1,10 +1,7 @@ - - Test#add_cleanup with value-returning function - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_count.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_count.html index 38fd8fd7a10..2c9b51c6d0e 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_count.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_count.html @@ -1,9 +1,7 @@ - Test#add_cleanup reported count - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_err.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_err.html index 9997281242a..60357c66ee9 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_err.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_err.html @@ -1,10 +1,7 @@ - - Test#add_cleanup: error - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_err_multi.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_err_multi.html index a489b966590..80ba1b49590 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_err_multi.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_err_multi.html @@ -1,10 +1,7 @@ - - Test#add_cleanup: multiple functions with one in error - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_sync_queue.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_sync_queue.html index 1e058f15013..0a61503cc80 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_sync_queue.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/add_cleanup_sync_queue.html @@ -1,9 +1,7 @@ - Test#add_cleanup: queuing tests - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-1.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-1.html index 41a765f5574..9de875b0f12 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-1.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-1.html @@ -1,10 +1,7 @@ - - Sample HTML5 API Tests - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-2.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-2.html index ba7a08f48fd..9af94f61acd 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-2.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-2.html @@ -1,10 +1,7 @@ - - Sample HTML5 API Tests -

                                                                      Sample HTML5 API Tests

                                                                      diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-3.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-3.html index d32b4d8bc7d..991fc6da670 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-3.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-3.html @@ -1,10 +1,7 @@ - - Sample HTML5 API Tests - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/assert-array-equals.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/assert-array-equals.html index d56419d1f31..b6460a48688 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/assert-array-equals.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/assert-array-equals.html @@ -1,6 +1,5 @@ assert_array_equals -
                                                                      diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/force_timeout.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/force_timeout.html index a43759530ad..2058fdb8621 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/force_timeout.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/force_timeout.html @@ -1,9 +1,7 @@ - Test#force_timeout -

                                                                      Test#force_timeout

                                                                      diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/generate-callback.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/generate-callback.html index f8faca62778..11d41743b3e 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/generate-callback.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/generate-callback.html @@ -1,10 +1,7 @@ - - Sample for using generate_tests to create a series of tests that share the same callback. - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_exposed_wildcard.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_exposed_wildcard.html new file mode 100644 index 00000000000..addc0eb4fc4 --- /dev/null +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_exposed_wildcard.html @@ -0,0 +1,233 @@ + + + + + idlharness: Exposed=* + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_immutable_prototype.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_immutable_prototype.html index 5625c7f5530..5fe05915b05 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_immutable_prototype.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_immutable_prototype.html @@ -2,10 +2,7 @@ - - idlharness: Immutable prototypes - @@ -13,13 +10,17 @@ diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_primary_interface_of.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_primary_interface_of.html index ac4c0b000eb..309de60bb79 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_primary_interface_of.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_primary_interface_of.html @@ -2,10 +2,7 @@ - - idlharness: Primary interface - @@ -17,12 +14,20 @@ objects but skipped for "untested" interface objects.

                                                                      diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_attribute.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_attribute.html index 9a08dd400c1..2c94061fc1e 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_attribute.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_attribute.html @@ -2,10 +2,7 @@ - - idlharness: namespace attribute - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_operation.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_operation.html index 6798fe8cfc6..da70c8fa31c 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_operation.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_operation.html @@ -2,10 +2,7 @@ - - idlharness: namespace operation - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_partial_namespace.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_partial_namespace.html index c68adfa9417..eabdcd10a96 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_partial_namespace.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlNamespace/test_partial_namespace.html @@ -3,10 +3,7 @@ - - idlharness: Partial namespace - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/iframe-callback.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/iframe-callback.html index 403628fa91f..f49d0aa6b80 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/iframe-callback.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/iframe-callback.html @@ -1,10 +1,7 @@ - - Example with iframe that notifies containing document via callbacks - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/iframe-consolidate-errors.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/iframe-consolidate-errors.html index e382c6e6fd9..ef9b8702eca 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/iframe-consolidate-errors.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/iframe-consolidate-errors.html @@ -1,10 +1,7 @@ - - Example with iframe that consolidates errors via fetch_tests_from_window - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/log-insertion.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/log-insertion.html index aee3c002c94..9a63c3dbded 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/log-insertion.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/log-insertion.html @@ -1,8 +1,5 @@ Log insertion - - - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/order.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/order.html index ec9978d8980..686383861a0 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/order.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/order.html @@ -1,10 +1,7 @@ - - Ordering - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/promise-async.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/promise-async.html index d4c62794c4f..fa82665cf00 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/promise-async.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/promise-async.html @@ -1,9 +1,7 @@ - Async Tests and Promises -

                                                                      Async Tests and Promises

                                                                      diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/promise-with-sync.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/promise-with-sync.html index 234f5476e9c..e8e680a9c76 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/promise-with-sync.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/promise-with-sync.html @@ -1,9 +1,7 @@ - Promise Tests and Synchronous Tests -

                                                                      Promise Tests

                                                                      diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/promise.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/promise.html index 9db1dec0f9e..f35feb0e218 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/promise.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/promise.html @@ -1,9 +1,7 @@ - Promise Tests -

                                                                      Promise Tests

                                                                      diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/queue.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/queue.html index 4ea32a2bc8e..0c721286ec2 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/queue.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/queue.html @@ -1,9 +1,7 @@ - Test queuing synchronous tests - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/setup-worker-service.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/setup-worker-service.html index dd9d9f54e07..9f24adac2d0 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/setup-worker-service.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/setup-worker-service.html @@ -1,9 +1,7 @@ - Setup function in a service worker - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/single-page-test-fail.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/single-page-test-fail.html index 9169a5a54e2..8bbd530c48d 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/single-page-test-fail.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/single-page-test-fail.html @@ -1,8 +1,5 @@ - - Example with file_is_test (should fail) - -
                                                                      diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/step_wait_func.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/step_wait_func.html index b9a488b27f0..9fed18a3e20 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/step_wait_func.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/step_wait_func.html @@ -1,6 +1,5 @@ Tests for step_wait_func and step_wait_func_done -
                                                                      diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/task-scheduling-promise-test.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/task-scheduling-promise-test.html index fb4cc2dd27d..9d8e5c11cc9 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/task-scheduling-promise-test.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/task-scheduling-promise-test.html @@ -1,7 +1,5 @@ - testharness.js - task scheduling - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/uncaught-exception-ignore.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/uncaught-exception-ignore.html index b6d30eab0f0..6bd0ddbb0d2 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/uncaught-exception-ignore.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/uncaught-exception-ignore.html @@ -1,10 +1,7 @@ - - Harness Ignoring Uncaught Exception - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-allow.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-allow.html index 33543d0b4e7..ba28d4914f2 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-allow.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-allow.html @@ -1,10 +1,7 @@ - - Dedicated Worker Tests - Allowed Uncaught Exception - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-single.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-single.html index 760151832e8..486e067114c 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-single.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-single.html @@ -1,10 +1,7 @@ - - Dedicated Worker Tests - Uncaught Exception in Single-Page Test - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.sub.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.sub.html index 5573b1d5273..efd703c7601 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.sub.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.sub.html @@ -1,10 +1,7 @@ - - Dedicated Worker Tests - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-service.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-service.html index c271e6599c0..2e07746e622 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-service.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-service.html @@ -1,9 +1,7 @@ - Example with a service worker - diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-shared.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-shared.html index 5d098de9105..e26f17dec27 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-shared.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-shared.html @@ -1,10 +1,7 @@ - - Example with a shared worker - diff --git a/tests/wpt/web-platform-tests/resources/test/tox.ini b/tests/wpt/web-platform-tests/resources/test/tox.ini index a9c07c3d22a..cc07e3b028c 100644 --- a/tests/wpt/web-platform-tests/resources/test/tox.ini +++ b/tests/wpt/web-platform-tests/resources/test/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py36,py37,py38,py39 +envlist = py36,py37,py38,py39,py310 skipsdist=True [testenv] diff --git a/tests/wpt/web-platform-tests/resources/test/variants.js b/tests/wpt/web-platform-tests/resources/test/variants.js deleted file mode 100644 index c40085a329f..00000000000 --- a/tests/wpt/web-platform-tests/resources/test/variants.js +++ /dev/null @@ -1,59 +0,0 @@ -(function() { - 'use strict'; - // NOTE: When new default variants are added DEFAULT_VARIANTS in conftest.py - // must also be updated - var variants = { - /** - * Tests are executed in the absence of the global Promise constructor by - * default in order to verify support for the Server browser engine. - * - * https://github.com/web-platform-tests/wpt/issues/6266 - */ - 'default': { - description: 'Global Promise constructor removed.', - apply: function() { - delete window.Promise; - } - }, - /** - * This variant allows for testing functionality that is fundamentally - * dependent on Promise support, e.g. the `promise_test` function - */ - 'keep-promise': { - description: 'No modification of global environment.', - apply: function() {} - } - }; - var match = window.location.search.match(/\?(.*)$/); - var variantName = (match && match[1]) || 'default'; - - if (!Object.hasOwnProperty.call(variants, variantName)) { - window.location = 'javascript:"Unrecognized variant: ' + variantName + '";'; - document.close(); - return; - } - - if (typeof test === 'function') { - test(function() { - assert_unreached('variants.js must be included before testharness.js'); - }); - } - var variant = variants[variantName]; - - var variantNode = document.createElement('div'); - variantNode.innerHTML = '

                                                                      This testharness.js test was executed with ' + - 'the variant named, "' + variantName + '". ' + variant.description + - '

                                                                      Refer to the test harness README file for more information.

                                                                      '; - function onReady() { - if (document.readyState !== 'complete') { - return; - } - - document.body.insertBefore(variantNode, document.body.firstChild); - } - - onReady(); - document.addEventListener('readystatechange', onReady); - - variant.apply(); -}()); diff --git a/tests/wpt/web-platform-tests/resources/test/wptserver.py b/tests/wpt/web-platform-tests/resources/test/wptserver.py index abe30ad3ed2..1f913dd96d0 100644 --- a/tests/wpt/web-platform-tests/resources/test/wptserver.py +++ b/tests/wpt/web-platform-tests/resources/test/wptserver.py @@ -38,7 +38,7 @@ class WPTServer(object): time.sleep(2 ** retry) exit_code = self.proc.poll() if exit_code != None: - logging.warn('Command "%s" exited with %s', ' '.join(wptserve_cmd), exit_code) + logging.warning('Command "%s" exited with %s', ' '.join(wptserve_cmd), exit_code) break try: urllib.request.urlopen(self.base_url, timeout=1) diff --git a/tests/wpt/web-platform-tests/resources/testdriver-actions.js b/tests/wpt/web-platform-tests/resources/testdriver-actions.js index ef097961fa7..3e5ba74b4ca 100644 --- a/tests/wpt/web-platform-tests/resources/testdriver-actions.js +++ b/tests/wpt/web-platform-tests/resources/testdriver-actions.js @@ -29,7 +29,7 @@ * .keyDown("p") * .keyUp("p"); * - * actions.send(); + * await actions.send(); * * @param {number} [defaultTickDuration] - The default duration of a * tick. Be default this is set ot 16ms, which is one frame time diff --git a/tests/wpt/web-platform-tests/resources/testdriver.js b/tests/wpt/web-platform-tests/resources/testdriver.js index 0737e64a50b..d23f9fb83b2 100644 --- a/tests/wpt/web-platform-tests/resources/testdriver.js +++ b/tests/wpt/web-platform-tests/resources/testdriver.js @@ -78,8 +78,8 @@ * Trigger user interaction in order to grant additional privileges to * a provided function. * - * See `triggered by user activation - * `_. + * See `Tracking user activation + * `_. * * @example * var mediaElement = document.createElement('video'); @@ -184,6 +184,42 @@ return window.test_driver_internal.delete_all_cookies(context); }, + /** + * Get details for all cookies in the current context. + * See https://w3c.github.io/webdriver/#get-all-cookies + * + * @param {WindowProxy} context - Browsing context in which + * to run the call, or null for the current + * browsing context. + * + * @returns {Promise} Returns an array of cookies objects as defined in the spec: + * https://w3c.github.io/webdriver/#cookies + */ + get_all_cookies: function(context=null) { + return window.test_driver_internal.get_all_cookies(context); + }, + + /** + * Get details for a cookie in the current context by name if it exists. + * See https://w3c.github.io/webdriver/#get-named-cookie + * + * @param {String} name - The name of the cookie to get. + * @param {WindowProxy} context - Browsing context in which + * to run the call, or null for the current + * browsing context. + * + * @returns {Promise} Returns the matching cookie as defined in the spec: + * https://w3c.github.io/webdriver/#cookies + * Rejected if no such cookie exists. + */ + get_named_cookie: async function(name, context=null) { + let cookie = await window.test_driver_internal.get_named_cookie(name, context); + if (!cookie) { + throw new Error("no such cookie"); + } + return cookie; + }, + /** * Send keys to an element. * @@ -637,6 +673,14 @@ return Promise.reject(new Error("unimplemented")); }, + get_all_cookies: function(context=null) { + return Promise.reject(new Error("unimplemented")); + }, + + get_named_cookie: function(name, context=null) { + return Promise.reject(new Error("unimplemented")); + }, + send_keys: function(element, keys) { if (this.in_automation) { return Promise.reject(new Error('Not implemented')); diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js index ca0a92a89d9..7ac363217bd 100644 --- a/tests/wpt/web-platform-tests/resources/testharness.js +++ b/tests/wpt/web-platform-tests/resources/testharness.js @@ -126,7 +126,7 @@ } catch (e) {} } } - if (supports_post_message(w) && w !== self) { + if (w !== self) { w.postMessage(message_arg, "*"); } }); @@ -424,6 +424,53 @@ } }; + /* + * Shadow realms. + * https://github.com/tc39/proposal-shadowrealm + * + * This class is used as the test_environment when testharness is running + * inside a shadow realm. + */ + function ShadowRealmTestEnvironment() { + WorkerTestEnvironment.call(this); + this.all_loaded = false; + this.on_loaded_callback = null; + } + + ShadowRealmTestEnvironment.prototype = Object.create(WorkerTestEnvironment.prototype); + + /** + * Signal to the test environment that the tests are ready and the on-loaded + * callback should be run. + * + * Shadow realms are not *really* a DOM context: they have no `onload` or similar + * event for us to use to set up the test environment; so, instead, this method + * is manually triggered from the incubating realm + * + * @param {Function} message_destination - a function that receives JSON-serializable + * data to send to the incubating realm, in the same format as used by RemoteContext + */ + ShadowRealmTestEnvironment.prototype.begin = function(message_destination) { + if (this.all_loaded) { + throw new Error("Tried to start a shadow realm test environment after it has already started"); + } + var fakeMessagePort = {}; + fakeMessagePort.postMessage = message_destination; + this._add_message_port(fakeMessagePort); + this.all_loaded = true; + if (this.on_loaded_callback) { + this.on_loaded_callback(); + } + }; + + ShadowRealmTestEnvironment.prototype.add_on_loaded_callback = function(callback) { + if (this.all_loaded) { + callback(); + } else { + this.on_loaded_callback = callback; + } + }; + /* * JavaScript shells. * @@ -488,6 +535,15 @@ global_scope instanceof WorkerGlobalScope) { return new DedicatedWorkerTestEnvironment(); } + /* Shadow realm global objects are _ordinary_ objects (i.e. their prototype is + * Object) so we don't have a nice `instanceof` test to use; instead, we + * check if the there is a GLOBAL.isShadowRealm() property + * on the global object. that was set by the test harness when it + * created the ShadowRealm. + */ + if (global_scope.GLOBAL && global_scope.GLOBAL.isShadowRealm()) { + return new ShadowRealmTestEnvironment(); + } return new ShellTestEnvironment(); } @@ -648,7 +704,7 @@ /** * Create a promise test. * - * Promise tests are tests which are represeted by a promise + * Promise tests are tests which are represented by a promise * object. If the promise is fulfilled the test passes, if it's * rejected the test fails, otherwise the test passes. * @@ -1071,7 +1127,7 @@ * * Typically this function is called implicitly on page load; it's * only necessary for users to call this when either the - * ``explict_done`` or ``single_page`` properties have been set + * ``explicit_done`` or ``single_page`` properties have been set * via the :js:func:`setup` function. * * For single page tests this marks the test as complete and sets its status. @@ -2663,19 +2719,6 @@ * to reduce intermittents without compromising test execution * speed when the condition is quickly met. * - * @example - * async_test(t => { - * const popup = window.open("resources/coop-coep.py?coop=same-origin&coep=&navigate=about:blank"); - * t.add_cleanup(() => popup.close()); - * assert_equals(window, popup.opener); - * - * popup.onload = t.step_func(() => { - * assert_true(popup.location.href.endsWith("&navigate=about:blank")); - * // Use step_wait_func_done as about:blank cannot message back. - * t.step_wait_func_done(() => popup.location.href === "about:blank"); - * }); - * }, "Navigating a popup to about:blank"); - * * @param {Function} cond A function taking no arguments and * returning a boolean. The callback is called * when this function returns true. @@ -2718,6 +2761,19 @@ * to reduce intermittents without compromising test execution speed * when the condition is quickly met. * + * @example + * async_test(t => { + * const popup = window.open("resources/coop-coep.py?coop=same-origin&coep=&navigate=about:blank"); + * t.add_cleanup(() => popup.close()); + * assert_equals(window, popup.opener); + * + * popup.onload = t.step_func(() => { + * assert_true(popup.location.href.endsWith("&navigate=about:blank")); + * // Use step_wait_func_done as about:blank cannot message back. + * t.step_wait_func_done(() => popup.location.href === "about:blank"); + * }); + * }, "Navigating a popup to about:blank"); + * * @param {Function} cond A function taking no arguments and * returning a boolean. The callback is called * when this function returns true. @@ -3766,7 +3822,9 @@ return; } - this.pending_remotes.push(this.create_remote_window(remote)); + var remoteContext = this.create_remote_window(remote); + this.pending_remotes.push(remoteContext); + return remoteContext.done; }; /** @@ -3781,14 +3839,53 @@ * @param {Window} window - The window to fetch tests from. */ function fetch_tests_from_window(window) { - tests.fetch_tests_from_window(window); + return tests.fetch_tests_from_window(window); } expose(fetch_tests_from_window, 'fetch_tests_from_window'); + /** + * Get test results from a shadow realm and include them in the current test. + * + * @param {ShadowRealm} realm - A shadow realm also running the test harness + * @returns {Promise} - A promise that's resolved once all the remote tests are complete. + */ + function fetch_tests_from_shadow_realm(realm) { + var chan = new MessageChannel(); + function receiveMessage(msg_json) { + chan.port1.postMessage(JSON.parse(msg_json)); + } + var done = tests.fetch_tests_from_worker(chan.port2); + realm.evaluate("begin_shadow_realm_tests")(receiveMessage); + chan.port2.start(); + return done; + } + expose(fetch_tests_from_shadow_realm, 'fetch_tests_from_shadow_realm'); + + /** + * Begin running tests in this shadow realm test harness. + * + * To be called after all tests have been loaded; it is an error to call + * this more than once or in a non-Shadow Realm environment + * + * @param {Function} postMessage - A function to send test updates to the + * incubating realm-- accepts JSON-encoded messages in the format used by + * RemoteContext + */ + function begin_shadow_realm_tests(postMessage) { + if (!(test_environment instanceof ShadowRealmTestEnvironment)) { + throw new Error("begin_shadow_realm_tests called in non-Shadow Realm environment"); + } + + test_environment.begin(function (msg) { + postMessage(JSON.stringify(msg)); + }); + } + expose(begin_shadow_realm_tests, 'begin_shadow_realm_tests'); + /** * Timeout the tests. * - * This only has an effect when ``explict_timeout`` has been set + * This only has an effect when ``explicit_timeout`` has been set * in :js:func:`setup`. In other cases any call is a no-op. * */ @@ -3963,7 +4060,7 @@ Output.prototype.show_status = function() { if (this.phase < this.STARTED) { - this.init(); + this.init({}); } if (!this.enabled || this.phase === this.COMPLETE) { return; @@ -4416,14 +4513,6 @@ const get_stack = function() { var stack = new Error().stack; - // IE11 does not initialize 'Error.stack' until the object is thrown. - if (!stack) { - try { - throw new Error(); - } catch (e) { - stack = e.stack; - } - } // 'Error.stack' is not supported in all browsers/versions if (!stack) { @@ -4652,43 +4741,6 @@ return "Untitled"; } - function supports_post_message(w) - { - var supports; - var type; - // Given IE implements postMessage across nested iframes but not across - // windows or tabs, you can't infer cross-origin communication from the presence - // of postMessage on the current window object only. - // - // Touching the postMessage prop on a window can throw if the window is - // not from the same origin AND post message is not supported in that - // browser. So just doing an existence test here won't do, you also need - // to wrap it in a try..catch block. - try { - type = typeof w.postMessage; - if (type === "function") { - supports = true; - } - - // IE8 supports postMessage, but implements it as a host object which - // returns "object" as its `typeof`. - else if (type === "object") { - supports = true; - } - - // This is the case where postMessage isn't supported AND accessing a - // window property across origins does NOT throw (e.g. old Safari browser). - else { - supports = false; - } - } catch (e) { - // This is the case where postMessage isn't supported AND accessing a - // window property across origins throws (e.g. old Firefox browser). - supports = false; - } - return supports; - } - /** * Setup globals */ diff --git a/tests/wpt/web-platform-tests/resources/webidl2/lib/VERSION.md b/tests/wpt/web-platform-tests/resources/webidl2/lib/VERSION.md index 10bdc008209..5a3726c6c00 100644 --- a/tests/wpt/web-platform-tests/resources/webidl2/lib/VERSION.md +++ b/tests/wpt/web-platform-tests/resources/webidl2/lib/VERSION.md @@ -1 +1 @@ -Currently using webidl2.js@1fd6709ef9311f2ea0ed4ff0016ecf6f5d615104. +Currently using webidl2.js@6889aee6fc7d65915ab1267825248157dbc50486. diff --git a/tests/wpt/web-platform-tests/resources/webidl2/lib/webidl2.js b/tests/wpt/web-platform-tests/resources/webidl2/lib/webidl2.js index 2861354e47d..7161def899c 100644 --- a/tests/wpt/web-platform-tests/resources/webidl2/lib/webidl2.js +++ b/tests/wpt/web-platform-tests/resources/webidl2/lib/webidl2.js @@ -7,7 +7,7 @@ exports["WebIDL2"] = factory(); else root["WebIDL2"] = factory(); -})(globalThis, function() { +})(globalThis, () => { return /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ([ @@ -50,6 +50,7 @@ __webpack_require__.r(__webpack_exports__); * @param {Tokeniser} tokeniser * @param {object} options * @param {boolean} [options.concrete] + * @param {Function[]} [options.productions] */ function parseByTokens(tokeniser, options) { const source = tokeniser.source; @@ -144,11 +145,12 @@ function parseByTokens(tokeniser, options) { * @param {*} [options.sourceName] * @param {boolean} [options.concrete] * @param {Function[]} [options.productions] - * @return {import("./productions/base").Base[]} + * @return {import("./productions/base.js").Base[]} */ function parse(str, options = {}) { const tokeniser = new _tokeniser_js__WEBPACK_IMPORTED_MODULE_0__.Tokeniser(str); if (typeof options.sourceName !== "undefined") { + // @ts-ignore (See Tokeniser.source in supplement.d.ts) tokeniser.source.name = options.sourceName; } return parseByTokens(tokeniser, options); @@ -161,11 +163,11 @@ function parse(str, options = {}) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "typeNameKeywords": () => (/* binding */ typeNameKeywords), -/* harmony export */ "stringTypes": () => (/* binding */ stringTypes), -/* harmony export */ "argumentNameKeywords": () => (/* binding */ argumentNameKeywords), /* harmony export */ "Tokeniser": () => (/* binding */ Tokeniser), -/* harmony export */ "WebIDLParseError": () => (/* binding */ WebIDLParseError) +/* harmony export */ "WebIDLParseError": () => (/* binding */ WebIDLParseError), +/* harmony export */ "argumentNameKeywords": () => (/* binding */ argumentNameKeywords), +/* harmony export */ "stringTypes": () => (/* binding */ stringTypes), +/* harmony export */ "typeNameKeywords": () => (/* binding */ typeNameKeywords) /* harmony export */ }); /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3); /* harmony import */ var _productions_helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); @@ -553,12 +555,16 @@ function contextAsText(node) { * @typedef {object} WebIDL2ErrorOptions * @property {"error" | "warning"} [level] * @property {Function} [autofix] + * @property {string} [ruleName] * * @typedef {ReturnType} WebIDLErrorData * * @param {string} message error message + * @param {*} position + * @param {*} current + * @param {*} message * @param {"Syntax" | "Validation"} kind error type - * @param {WebIDL2ErrorOptions} [options] + * @param {WebIDL2ErrorOptions=} options */ function error( source, @@ -577,6 +583,12 @@ function error( : source.slice(Math.max(position + count, 0), position); } + /** + * @param {import("./tokeniser.js").Token[]} inputs + * @param {object} [options] + * @param {boolean} [options.precedes] + * @returns + */ function tokensToText(inputs, { precedes } = {}) { const text = inputs.map((t) => t.trivia + t.value).join(""); const nextToken = source[position]; @@ -667,21 +679,21 @@ function validationError( __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "unescape": () => (/* binding */ unescape), -/* harmony export */ "list": () => (/* binding */ list), -/* harmony export */ "const_value": () => (/* binding */ const_value), -/* harmony export */ "const_data": () => (/* binding */ const_data), -/* harmony export */ "primitive_type": () => (/* binding */ primitive_type), /* harmony export */ "argument_list": () => (/* binding */ argument_list), -/* harmony export */ "type_with_extended_attributes": () => (/* binding */ type_with_extended_attributes), -/* harmony export */ "return_type": () => (/* binding */ return_type), -/* harmony export */ "stringifier": () => (/* binding */ stringifier), +/* harmony export */ "autoParenter": () => (/* binding */ autoParenter), +/* harmony export */ "autofixAddExposedWindow": () => (/* binding */ autofixAddExposedWindow), +/* harmony export */ "const_data": () => (/* binding */ const_data), +/* harmony export */ "const_value": () => (/* binding */ const_value), +/* harmony export */ "findLastIndex": () => (/* binding */ findLastIndex), +/* harmony export */ "getFirstToken": () => (/* binding */ getFirstToken), /* harmony export */ "getLastIndentation": () => (/* binding */ getLastIndentation), /* harmony export */ "getMemberIndentation": () => (/* binding */ getMemberIndentation), -/* harmony export */ "autofixAddExposedWindow": () => (/* binding */ autofixAddExposedWindow), -/* harmony export */ "getFirstToken": () => (/* binding */ getFirstToken), -/* harmony export */ "findLastIndex": () => (/* binding */ findLastIndex), -/* harmony export */ "autoParenter": () => (/* binding */ autoParenter) +/* harmony export */ "list": () => (/* binding */ list), +/* harmony export */ "primitive_type": () => (/* binding */ primitive_type), +/* harmony export */ "return_type": () => (/* binding */ return_type), +/* harmony export */ "stringifier": () => (/* binding */ stringifier), +/* harmony export */ "type_with_extended_attributes": () => (/* binding */ type_with_extended_attributes), +/* harmony export */ "unescape": () => (/* binding */ unescape) /* harmony export */ }); /* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); /* harmony import */ var _argument_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); @@ -705,7 +717,7 @@ function unescape(identifier) { /** * Parses comma-separated list - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser * @param {object} args * @param {Function} args.parser parser function for each item * @param {boolean} [args.allowDangler] whether to allow dangling comma @@ -734,7 +746,7 @@ function list(tokeniser, { parser, allowDangler, listName = "list" }) { } /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ function const_value(tokeniser) { return ( @@ -774,7 +786,7 @@ function const_data({ type, value }) { } /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ function primitive_type(tokeniser) { function integer_type() { @@ -797,7 +809,7 @@ function primitive_type(tokeniser) { } const { source } = tokeniser; - const num_type = integer_type(tokeniser) || decimal_type(tokeniser); + const num_type = integer_type() || decimal_type(); if (num_type) return num_type; const base = tokeniser.consume( "bigint", @@ -812,7 +824,7 @@ function primitive_type(tokeniser) { } /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ function argument_list(tokeniser) { return list(tokeniser, { @@ -822,8 +834,8 @@ function argument_list(tokeniser) { } /** - * @param {import("../tokeniser").Tokeniser} tokeniser - * @param {string} typeName + * @param {import("../tokeniser.js").Tokeniser} tokeniser + * @param {string=} typeName (TODO: See Type.type for more details) */ function type_with_extended_attributes(tokeniser, typeName) { const extAttrs = _extended_attributes_js__WEBPACK_IMPORTED_MODULE_2__.ExtendedAttributes.parse(tokeniser); @@ -833,8 +845,8 @@ function type_with_extended_attributes(tokeniser, typeName) { } /** - * @param {import("../tokeniser").Tokeniser} tokeniser - * @param {string} typeName + * @param {import("../tokeniser.js").Tokeniser} tokeniser + * @param {string=} typeName (TODO: See Type.type for more details) */ function return_type(tokeniser, typeName) { const typ = _type_js__WEBPACK_IMPORTED_MODULE_0__.Type.parse(tokeniser, typeName || "return-type"); @@ -853,7 +865,7 @@ function return_type(tokeniser, typeName) { } /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ function stringifier(tokeniser) { const special = tokeniser.consume("stringifier"); @@ -890,8 +902,7 @@ function getMemberIndentation(parentTrivia) { } /** - * @param {object} def - * @param {import("./extended-attributes.js").ExtendedAttributes} def.extAttrs + * @param {import("./interface.js").Interface} def */ function autofixAddExposedWindow(def) { return () => { @@ -945,7 +956,7 @@ function findLastIndex(array, predicate) { /** * Returns a proxy that auto-assign `parent` field. - * @template T + * @template {Record} T * @param {T} data * @param {*} [parent] The object that will be assigned to `parent`. * If absent, it will be `data` by default. @@ -961,10 +972,10 @@ function autoParenter(data, parent) { // `autoParenter(parse())` where the function may return nothing. return data; } - return new Proxy(data, { + const proxy = new Proxy(data, { get(target, p) { const value = target[p]; - if (Array.isArray(value)) { + if (Array.isArray(value) && p !== "source") { // Wraps the array so that any added items will also automatically // get their `parent` values. return autoParenter(value, target); @@ -972,6 +983,7 @@ function autoParenter(data, parent) { return value; }, set(target, p, value) { + // @ts-ignore https://github.com/microsoft/TypeScript/issues/47357 target[p] = value; if (!value) { return true; @@ -988,6 +1000,7 @@ function autoParenter(data, parent) { return true; }, }); + return proxy; } @@ -1013,7 +1026,7 @@ __webpack_require__.r(__webpack_exports__); /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser * @param {string} typeName */ function generic_type(tokeniser, typeName) { @@ -1081,7 +1094,7 @@ function generic_type(tokeniser, typeName) { } /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ function type_suffix(tokeniser, obj) { const nullable = tokeniser.consume("?"); @@ -1092,7 +1105,7 @@ function type_suffix(tokeniser, obj) { } /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser * @param {string} typeName */ function single_type(tokeniser, typeName) { @@ -1119,7 +1132,7 @@ function single_type(tokeniser, typeName) { } /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser * @param {string} type */ function union_type(tokeniser, type) { @@ -1155,7 +1168,7 @@ function union_type(tokeniser, type) { class Type extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser * @param {string} typeName */ static parse(tokeniser, typeName) { @@ -1165,7 +1178,7 @@ class Type extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { constructor({ source, tokens }) { super({ source, tokens }); Object.defineProperty(this, "subtype", { value: [], writable: true }); - this.extAttrs = new _extended_attributes_js__WEBPACK_IMPORTED_MODULE_5__.ExtendedAttributes({}); + this.extAttrs = new _extended_attributes_js__WEBPACK_IMPORTED_MODULE_5__.ExtendedAttributes({ source, tokens: {} }); } get generic() { @@ -1235,7 +1248,7 @@ for more information.`; } } - /** @param {import("../writer.js").Writer)} w */ + /** @param {import("../writer.js").Writer} w */ write(w) { const type_body = () => { if (this.union || this.generic) { @@ -1256,7 +1269,12 @@ for more information.`; this.tokens.base.value, w.token(this.tokens.postfix), ]), - { unescaped: this.idlType, context: this } + { + unescaped: /** @type {string} (because it's not union) */ ( + this.idlType + ), + context: this, + } ); return w.ts.wrap([w.ts.trivia(firstToken.trivia), ref]); }; @@ -1287,8 +1305,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Base": () => (/* binding */ Base) /* harmony export */ }); -// @ts-check - class Base { /** * @param {object} initializer @@ -1328,11 +1344,9 @@ class Base { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "idlTypeIncludesDictionary": () => (/* binding */ idlTypeIncludesDictionary), -/* harmony export */ "dictionaryIncludesRequiredField": () => (/* binding */ dictionaryIncludesRequiredField) +/* harmony export */ "dictionaryIncludesRequiredField": () => (/* binding */ dictionaryIncludesRequiredField), +/* harmony export */ "idlTypeIncludesDictionary": () => (/* binding */ idlTypeIncludesDictionary) /* harmony export */ }); -// @ts-check - /** * @typedef {import("../productions/dictionary.js").Dictionary} Dictionary * @@ -1423,8 +1437,9 @@ function dictionaryIncludesRequiredField(dict, defs) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "SimpleExtendedAttribute": () => (/* binding */ SimpleExtendedAttribute), -/* harmony export */ "ExtendedAttributes": () => (/* binding */ ExtendedAttributes) +/* harmony export */ "ExtendedAttributeParameters": () => (/* binding */ ExtendedAttributeParameters), +/* harmony export */ "ExtendedAttributes": () => (/* binding */ ExtendedAttributes), +/* harmony export */ "SimpleExtendedAttribute": () => (/* binding */ SimpleExtendedAttribute) /* harmony export */ }); /* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); /* harmony import */ var _array_base_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9); @@ -1438,7 +1453,7 @@ __webpack_require__.r(__webpack_exports__); /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser * @param {string} tokenName */ function tokens(tokeniser, tokenName) { @@ -1459,7 +1474,9 @@ const shouldBeLegacyPrefixed = [ ]; const renamedLegacies = new Map([ - ...shouldBeLegacyPrefixed.map((name) => [name, `Legacy${name}`]), + .../** @type {[string, string][]} */ ( + shouldBeLegacyPrefixed.map((name) => [name, `Legacy${name}`]) + ), ["NamedConstructor", "LegacyFactoryFunction"], ["OverrideBuiltins", "LegacyOverrideBuiltIns"], ["TreatNullAs", "LegacyNullToEmptyString"], @@ -1467,7 +1484,7 @@ const renamedLegacies = new Map([ /** * This will allow a set of extended attribute values to be parsed. - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ function extAttrListItems(tokeniser) { for (const syntax of extAttrValueSyntax) { @@ -1483,7 +1500,7 @@ function extAttrListItems(tokeniser) { class ExtendedAttributeParameters extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { const tokens = { assign: tokeniser.consume("=") }; @@ -1533,7 +1550,7 @@ class ExtendedAttributeParameters extends _base_js__WEBPACK_IMPORTED_MODULE_0__. return null; } - /** @param {import("../writer.js").Writer)} w */ + /** @param {import("../writer.js").Writer} w */ write(w) { const { rhsType } = this; return w.ts.wrap([ @@ -1553,7 +1570,7 @@ class ExtendedAttributeParameters extends _base_js__WEBPACK_IMPORTED_MODULE_0__. class SimpleExtendedAttribute extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { const name = tokeniser.consumeKind("identifier"); @@ -1627,7 +1644,7 @@ information.`; } } - /** @param {import("../writer.js").Writer)} w */ + /** @param {import("../writer.js").Writer} w */ write(w) { return w.ts.wrap([ w.ts.trivia(this.tokens.name.trivia), @@ -1659,13 +1676,13 @@ function renameLegacyExtendedAttribute(extAttr) { // seems to be used class ExtendedAttributes extends _array_base_js__WEBPACK_IMPORTED_MODULE_1__.ArrayBase { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { const tokens = {}; tokens.open = tokeniser.consume("["); - if (!tokens.open) return new ExtendedAttributes({}); const ret = new ExtendedAttributes({ source: tokeniser.source, tokens }); + if (!tokens.open) return ret; ret.push( ...(0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.list)(tokeniser, { parser: SimpleExtendedAttribute.parse, @@ -1695,7 +1712,7 @@ class ExtendedAttributes extends _array_base_js__WEBPACK_IMPORTED_MODULE_1__.Arr } } - /** @param {import("../writer.js").Writer)} w */ + /** @param {import("../writer.js").Writer} w */ write(w) { if (!this.length) return ""; return w.ts.wrap([ @@ -1715,8 +1732,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ArrayBase": () => (/* binding */ ArrayBase) /* harmony export */ }); -// @ts-check - class ArrayBase extends Array { constructor({ source, tokens }) { super(); @@ -1735,19 +1750,17 @@ class ArrayBase extends Array { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "WrappedToken": () => (/* binding */ WrappedToken), -/* harmony export */ "Eof": () => (/* binding */ Eof) +/* harmony export */ "Eof": () => (/* binding */ Eof), +/* harmony export */ "WrappedToken": () => (/* binding */ WrappedToken) /* harmony export */ }); /* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); -// @ts-check - class WrappedToken extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser * @param {string} type */ static parser(tokeniser, type) { @@ -1766,7 +1779,7 @@ class WrappedToken extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { return (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.unescape)(this.tokens.value.value); } - /** @param {import("../writer").Writer} w */ + /** @param {import("../writer.js").Writer} w */ write(w) { return w.ts.wrap([ w.token(this.tokens.value), @@ -1777,7 +1790,7 @@ class WrappedToken extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { class Eof extends WrappedToken { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { const value = tokeniser.consumeKind("eof"); @@ -1807,8 +1820,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _tokeniser_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2); /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3); /* harmony import */ var _validators_helpers_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7); -// @ts-check - @@ -1819,7 +1830,7 @@ __webpack_require__.r(__webpack_exports__); class Argument extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { const start_position = tokeniser.position; @@ -1975,7 +1986,7 @@ __webpack_require__.r(__webpack_exports__); class Default extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { const assign = tokeniser.consume("="); @@ -2022,7 +2033,7 @@ class Default extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { return (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.const_data)(this.expression[0]).negative; } - /** @param {import("../writer.js").Writer)} w */ + /** @param {import("../writer.js").Writer} w */ write(w) { return w.ts.wrap([ w.token(this.tokens.assign), @@ -2156,8 +2167,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _validators_helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7); /* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6); /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4); -// @ts-check - @@ -2283,7 +2292,8 @@ class Attribute extends _base_js__WEBPACK_IMPORTED_MODULE_2__.Base { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "Enum": () => (/* binding */ Enum) +/* harmony export */ "Enum": () => (/* binding */ Enum), +/* harmony export */ "EnumValue": () => (/* binding */ EnumValue) /* harmony export */ }); /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var _token_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); @@ -2294,7 +2304,7 @@ __webpack_require__.r(__webpack_exports__); class EnumValue extends _token_js__WEBPACK_IMPORTED_MODULE_1__.WrappedToken { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { const value = tokeniser.consumeKind("string"); @@ -2326,7 +2336,7 @@ class EnumValue extends _token_js__WEBPACK_IMPORTED_MODULE_1__.WrappedToken { class Enum extends _base_js__WEBPACK_IMPORTED_MODULE_2__.Base { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { /** @type {Base["tokens"]} */ @@ -2394,14 +2404,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); -// @ts-check - class Includes extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { const target = tokeniser.consumeKind("identifier"); @@ -2464,7 +2472,7 @@ __webpack_require__.r(__webpack_exports__); class Typedef extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { /** @type {Base["tokens"]} */ @@ -2620,7 +2628,7 @@ __webpack_require__.r(__webpack_exports__); /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ function static_member(tokeniser) { const special = tokeniser.consume("static"); @@ -2634,7 +2642,7 @@ function static_member(tokeniser) { class Interface extends _container_js__WEBPACK_IMPORTED_MODULE_0__.Container { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser, base, { partial = null } = {}) { const tokens = { partial, base }; @@ -2748,7 +2756,10 @@ function autofixConstructor(interfaceDef, constructorExtAttr) { const constructorOp = _constructor_js__WEBPACK_IMPORTED_MODULE_8__.Constructor.parse( new _tokeniser_js__WEBPACK_IMPORTED_MODULE_9__.Tokeniser(`\n${memberIndent}constructor();`) ); - constructorOp.extAttrs = new _extended_attributes_js__WEBPACK_IMPORTED_MODULE_10__.ExtendedAttributes({}); + constructorOp.extAttrs = new _extended_attributes_js__WEBPACK_IMPORTED_MODULE_10__.ExtendedAttributes({ + source: interfaceDef.source, + tokens: {}, + }); (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.autoParenter)(constructorOp).arguments = constructorExtAttr.arguments; const existingIndex = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.findLastIndex)( @@ -2807,9 +2818,8 @@ function inheritance(tokeniser) { class Container extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { /** - * @template T * @param {import("../tokeniser.js").Tokeniser} tokeniser - * @param {T} instance + * @param {*} instance TODO: This should be {T extends Container}, but see https://github.com/microsoft/TypeScript/issues/4628 * @param {*} args */ static parse(tokeniser, instance, { inheritable, allowedMembers }) { @@ -3004,10 +3014,10 @@ class IterableLike extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { */ static parse(tokeniser) { const start_position = tokeniser.position; - const tokens = {}; const ret = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.autoParenter)( - new IterableLike({ source: tokeniser.source, tokens }) + new IterableLike({ source: tokeniser.source, tokens: {} }) ); + const { tokens } = ret; tokens.readonly = tokeniser.consume("readonly"); if (!tokens.readonly) { tokens.async = tokeniser.consume("async"); @@ -3118,27 +3128,38 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "checkInterfaceMemberDuplication": () => (/* binding */ checkInterfaceMemberDuplication) /* harmony export */ }); /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3); -// @ts-check - +/** + * @param {import("../validator.js").Definitions} defs + * @param {import("../productions/container.js").Container} i + */ function* checkInterfaceMemberDuplication(defs, i) { - const opNames = new Set(getOperations(i).map((op) => op.name)); + const opNames = groupOperationNames(i); const partials = defs.partials.get(i.name) || []; const mixins = defs.mixinMap.get(i.name) || []; for (const ext of [...partials, ...mixins]) { const additions = getOperations(ext); - yield* forEachExtension(additions, opNames, ext, i); - for (const addition of additions) { - opNames.add(addition.name); - } + const statics = additions.filter((a) => a.special === "static"); + const nonstatics = additions.filter((a) => a.special !== "static"); + yield* checkAdditions(statics, opNames.statics, ext, i); + yield* checkAdditions(nonstatics, opNames.nonstatics, ext, i); + statics.forEach((op) => opNames.statics.add(op.name)); + nonstatics.forEach((op) => opNames.nonstatics.add(op.name)); } - function* forEachExtension(additions, existings, ext, base) { + /** + * @param {import("../productions/operation.js").Operation[]} additions + * @param {Set} existings + * @param {import("../productions/container.js").Container} ext + * @param {import("../productions/container.js").Container} base + */ + function* checkAdditions(additions, existings, ext, base) { for (const addition of additions) { const { name } = addition; if (name && existings.has(name)) { - const message = `The operation "${name}" has already been defined for the base interface "${base.name}" either in itself or in a mixin`; + const isStatic = addition.special === "static" ? "static " : ""; + const message = `The ${isStatic}operation "${name}" has already been defined for the base interface "${base.name}" either in itself or in a mixin`; yield (0,_error_js__WEBPACK_IMPORTED_MODULE_0__.validationError)( addition.tokens.name, ext, @@ -3149,9 +3170,28 @@ function* checkInterfaceMemberDuplication(defs, i) { } } + /** + * @param {import("../productions/container.js").Container} i + * @returns {import("../productions/operation.js").Operation[]} + */ function getOperations(i) { return i.members.filter(({ type }) => type === "operation"); } + + /** + * @param {import("../productions/container.js").Container} i + */ + function groupOperationNames(i) { + const ops = getOperations(i); + return { + statics: new Set( + ops.filter((op) => op.special === "static").map((op) => op.name) + ), + nonstatics: new Set( + ops.filter((op) => op.special !== "static").map((op) => op.name) + ), + }; + } } @@ -3170,7 +3210,7 @@ __webpack_require__.r(__webpack_exports__); class Constructor extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { const base = tokeniser.consume("constructor"); @@ -3198,9 +3238,6 @@ class Constructor extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { } *validate(defs) { - if (this.idlType) { - yield* this.idlType.validate(defs); - } for (const argument of this.arguments) { yield* argument.validate(defs); } @@ -3288,14 +3325,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20); /* harmony import */ var _field_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -// @ts-check - class Dictionary extends _container_js__WEBPACK_IMPORTED_MODULE_0__.Container { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser * @param {object} [options] * @param {import("../tokeniser.js").Token} [options.partial] */ @@ -3340,7 +3375,7 @@ __webpack_require__.r(__webpack_exports__); class Field extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { /** @type {Base["tokens"]} */ @@ -3418,7 +3453,7 @@ __webpack_require__.r(__webpack_exports__); class Namespace extends _container_js__WEBPACK_IMPORTED_MODULE_0__.Container { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser * @param {object} [options] * @param {import("../tokeniser.js").Token} [options.partial] */ @@ -3481,15 +3516,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20); /* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13); /* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21); -// @ts-check - class CallbackInterface extends _container_js__WEBPACK_IMPORTED_MODULE_0__.Container { /** - * @param {import("../tokeniser").Tokeniser} tokeniser + * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser, callback, { partial = null } = {}) { const tokens = { callback }; @@ -3548,6 +3581,13 @@ class Writer { this.ts = Object.assign({}, templates, ts); } + /** + * @param {string} raw + * @param {object} options + * @param {string} [options.unescaped] + * @param {import("./productions/base.js").Base} [options.context] + * @returns + */ reference(raw, { unescaped, context }) { if (!unescaped) { unescaped = raw.startsWith("_") ? raw.slice(1) : raw; @@ -3555,6 +3595,12 @@ class Writer { return this.ts.reference(raw, unescaped, context); } + /** + * @param {import("./tokeniser.js").Token} t + * @param {Function} wrapper + * @param {...any} args + * @returns + */ token(t, wrapper = noop, ...args) { if (!t) { return ""; @@ -3597,8 +3643,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "validate": () => (/* binding */ validate) /* harmony export */ }); /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3); -// @ts-check - function getMixinMap(all, unique) { @@ -3687,8 +3731,8 @@ function flatten(array) { } /** - * @param {import("./productions/base").Base[]} ast - * @return {import("./error").WebIDLErrorData[]} validation errors + * @param {import("./productions/base.js").Base[]} ast + * @return {import("./error.js").WebIDLErrorData[]} validation errors */ function validate(ast) { return [...validateIterable(flatten(ast))]; @@ -3757,10 +3801,10 @@ var __webpack_exports__ = {}; (() => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "WebIDLParseError": () => (/* reexport safe */ _lib_tokeniser_js__WEBPACK_IMPORTED_MODULE_3__.WebIDLParseError), /* harmony export */ "parse": () => (/* reexport safe */ _lib_webidl2_js__WEBPACK_IMPORTED_MODULE_0__.parse), -/* harmony export */ "write": () => (/* reexport safe */ _lib_writer_js__WEBPACK_IMPORTED_MODULE_1__.write), /* harmony export */ "validate": () => (/* reexport safe */ _lib_validator_js__WEBPACK_IMPORTED_MODULE_2__.validate), -/* harmony export */ "WebIDLParseError": () => (/* reexport safe */ _lib_tokeniser_js__WEBPACK_IMPORTED_MODULE_3__.WebIDLParseError) +/* harmony export */ "write": () => (/* reexport safe */ _lib_writer_js__WEBPACK_IMPORTED_MODULE_1__.write) /* harmony export */ }); /* harmony import */ var _lib_webidl2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1); /* harmony import */ var _lib_writer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); diff --git a/tests/wpt/web-platform-tests/sanitizer-api/element-set-sanitized-html.https.tentative.html b/tests/wpt/web-platform-tests/sanitizer-api/element-set-sanitized-html.https.html similarity index 100% rename from tests/wpt/web-platform-tests/sanitizer-api/element-set-sanitized-html.https.tentative.html rename to tests/wpt/web-platform-tests/sanitizer-api/element-set-sanitized-html.https.html diff --git a/tests/wpt/web-platform-tests/sanitizer-api/idlharness.https.tentative.window.js b/tests/wpt/web-platform-tests/sanitizer-api/idlharness.https.window.js similarity index 100% rename from tests/wpt/web-platform-tests/sanitizer-api/idlharness.https.tentative.window.js rename to tests/wpt/web-platform-tests/sanitizer-api/idlharness.https.window.js diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-config.https.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-config.https.html new file mode 100644 index 00000000000..4faa156ead3 --- /dev/null +++ b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-config.https.html @@ -0,0 +1,90 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-config.https.tentative.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-config.https.tentative.html deleted file mode 100644 index fb29631e33b..00000000000 --- a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-config.https.tentative.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-insecure-context.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-insecure-context.html new file mode 100644 index 00000000000..4b185fd3a74 --- /dev/null +++ b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-insecure-context.html @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-names.https.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-names.https.html new file mode 100644 index 00000000000..49949927dec --- /dev/null +++ b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-names.https.html @@ -0,0 +1,52 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-names.https.tentative.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-names.https.tentative.html index 22b913574e8..e963761faac 100644 --- a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-names.https.tentative.html +++ b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-names.https.tentative.html @@ -65,9 +65,12 @@ [ "potato:math", "Hello", "Hello" ], ].forEach(([elem, probe, expected], index) => { test(t => { - const sanitizer = new Sanitizer({allowElements: [elem]}); - assert_equals(sanitizer.sanitizeFor("template", probe).innerHTML, - expected ?? probe); + const sanitizer = new Sanitizer({allowElements: [elem], + // TODO(https://github.com/WICG/sanitizer-api/issues/167) + allowUnknownMarkup: true}); + const template = document.createElement("template"); + template.setHTML(probe, {sanitizer}); + assert_equals(template.innerHTML, expected ?? probe); }, `Namespaced elements #${index}: allowElements: ["${elem}"]`); }); @@ -81,42 +84,46 @@ [ "href", "

                                                                      ", "

                                                                      " ], ].forEach(([attr, probe, expected], index) => { test(t => { - const sanitizer = new Sanitizer({allowAttributes: {[attr]: ["*"]}}); - assert_equals(sanitizer.sanitizeFor("template", probe).innerHTML, - expected ?? probe); + const sanitizer = new Sanitizer({allowAttributes: {[attr]: ["*"]}, + // TODO(https://github.com/WICG/sanitizer-api/issues/167) + allowUnknownMarkup: true}); + const template = document.createElement("template"); + template.setHTML(probe, {sanitizer}); + assert_equals(template.innerHTML, expected ?? probe); }, `Namespaced attributes #${index}: allowAttributes: {"${attr}": ["*"]}`); }); // Most element and attribute names are lower-cased, but "foreign content" // like SVG and MathML have some mixed-cased names. [ - [ "svg:feBlend", "" ], - [ "svg:feColorMatrix", "" ], - [ "svg:textPath", "" ], + [ "feBlend", "" ], + [ "feColorMatrix", "" ], + [ "textPath", "" ], ].forEach(([elem, probe], index) => { const sanitize = (elem, probe) => { - return new Sanitizer({allowElements: ["svg:svg", elem]}). - sanitizeFor("template", `${probe}${probe}`, {sanitizer}); + return template.content.firstElementChild.innerHTML; }; test(t => { assert_equals(sanitize(elem, probe), probe); - }, `Mixed-case element names #${index}: "${elem}"`); + }, `Mixed-case element names #${index}: "svg:${elem}"`); test(t => { + // Lowercase element names should be normalized to mixed-case. assert_equals(sanitize(elem.toLowerCase(), probe), probe); - }, `Mixed-case element names #${index}: "${elem.toLowerCase()}"`); + }, `Lower-case element names #${index}: "svg:${elem.toLowerCase()}"`); test(t => { - assert_equals(sanitize(elem.toUpperCase(), probe), probe); - }, `Mixed-case element names #${index}: "${elem.toUpperCase()}"`); + assert_not_equals(sanitize(elem.toUpperCase(), probe), probe); + }, `Upper-case element names #${index}: "svg:${elem.toUpperCase()}"`); test(t => { - assert_equals(sanitize(elem, probe.toLowerCase()), probe); - }, `Mixed-case element names #${index}: "${elem}" with lowercase probe.`); - test(t => { - const elems = [elem]; + const elems = ["svg:" + elem]; assert_array_equals( new Sanitizer({allowElements: elems}).getConfiguration().allowElements, elems); - }, `Mixed case element names #${index}: "${elem}" is preserved in config.`); + }, `Mixed case element names #${index}: "svg:${elem}" is preserved in config.`); }); diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-query-config.https.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-query-config.https.html new file mode 100644 index 00000000000..60cba2d618b --- /dev/null +++ b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-query-config.https.html @@ -0,0 +1,79 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-query-config.https.tenative.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-query-config.https.tenative.html deleted file mode 100644 index bd7c7ea3f65..00000000000 --- a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-query-config.https.tenative.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.https.tentative.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.https.tentative.html index 66d8db9d4c0..82eaeb48329 100644 --- a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.https.tentative.html +++ b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.https.tentative.html @@ -61,7 +61,7 @@ let result = getString(fragment); assert_equals(result, c.result); - }, "SanitizerAPI with config: " + c.message + ", sanitize from document function for " + c.message)); + }, "SanitizerAPI with config: " + c.message + ", sanitize from document function for ")); testcases.forEach(c => test(t => { let s = new Sanitizer(c.config_input); @@ -70,7 +70,7 @@ fragment = s.sanitize(tpl.content); assert_true(fragment instanceof DocumentFragment); assert_equals(getString(fragment), c.result); - }, "SanitizerAPI with config: " + c.message + ", sanitize from document fragment function for " + c.message)); + }, "SanitizerAPI with config: " + c.message + ", sanitize from document fragment function for + +
                                                                      + +
                                                                      +
                                                                      + + +
                                                                      +
                                                                      + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-fallback-default-tabindex.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-fallback-default-tabindex.html new file mode 100644 index 00000000000..e8e0293e77b --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-fallback-default-tabindex.html @@ -0,0 +1,74 @@ + + + + + + + + +

                                                                      Tests for moving focus by pressing tab key across shadow boundaries.
                                                                      +To manually test, press tab key six times then shift+tab seven times.
                                                                      +It should traverse focusable elements in the increasing numerical order and then in the reverse order.

                                                                      + +
                                                                      +
                                                                      2. Assigned to slot5 whose tabindex is 2.
                                                                      + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-fallback.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-fallback.html new file mode 100644 index 00000000000..8b29558b504 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-fallback.html @@ -0,0 +1,71 @@ + + + + + + + + +
                                                                      +

                                                                      + document tree: [i0 -> [x-foo]]
                                                                      + x-foo's shadow tree: [j1 -> j2 -> [s1]]
                                                                      + slot #s1: [k1 -> [x-bar] -> k0 -> [s2] -> [s3]]
                                                                      + x-bar's shadow tree: [m1 -> m2]
                                                                      + slot #s2: [i1 -> i2]
                                                                      + slot #s3: [l1]

                                                                      + v1 ideal nav forward: [i0 -> j1 -> j2 -> k1 -> x-bar -> m1 -> m2 -> k0 -> i1 -> i2 -> l1]
                                                                      +

                                                                      + + +
                                                                      + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-2levels.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-2levels.html new file mode 100644 index 00000000000..59f0e4f0cb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-2levels.html @@ -0,0 +1,63 @@ + + + + + + + + +
                                                                      + + +
                                                                      + +
                                                                      +
                                                                      + +
                                                                      +
                                                                      + + + +
                                                                      + button +
                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-delegatesFocus.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-delegatesFocus.html new file mode 100644 index 00000000000..94d8ce8e1f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-delegatesFocus.html @@ -0,0 +1,51 @@ + + + + + + + + +
                                                                      + + +
                                                                      + +
                                                                      + + +
                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-fallback.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-fallback.html new file mode 100644 index 00000000000..93a6240fe3e --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-fallback.html @@ -0,0 +1,71 @@ + + + + + + + + +

                                                                      Tests for moving focus by pressing tab key across shadow boundaries.
                                                                      +To manually test, press tab key six times then shift+tab six times.
                                                                      +It should traverse focusable elements in the increasing numerical order and then in the reverse order.

                                                                      +
                                                                      + +
                                                                      1. Assigned to slot2.
                                                                      +
                                                                      6. Assigned to slot7 which is assigned to slot6.
                                                                      +
                                                                      + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested.html new file mode 100644 index 00000000000..7bfe5dc7844 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested.html @@ -0,0 +1,51 @@ + + + + + + + + +
                                                                      + + +
                                                                      + +
                                                                      + + +
                                                                      +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-shadow-in-fallback.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-shadow-in-fallback.html new file mode 100644 index 00000000000..7192a42584b --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-shadow-in-fallback.html @@ -0,0 +1,48 @@ + + + + + + + + +
                                                                      + + +
                                                                      + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-shadow-in-slot.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-shadow-in-slot.html new file mode 100644 index 00000000000..4f320574ed5 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-shadow-in-slot.html @@ -0,0 +1,47 @@ + + + + + + + + +
                                                                      + + +
                                                                      + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-with-tabindex.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-with-tabindex.html new file mode 100644 index 00000000000..880fb83130b --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-with-tabindex.html @@ -0,0 +1,65 @@ + + + + + + + + +
                                                                      +

                                                                      + document tree: [i0 -> [x-foo]]
                                                                      + x-foo's shadow tree: [j1 -> [s1] -> [s2] -> j2 ->[x-bar]]
                                                                      + x-bar's shadow tree: [[s3] -> k1]
                                                                      + slot #s1: [i1 -> i2]
                                                                      + slot #s2: [i3]
                                                                      + slot #s3: [l1 -> l2]

                                                                      + v1 ideal nav forward: [i0 -> j1 -> i1 -> i2 -> i3 -> j2 -> x-bar -> l1 -> l2 -> k1]
                                                                      +

                                                                      + + +
                                                                      + + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slots-in-slot.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slots-in-slot.html new file mode 100644 index 00000000000..025a4e0f52f --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slots-in-slot.html @@ -0,0 +1,71 @@ + + + + + + + + +

                                                                      Tests for moving focus by pressing tab key across nodes in slot scope.
                                                                      + + +

                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slots.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slots.html new file mode 100644 index 00000000000..f2de50f6eba --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slots.html @@ -0,0 +1,67 @@ + + + + + + + + +
                                                                      +

                                                                      + document tree: [i0 -> [x-foo]]
                                                                      + x-foo's shadow tree: [j1 -> [s1] -> [s2] -> j2 ->[x-bar]]
                                                                      + x-bar's shadow tree: [k1 -> [s3]]
                                                                      + slot #s1: [i1 -> i2]
                                                                      + slot #s2: [i3]
                                                                      + slot #s3: [[s4]]
                                                                      + slot #s4: [i4 -> i5]

                                                                      + v1 ideal nav forward: [i0 -> j1 -> i1 -> i2 -> i3 -> j2 -> x-bar -> k1 -> i4 -> i5]
                                                                      +

                                                                      + + +
                                                                      + + + + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-web-component-input-type-radio.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-web-component-input-type-radio.html new file mode 100644 index 00000000000..fe591a3dc41 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-web-component-input-type-radio.html @@ -0,0 +1,70 @@ + + + + + + + + + + + +
                                                                      OUT
                                                                      + + A + B + +
                                                                      + C + D + +
                                                                      OUT
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-with-delegatesFocus.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-with-delegatesFocus.html new file mode 100644 index 00000000000..e0972615267 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-with-delegatesFocus.html @@ -0,0 +1,358 @@ + + + + + + + + + +

                                                                      This tests TAB focus navigation with delegatesFocus flag on shadow hosts

                                                                      +
                                                                      
                                                                      +
                                                                      + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation.html new file mode 100644 index 00000000000..fabcf881708 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation.html @@ -0,0 +1,73 @@ + + + + + + + + +
                                                                      +

                                                                      + document tree: [i0 -> [x-foo]]
                                                                      + x-foo's shadow tree: [j5 -> [x-bar] -> j6]
                                                                      + x-bar's shadow tree: [k1 -> k0 -> [s2]]
                                                                      + slot #s2: [j1 -> j2 -> j3 -> j4 -> [s1] -> j0]

                                                                      + slot #s1: [i1 -> i2]
                                                                      + v1 ideal nav forward: [i0 -> j5 -> xbar -> k1 -> k0 -> j1 -> j2 -> j3 -> j4 -> i1 -> i2 -> j0 -> j6]
                                                                      +

                                                                      + + +
                                                                      + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-nested-slots.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-nested-slots.html new file mode 100644 index 00000000000..747a8a1262f --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-nested-slots.html @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-reverse-unassignable-slot.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-reverse-unassignable-slot.html new file mode 100644 index 00000000000..cacf94f4121 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-reverse-unassignable-slot.html @@ -0,0 +1,34 @@ + + + + + + + + + + + + +
                                                                      + + + + + + + +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-reverse-unassigned-slot.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-reverse-unassigned-slot.html new file mode 100644 index 00000000000..e19ea44288b --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-reverse-unassigned-slot.html @@ -0,0 +1,39 @@ + + + + + + + + +
                                                                      + + +
                                                                      + +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-unassignable-slot.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-unassignable-slot.html new file mode 100644 index 00000000000..135569d94cc --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-unassignable-slot.html @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-with-negative-index.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-with-negative-index.html new file mode 100644 index 00000000000..95dc98fc02d --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-with-negative-index.html @@ -0,0 +1,92 @@ + + + + + + + + +
                                                                      +

                                                                      + document tree: [i0 -> [x-foo]]
                                                                      + x-foo's shadow tree: [j5 -> [x-bar] -> j6]
                                                                      + x-bar's shadow tree: [k1 -> k0 -> [s2]]
                                                                      + slot #s2: [j1 -> j2 -> j3 -> j4 -> [s1] -> j0]

                                                                      + slot #s1: [i1 -> i2]
                                                                      + v1 ideal nav forward: [i0 -> j5 -> xbar -> k1 -> k0 -> j6]
                                                                      +

                                                                      + + +
                                                                      + + + +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/resources/focus-utils.js b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/resources/focus-utils.js new file mode 100644 index 00000000000..c23581a15ec --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/resources/focus-utils.js @@ -0,0 +1,153 @@ +'use strict'; + +async function navigateFocusForward() { + return new test_driver.Actions() + .keyDown('\uE004') + .keyUp('\uE004') + .send(); +} + +async function navigateFocusBackward() { + return new test_driver.Actions() + .keyDown('\uE050') + .keyDown('\uE004') + .keyUp('\uE004') + .keyUp('\uE050') + .send(); +} + +// If shadow root is open, can find element using element path +// If shadow root is open, can find the shadowRoot from the element + +function innermostActiveElement(element) { + element = element || document.activeElement; + if (isIFrameElement(element)) { + if (element.contentDocument.activeElement) + return innermostActiveElement(element.contentDocument.activeElement); + return element; + } + if (isShadowHost(element)) { + let shadowRoot = element.shadowRoot; + if (shadowRoot) { + if (shadowRoot.activeElement) + return innermostActiveElement(shadowRoot.activeElement); + } + } + return element; +} + +function isInnermostActiveElement(path) { + const element = getNodeInComposedTree(path); + if (!element) + return false; + return element === innermostActiveElement(); +} + +async function shouldNavigateFocus(fromElement, direction) { + if (!fromElement) + return false; + + fromElement.focus(); + if (fromElement !== innermostActiveElement()) + return false; + + if (direction == 'forward') + await navigateFocusForward(); + else + await navigateFocusBackward(); + + return true; +} + +async function assert_focus_navigation_element(fromPath, toPath, direction) { + const fromElement = getNodeInComposedTree(fromPath); + const result = await shouldNavigateFocus(fromElement, direction); + assert_true(result, 'Failed to focus ' + fromPath); + + const message = + `Focus should move ${direction} from ${fromPath} to ${toPath}`; + const toElement = getNodeInComposedTree(toPath); + assert_equals(innermostActiveElement(), toElement, message); +} + +async function assert_focus_navigation_elements(elements, direction) { + assert_true( + elements.length >= 2, + 'length of elements should be greater than or equal to 2.'); + for (var i = 0; i + 1 < elements.length; ++i) + await assert_focus_navigation_element(elements[i], elements[i + 1], direction); + +} + +async function assert_focus_navigation_forward(elements) { + return assert_focus_navigation_elements(elements, 'forward'); +} + +async function assert_focus_navigation_backward(elements) { + return assert_focus_navigation_elements(elements, 'backward'); +} + + +// If shadow root is closed, need to pass shadowRoot and element to find +// innermost active element + +function isShadowHostOfRoot(shadowRoot, node) { + return shadowRoot && shadowRoot.host.isEqualNode(node); +} + +function innermostActiveElementWithShadowRoot(shadowRoot, element) { + element = element || document.activeElement; + if (isIFrameElement(element)) { + if (element.contentDocument.activeElement) + return innermostActiveElementWithShadowRoot(shadowRoot, element.contentDocument.activeElement); + return element; + } + if (isShadowHostOfRoot(shadowRoot, element)) { + if (shadowRoot.activeElement) + return innermostActiveElementWithShadowRoot(shadowRoot, shadowRoot.activeElement); + } + return element; +} + +async function shouldNavigateFocusWithShadowRoot(from, direction) { + const [fromElement, shadowRoot] = from; + if (!fromElement) + return false; + + fromElement.focus(); + if (fromElement !== innermostActiveElementWithShadowRoot(shadowRoot)) + return false; + + if (direction == 'forward') + await navigateFocusForward(); + else + await navigateFocusBackward(); + + return true; +} + +async function assert_focus_navigation_element_with_shadow_root(from, to, direction) { + const result = await shouldNavigateFocusWithShadowRoot(from, direction); + const [fromElement] = from; + const [toElement, toShadowRoot] = to; + assert_true(result, 'Failed to focus ' + fromElement.id); + const message = + `Focus should move ${direction} from ${fromElement.id} to ${toElement.id}`; + assert_equals(innermostActiveElementWithShadowRoot(toShadowRoot), toElement, message); +} + +async function assert_focus_navigation_elements_with_shadow_root(elements, direction) { + assert_true( + elements.length >= 2, + 'length of elements should be greater than or equal to 2.'); + for (var i = 0; i + 1 < elements.length; ++i) + await assert_focus_navigation_element_with_shadow_root(elements[i], elements[i + 1], direction); +} + +async function assert_focus_navigation_forward_with_shadow_root(elements) { + return assert_focus_navigation_elements_with_shadow_root(elements, 'forward'); +} + +async function assert_focus_navigation_backward_with_shadow_root(elements) { + return assert_focus_navigation_elements_with_shadow_root(elements, 'backward'); +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/resources/shadow-dom.js b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/resources/shadow-dom.js new file mode 100644 index 00000000000..442fde241fa --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/resources/shadow-dom.js @@ -0,0 +1,178 @@ +function removeWhiteSpaceOnlyTextNodes(node) { + for (var i = 0; i < node.childNodes.length; i++) { + var child = node.childNodes[i]; + if (child.nodeType === Node.TEXT_NODE && + child.nodeValue.trim().length == 0) { + node.removeChild(child); + i--; + } else if ( + child.nodeType === Node.ELEMENT_NODE || + child.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { + removeWhiteSpaceOnlyTextNodes(child); + } + } + if (node.shadowRoot) { + removeWhiteSpaceOnlyTextNodes(node.shadowRoot); + } +} + +function convertTemplatesToShadowRootsWithin(node) { + var nodes = node.querySelectorAll('template'); + for (var i = 0; i < nodes.length; ++i) { + var template = nodes[i]; + var mode = template.getAttribute('data-mode'); + var delegatesFocus = template.hasAttribute('data-delegatesFocus'); + var parent = template.parentNode; + parent.removeChild(template); + var shadowRoot; + if (!mode || mode == 'v0') { + shadowRoot = parent.attachShadow({ mode: 'open' }); + } else { + shadowRoot = + parent.attachShadow({ 'mode': mode, 'delegatesFocus': delegatesFocus }); + } + var expose = template.getAttribute('data-expose-as'); + if (expose) + window[expose] = shadowRoot; + if (template.id) + shadowRoot.id = template.id; + var fragments = document.importNode(template.content, true); + shadowRoot.appendChild(fragments); + + convertTemplatesToShadowRootsWithin(shadowRoot); + } +} + +function convertDeclarativeTemplatesToShadowRootsWithin(root) { + root.querySelectorAll("template[shadowroot]").forEach(template => { + const mode = template.getAttribute("shadowroot"); + const shadowRoot = template.parentNode.attachShadow({ mode }); + shadowRoot.appendChild(template.content); + template.remove(); + convertDeclarativeTemplatesToShadowRootsWithin(shadowRoot); + }); +} + +function isShadowHost(node) { + return node && node.nodeType == Node.ELEMENT_NODE && node.shadowRoot; +} + +function isIFrameElement(element) { + return element && element.nodeName == 'IFRAME'; +} + +// Returns node from shadow/iframe tree "path". +function getNodeInComposedTree(path) { + var ids = path.split('/'); + var node = document.getElementById(ids[0]); + for (var i = 1; node != null && i < ids.length; ++i) { + if (isIFrameElement(node)) + node = node.contentDocument.getElementById(ids[i]); + else if (isShadowHost(node)) + node = node.shadowRoot.getElementById(ids[i]); + else + return null; + } + return node; +} + +function createTestTree(node) { + let ids = {}; + + function attachShadowFromTemplate(template) { + let parent = template.parentNode; + parent.removeChild(template); + let shadowRoot; + if (template.getAttribute('data-mode') === 'v0') { + // For legacy Shadow DOM + shadowRoot = parent.attachShadow({ mode: 'open' }); + } else if (template.getAttribute('data-slot-assignment') === 'manual') { + shadowRoot = + parent.attachShadow({ + mode: template.getAttribute('data-mode'), + slotAssignment: 'manual' + }); + } else { + shadowRoot = + parent.attachShadow({ mode: template.getAttribute('data-mode') }); + } + let id = template.id; + if (id) { + shadowRoot.id = id; + ids[id] = shadowRoot; + } + shadowRoot.appendChild(document.importNode(template.content, true)); + return shadowRoot; + } + + function walk(root) { + if (root.id) { + ids[root.id] = root; + } + for (let e of Array.from(root.querySelectorAll('[id]'))) { + ids[e.id] = e; + } + for (let e of Array.from(root.querySelectorAll('template'))) { + walk(attachShadowFromTemplate(e)); + } + } + + walk(node.cloneNode(true)); + return ids; +} + +function dispatchEventWithLog(nodes, target, event) { + function labelFor(e) { + return e.id || e.tagName; + } + + let log = []; + let attachedNodes = []; + for (let label in nodes) { + let startingNode = nodes[label]; + for (let node = startingNode; node; node = node.parentNode) { + if (attachedNodes.indexOf(node) >= 0) + continue; + let id = node.id; + if (!id) + continue; + attachedNodes.push(node); + node.addEventListener(event.type, (e) => { + // Record [currentTarget, target, relatedTarget, composedPath()] + log.push([ + id, labelFor(e.target), + e.relatedTarget ? labelFor(e.relatedTarget) : null, + e.composedPath().map((n) => { + return labelFor(n); + }) + ]); + }); + } + } + target.dispatchEvent(event); + return log; +} + +// This function assumes that testharness.js is available. +function assert_event_path_equals(actual, expected) { + assert_equals(actual.length, expected.length); + for (let i = 0; i < actual.length; ++i) { + assert_equals( + actual[i][0], expected[i][0], + 'currentTarget at ' + i + ' should be same'); + assert_equals( + actual[i][1], expected[i][1], 'target at ' + i + ' should be same'); + assert_equals( + actual[i][2], expected[i][2], + 'relatedTarget at ' + i + ' should be same'); + assert_array_equals( + actual[i][3], expected[i][3], + 'composedPath at ' + i + ' should be same'); + } +} + +function assert_background_color(path, color) { + assert_equals( + window.getComputedStyle(getNodeInComposedTree(path)).backgroundColor, + color, 'backgroundColor for ' + path + ' should be ' + color); +} diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus/focus-click-on-shadow-host.html b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-click-on-shadow-host.html new file mode 100644 index 00000000000..7a318a0200e --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-click-on-shadow-host.html @@ -0,0 +1,40 @@ + + +HTML Test: click on shadow host with delegatesFocus + + + + + + + + +
                                                                      + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus/focus-method-delegatesFocus-nested-browsing-context.html b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-method-delegatesFocus-nested-browsing-context.html new file mode 100644 index 00000000000..d2724f17d52 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-method-delegatesFocus-nested-browsing-context.html @@ -0,0 +1,36 @@ + + +HTML Test: focus() on shadow host within an iframe with delegatesFocus + + + + + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus/focus-method-with-delegatesFocus.html b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-method-with-delegatesFocus.html new file mode 100644 index 00000000000..8caea8ccda4 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-method-with-delegatesFocus.html @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus/focus-pseudo-matches-on-shadow-host.html b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-pseudo-matches-on-shadow-host.html index 33597b5065b..34f8c012945 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/focus/focus-pseudo-matches-on-shadow-host.html +++ b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-pseudo-matches-on-shadow-host.html @@ -23,8 +23,10 @@ function handleFocus() { // while it's autofocusing which may run the tests, so that the // focus() usage in the tests becomes nested focusing steps. step_timeout(function() { - testInMode('open'); - testInMode('closed'); + testInMode('open', false); + testInMode('open', true); + testInMode('closed', false); + testInMode('closed', true); }, 0); } focusedDefault = true; @@ -46,43 +48,73 @@ function prepare(test) }); } -function testInMode(mode) { +function testInMode(mode, delegatesFocus) { + const modeString = `{mode:${mode}, delegatesFocus:${delegatesFocus}}`; promise_test(async function () { await prepare(this); const host = document.createElement('div'); container.appendChild(host); - const shadowRoot = host.attachShadow({mode}); + const shadowRoot = host.attachShadow({mode, delegatesFocus}); shadowRoot.innerHTML = ''; assert_equals(document.activeElement, defaultFocus); assert_equals(shadowRoot.activeElement, null); assert_false(host.matches(':focus')); - }, `:focus must not match a shadow host with ${mode} mode shadow root that does not contain the focused element`); + }, `:focus must not match a shadow host with ${modeString} shadow root that does not contain the focused element`); promise_test(async function () { await prepare(this); const host = document.createElement('div'); document.body.appendChild(host); - const shadowRoot = host.attachShadow({mode}); + const shadowRoot = host.attachShadow({mode, delegatesFocus}); shadowRoot.innerHTML = ''; shadowRoot.firstChild.focus(); assert_equals(document.activeElement, host); assert_equals(shadowRoot.activeElement, shadowRoot.firstChild); assert_true(host.matches(':focus')); - }, `:focus must match a shadow host with ${mode} mode shadow root that contains the focused element`); + }, `:focus must match a shadow host with ${modeString} shadow root that contains the focused element`); promise_test(async function () { await prepare(this); const host = document.createElement('div'); container.appendChild(host); - const shadowRoot = host.attachShadow({mode}); + const shadowRoot = host.attachShadow({mode, delegatesFocus}); shadowRoot.innerHTML = ''; host.innerHTML = ''; host.firstChild.focus(); assert_equals(document.activeElement, host.firstChild); assert_equals(shadowRoot.activeElement, null); assert_false(host.matches(':focus')); - }, `:focus must not match a shadow host with ${mode} mode shadow root contains the focused element assigned to a slot`); + }, `:focus must not match a shadow host with ${modeString} shadow root contains the focused element assigned to a slot`); + promise_test(async function() { + await prepare(this); + const host1 = document.body.appendChild(document.createElement('div')); + const shadowRoot1 = host1.attachShadow({mode, delegatesFocus}); + const host2 = shadowRoot1.appendChild(document.createElement('div')); + const shadowRoot2 = host2.attachShadow({mode, delegatesFocus}); + shadowRoot2.innerHTML = ''; + shadowRoot2.firstChild.focus(); + assert_equals(document.activeElement, host1); + assert_equals(shadowRoot1.activeElement, host2); + assert_equals(shadowRoot2.activeElement, shadowRoot2.firstChild); + assert_true(host1.matches(':focus')); + assert_true(host2.matches(':focus')); + }, `:focus must match all shadow hosts which are ancestors of a foccused element; ${modeString}`); + + promise_test(async function() { + await prepare(this); + const host = document.body.appendChild(document.createElement('div')); + const shadowRoot = host.attachShadow({mode, delegatesFocus}); + shadowRoot.innerHTML = ''; + const input = shadowRoot.firstChild; + const outer = document.body.appendChild(document.createElement('div')); + + assert_false(host.matches(':focus')); + input.focus(); + assert_true(host.matches(':focus')); + outer.appendChild(input); + assert_false(host.matches(':focus')); + }, `:focus behavior on tree structure changes; ${modeString}`); } diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus/focus-shadowhost-display-none.html b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-shadowhost-display-none.html new file mode 100644 index 00000000000..40f1b01f664 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-shadowhost-display-none.html @@ -0,0 +1,68 @@ + + + + +
                                                                      + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus/focus-tab-on-shadow-host.html b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-tab-on-shadow-host.html index 354ed0ed941..0dffc0157f5 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/focus/focus-tab-on-shadow-host.html +++ b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-tab-on-shadow-host.html @@ -25,5 +25,7 @@ promise_test(async function() { assert_equals(document.activeElement, host); assert_equals(shadowRoot.activeElement, input); assert_true(host.matches(':focus')); -}, ":focus should be applied to the host when the focus is moved by "); + assert_true(input.matches(':focus')); + assert_true(input.matches(':focus-visible')); +}, ":focus should be applied to the host and :focus-visible should be applied to the child node when the focus is moved by "); diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus/focus-tabindex-order-shadow-varying-tabindex-2.html b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-tabindex-order-shadow-varying-tabindex-2.html new file mode 100644 index 00000000000..1755aaf442a --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-tabindex-order-shadow-varying-tabindex-2.html @@ -0,0 +1,66 @@ + + +HTML Test: focus - the sequential focus navigation order with shadow dom with varying tabindex values + + + + + + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus/focus-tabindex-order-shadow-varying-tabindex-3.html b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-tabindex-order-shadow-varying-tabindex-3.html new file mode 100644 index 00000000000..e0570395ec8 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-tabindex-order-shadow-varying-tabindex-3.html @@ -0,0 +1,80 @@ + + +HTML Test: focus - the sequential focus navigation order with nested shadow dom with varying tabindex values + + + + + + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/historical.html b/tests/wpt/web-platform-tests/shadow-dom/historical.html index 2490f05b3e8..4fa8be1dbc9 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/historical.html +++ b/tests/wpt/web-platform-tests/shadow-dom/historical.html @@ -1,5 +1,5 @@ -Shadow DOM v0 features +Shadow DOM v0 features should NOT be present diff --git a/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-fallback-clear.html b/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-fallback-clear.html new file mode 100644 index 00000000000..5f79b4f2fad --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-fallback-clear.html @@ -0,0 +1,35 @@ + +Imperative Slot API: fallback should be cleared after slot assignment + + + + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-initial-fallback.html b/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-initial-fallback.html new file mode 100644 index 00000000000..87b37aa827b --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-initial-fallback.html @@ -0,0 +1,31 @@ + +Imperative Slot API: intial fallback should be correctly set up + + + + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-layout-invalidation-001-ref.html b/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-layout-invalidation-001-ref.html new file mode 100644 index 00000000000..98bc61ba4d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-layout-invalidation-001-ref.html @@ -0,0 +1,5 @@ + +CSS Test Reference +
                                                                      + two +
                                                                      diff --git a/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-layout-invalidation-001.html b/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-layout-invalidation-001.html new file mode 100644 index 00000000000..c6a579b70c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/imperative-slot-layout-invalidation-001.html @@ -0,0 +1,27 @@ + + +Imperative slotting API: Invalidation on re-assignment + + + + +
                                                                      + one +
                                                                      + diff --git a/tests/wpt/web-platform-tests/shadow-dom/invalidate-shadow-dom-crash.html b/tests/wpt/web-platform-tests/shadow-dom/invalidate-shadow-dom-crash.html new file mode 100644 index 00000000000..ebbcabf131e --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/invalidate-shadow-dom-crash.html @@ -0,0 +1,12 @@ + + +
                                                                      + +") + body = session.find.css("body", all=False) + assert_element_has_focus(body) element = session.find.css("textarea", all=False) assert element.property("value") == "a" element_send_keys(session, element, "b") + assert_element_has_focus(element) assert element.property("value") == "ab" element_send_keys(session, element, "c") assert element.property("value") == "abc" + + +def test_input_insert_when_focused(session, inline): + session.url = inline(""" +""") + element = session.find.css("input", all=False) + assert element.property("value") == "a" + + element_send_keys(session, element, "b") + assert element.property("value") == "ba" + + element_send_keys(session, element, "c") + assert element.property("value") == "bca" + + +def test_textarea_insert_when_focused(session, inline): + session.url = inline(""" +""") + element = session.find.css("textarea", all=False) + assert element.property("value") == "a" + + element_send_keys(session, element, "b") + assert element.property("value") == "ba" + + element_send_keys(session, element, "c") + assert element.property("value") == "bca" + + +def test_date(session, inline): + session.url = inline("") + element = session.find.css("input", all=False) + + element_send_keys(session, element, "2000-01-01") + assert element.property("value") == "2000-01-01" + assert_element_has_focus(element) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/scroll_into_view.py b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/scroll_into_view.py index 205c4e30e1e..7ccaeaf8142 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/scroll_into_view.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/scroll_into_view.py @@ -30,42 +30,6 @@ def test_element_outside_of_scrollable_viewport(session, inline): assert is_element_in_viewport(session, element) -def test_option_select_container_outside_of_scrollable_viewport(session, inline): - session.url = inline(""" - - """) - element = session.find.css("option#bar", all=False) - select = session.find.css("select", all=False) - - response = element_send_keys(session, element, "bar") - assert_success(response) - - assert is_element_in_viewport(session, select) - assert is_element_in_viewport(session, element) - - -def test_option_stays_outside_of_scrollable_viewport(session, inline): - session.url = inline(""" - - """) - select = session.find.css("select", all=False) - option_foo = session.find.css("option#foo", all=False) - option_bar = session.find.css("option#bar", all=False) - - response = element_send_keys(session, option_bar, "bar") - assert_success(response) - - assert is_element_in_viewport(session, select) - assert is_element_in_viewport(session, option_foo) - assert not is_element_in_viewport(session, option_bar) - - def test_contenteditable_element_outside_of_scrollable_viewport(session, inline): session.url = inline("
                                                                      ") element = session.find.css("div", all=False) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py index aa393e16d81..5f8d3f01d6e 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py @@ -54,6 +54,45 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + response = element_send_keys(session, element, "foo") + assert_error(response, "no such element") + + +def test_no_such_element_from_other_window_handle(session, inline): + session.url = inline("

                                                                      ") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + session.window_handle = new_handle + + response = element_send_keys(session, element, "foo") + assert_error(response, "no such element") + + +def test_no_such_element_from_other_frame(session, iframe, inline): + session.url = inline(iframe("

                                                                      ")) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("#parent", all=False) + session.switch_frame("parent") + + response = element_send_keys(session, element, "foo") + assert_error(response, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference(session, stale_element, as_frame): + element = stale_element("", "input", as_frame=as_frame) + + response = element_send_keys(session, element, "foo") + assert_error(response, "stale element reference") + + @pytest.mark.parametrize("value", [True, None, 1, [], {}]) def test_invalid_text_type(session, inline, value): session.url = inline("") @@ -61,13 +100,3 @@ def test_invalid_text_type(session, inline, value): response = element_send_keys(session, element, value) assert_error(response, "invalid argument") - - -def test_stale_element(session, inline): - session.url = inline("") - element = session.find.css("input", all=False) - - session.refresh() - - response = element_send_keys(session, element, "foo") - assert_error(response, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/__init__.py index e69de29bb2d..9cd37ecdca1 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/__init__.py @@ -0,0 +1,16 @@ +import webdriver.protocol as protocol + + +def execute_async_script(session, script, args=None): + if args is None: + args = [] + body = {"script": script, "args": args} + + return session.transport.send( + "POST", + "/session/{session_id}/execute/async".format(**vars(session)), + body, + encoder=protocol.Encoder, + decoder=protocol.Decoder, + session=session, + ) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py index 49657711e28..38b7c260161 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py @@ -1,16 +1,9 @@ import os +from webdriver.client import ShadowRoot + from tests.support.asserts import assert_same_element, assert_success - - -def execute_async_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - - return session.transport.send( - "POST", "/session/{session_id}/execute/async".format(**vars(session)), - body) +from . import execute_async_script def test_arguments(session): @@ -185,6 +178,5 @@ def test_shadow_root(session, inline): resolve(document.querySelector('custom-checkbox-element').shadowRoot); """) value = assert_success(response) - assert isinstance(value, dict) - assert "shadow-6066-11e4-a52e-4f735466cecf" in value - assert value["shadow-6066-11e4-a52e-4f735466cecf"] == expected.id + assert isinstance(value, ShadowRoot) + assert value.id == expected.id diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/execute_async.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/execute_async.py index 5746ed6f05f..697df72bb9c 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/execute_async.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/execute_async.py @@ -1,20 +1,12 @@ import pytest +from webdriver import Element from webdriver.error import NoSuchAlertException from webdriver.transport import Response from tests.support.asserts import assert_error, assert_success from tests.support.sync import Poll - - -def execute_async_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - - return session.transport.send( - "POST", "/session/{session_id}/execute/async".format(**vars(session)), - body) +from . import execute_async_script def test_null_parameter_value(session, http): @@ -33,6 +25,70 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[element]) + assert_error(result, "no such element") + + +def test_no_such_element_from_other_window_handle(session, inline): + session.url = inline("

                                                                      ") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + session.window_handle = new_handle + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[element]) + assert_error(result, "no such element") + + +def test_no_such_element_from_other_frame(session, iframe, inline): + session.url = inline(iframe("

                                                                      ")) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("#parent", all=False) + session.switch_frame("parent") + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[element]) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference_as_argument(session, stale_element, as_frame): + element = stale_element("

                                                                      ", "div", as_frame=as_frame) + + result = execute_async_script(session, "arguments[0](1);", args=[element]) + assert_error(result, "stale element reference") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference_as_returned_value(session, iframe, inline, as_frame): + if as_frame: + session.url = inline(iframe("
                                                                      ")) + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + else: + session.url = inline("
                                                                      ") + + element = session.find.css("div", all=False) + + result = execute_async_script(session, """ + const [elem, resolve] = arguments; + elem.remove(); + resolve(elem); + """, args=[element]) + assert_error(result, "stale element reference") + + @pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"]) def test_abort_by_user_prompt(session, dialog_type): response = execute_async_script( diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/node.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/node.py new file mode 100644 index 00000000000..a4b1baad500 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/node.py @@ -0,0 +1,76 @@ +import pytest +from webdriver.client import Element, Frame, ShadowRoot, Window + +from tests.support.asserts import assert_error, assert_success +from . import execute_async_script + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference_as_argument(session, stale_element, as_frame): + element = stale_element("
                                                                      ", "div", as_frame=as_frame) + + result = execute_async_script(session, "arguments[0](1);", args=[element]) + assert_error(result, "stale element reference") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference_as_returned_value(session, iframe, inline, as_frame): + if as_frame: + session.url = inline(iframe("
                                                                      ")) + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + else: + session.url = inline("
                                                                      ") + + element = session.find.css("div", all=False) + + result = execute_async_script(session, """ + const [elem, resolve] = arguments; + elem.remove(); + resolve(elem); + """, args=[element]) + assert_error(result, "stale element reference") + + +@pytest.mark.parametrize("expression, type, name", [ + ("window.frames[0]", Frame, "Frame"), + ("document.getElementById('foo')", Element, "HTMLDivElement"), + ("document.getElementById('checkbox').shadowRoot", ShadowRoot, "ShadowRoot"), + ("window", Window, "Window") +], ids=["frame", "node", "shadow-root", "window"]) +def test_element_reference(session, iframe, inline, expression, type, name): + session.url = inline(f""" + + + +
                                                                      + {iframe("

                                                                      ")}""") + + result = execute_async_script(session, f"arguments[0]({expression})") + reference = assert_success(result) + assert isinstance(reference, type) + + result = execute_async_script(session, "arguments[1](arguments[0].constructor.name)", [reference]) + name = assert_success(result, name) + + +def test_document_as_object(session, inline): + session.url = inline("") + + # Retrieving the HTMLDocument is not possible due to cyclic references + result = execute_async_script(session, "arguments[0](document)") + assert_error(result, "javascript error") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/promise.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/promise.py index 8b6d7d9157b..d726d0d7128 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/promise.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/promise.py @@ -1,14 +1,5 @@ from tests.support.asserts import assert_error, assert_success - - -def execute_async_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - - return session.transport.send( - "POST", "/session/{session_id}/execute/async".format(**vars(session)), - body) +from . import execute_async_script def test_promise_resolve(session): diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/properties.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/properties.py index e51b3e3ea57..b9592e7edd4 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/properties.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/properties.py @@ -1,13 +1,5 @@ from tests.support.asserts import assert_same_element, assert_success - - -def execute_async_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - return session.transport.send( - "POST", "/session/{session_id}/execute/async".format(**vars(session)), - body) +from . import execute_async_script def test_content_attribute(session, inline): diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/user_prompts.py index 5c873935519..e39574fd4ac 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/user_prompts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/user_prompts.py @@ -3,16 +3,7 @@ import pytest from tests.support.asserts import assert_dialog_handled, assert_error, assert_success - - -def execute_async_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - - return session.transport.send( - "POST", "/session/{session_id}/execute/async".format(**vars(session)), - body) +from . import execute_async_script @pytest.fixture diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/__init__.py index e69de29bb2d..1ab36eb0541 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/__init__.py @@ -0,0 +1,16 @@ +import webdriver.protocol as protocol + + +def execute_script(session, script, args=None): + if args is None: + args = [] + body = {"script": script, "args": args} + + return session.transport.send( + "POST", + "/session/{session_id}/execute/sync".format(**vars(session)), + body, + encoder=protocol.Encoder, + decoder=protocol.Decoder, + session=session, + ) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py index 4d88d497060..60b7797d521 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py @@ -1,16 +1,9 @@ import os +from webdriver.client import ShadowRoot + from tests.support.asserts import assert_same_element, assert_success - - -def execute_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - - return session.transport.send( - "POST", "/session/{session_id}/execute/sync".format(**vars(session)), - body) +from . import execute_script def test_arguments(session): @@ -161,6 +154,5 @@ def test_shadow_root(session, inline): response = execute_script(session, "return document.querySelector('custom-checkbox-element').shadowRoot") value = assert_success(response) - assert isinstance(value, dict) - assert "shadow-6066-11e4-a52e-4f735466cecf" in value - assert value["shadow-6066-11e4-a52e-4f735466cecf"] == expected.id + assert isinstance(value, ShadowRoot) + assert value.id == expected.id diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/cyclic.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/cyclic.py index e3094f89f3b..3bcc73890c9 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/cyclic.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/cyclic.py @@ -1,15 +1,5 @@ from tests.support.asserts import assert_error, assert_same_element, assert_success - - -def execute_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - - return session.transport.send( - "POST", "/session/{session_id}/execute/sync".format( - session_id=session.session_id), - body) +from . import execute_script def test_array(session): diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/execute.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/execute.py index 0f934cbb445..d1f1f137edf 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/execute.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/execute.py @@ -1,21 +1,12 @@ import pytest +from webdriver import Element from webdriver.error import NoSuchAlertException from webdriver.transport import Response from tests.support.asserts import assert_error, assert_success from tests.support.sync import Poll - - -def execute_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - - return session.transport.send( - "POST", "/session/{session_id}/execute/sync".format( - session_id=session.session_id), - body) +from . import execute_script def test_null_parameter_value(session, http): @@ -34,6 +25,64 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + result = execute_script(session, "return true;", args=[element]) + assert_error(result, "no such element") + + +def test_no_such_element_from_other_window_handle(session, inline): + session.url = inline("

                                                                      ") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + session.window_handle = new_handle + + result = execute_script(session, "return true;", args=[element]) + assert_error(result, "no such element") + + +def test_no_such_element_from_other_frame(session, iframe, inline): + session.url = inline(iframe("

                                                                      ")) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("#parent", all=False) + session.switch_frame("parent") + + result = execute_script(session, "return true;", args=[element]) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference_as_argument(session, stale_element, as_frame): + element = stale_element("

                                                                      ", "div", as_frame=as_frame) + + result = execute_script(session, "return 1;", args=[element]) + assert_error(result, "stale element reference") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference_as_returned_value(session, iframe, inline, as_frame): + if as_frame: + session.url = inline(iframe("
                                                                      ")) + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + else: + session.url = inline("
                                                                      ") + + element = session.find.css("div", all=False) + + result = execute_script(session, """ + const elem = arguments[0]; + elem.remove(); + return elem; + """, args=[element]) + assert_error(result, "stale element reference") + + def test_opening_new_window_keeps_current_window_handle(session, inline): original_handle = session.window_handle original_handles = session.handles diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/json_serialize_windowproxy.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/json_serialize_windowproxy.py index 9864227374e..8e76feda238 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/json_serialize_windowproxy.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/json_serialize_windowproxy.py @@ -1,22 +1,12 @@ import json from tests.support.asserts import assert_success - +from . import execute_script _window_id = "window-fcc6-11e5-b4f8-330a88ab9d7f" _frame_id = "frame-075b-4da1-b6ba-e579c2d3230a" -def execute_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - - return session.transport.send( - "POST", "/session/{session_id}/execute/sync".format(**vars(session)), - body) - - def test_initial_window(session): # non-auxiliary top-level browsing context response = execute_script(session, "return window;") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/node.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/node.py new file mode 100644 index 00000000000..cc430eb19aa --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/node.py @@ -0,0 +1,76 @@ +import pytest +from webdriver.client import Element, Frame, ShadowRoot, Window + +from tests.support.asserts import assert_error, assert_success +from . import execute_script + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference_as_argument(session, stale_element, as_frame): + element = stale_element("
                                                                      ", "div", as_frame=as_frame) + + result = execute_script(session, "return 1;", args=[element]) + assert_error(result, "stale element reference") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference_as_returned_value(session, iframe, inline, as_frame): + if as_frame: + session.url = inline(iframe("
                                                                      ")) + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + else: + session.url = inline("
                                                                      ") + + element = session.find.css("div", all=False) + + result = execute_script(session, """ + const elem = arguments[0]; + elem.remove(); + return elem; + """, args=[element]) + assert_error(result, "stale element reference") + + +@pytest.mark.parametrize("expression, type, name", [ + ("window.frames[0]", Frame, "Frame"), + ("document.getElementById('foo')", Element, "HTMLDivElement"), + ("document.getElementById('checkbox').shadowRoot", ShadowRoot, "ShadowRoot"), + ("window", Window, "Window") +], ids=["frame", "node", "shadow-root", "window"]) +def test_element_reference(session, iframe, inline, expression, type, name): + session.url = inline(f""" + + + +
                                                                      + {iframe("

                                                                      ")}""") + + result = execute_script(session, f"return {expression}") + reference = assert_success(result) + assert isinstance(reference, type) + + result = execute_script(session, "return arguments[0].constructor.name", [reference]) + name = assert_success(result, name) + + +def test_document_as_object(session, inline): + session.url = inline("") + + # Retrieving the HTMLDocument is not possible due to cyclic references + result = execute_script(session, "arguments[0](document)") + assert_error(result, "javascript error") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/promise.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/promise.py index 8bb637853cc..c206674baef 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/promise.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/promise.py @@ -1,15 +1,5 @@ from tests.support.asserts import assert_error, assert_success - - -def execute_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - - return session.transport.send( - "POST", "/session/{session_id}/execute/sync".format( - session_id=session.session_id), - body) +from . import execute_script def test_promise_resolve(session): diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/properties.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/properties.py index 51999936e71..c3b01dea29b 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/properties.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/properties.py @@ -1,13 +1,5 @@ from tests.support.asserts import assert_same_element, assert_success - - -def execute_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - return session.transport.send( - "POST", "/session/{session_id}/execute/sync".format(**vars(session)), - body) +from . import execute_script def test_content_attribute(session, inline): diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/user_prompts.py index ec6895b74f8..48d735ea754 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/user_prompts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/user_prompts.py @@ -3,17 +3,7 @@ import pytest from tests.support.asserts import assert_dialog_handled, assert_error, assert_success - - -def execute_script(session, script, args=None): - if args is None: - args = [] - body = {"script": script, "args": args} - - return session.transport.send( - "POST", "/session/{session_id}/execute/sync".format( - session_id=session.session_id), - body) +from . import execute_script @pytest.fixture diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_element/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_element/find.py index 4510617da5a..d16372d025c 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_element/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_element/find.py @@ -27,16 +27,47 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +@pytest.mark.parametrize( + "value", + ["#same1", "#frame", "#shadow"], + ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], +) +def test_no_such_element_with_invalid_value(session, iframe, inline, value): + session.url = inline(f""" + + +

                                                                      +
                                                                      + {iframe("
                                                                      ")} + +
                                                                      """) + + response = find_element(session, "css selector", value) + assert_error(response, "no such element") + + @pytest.mark.parametrize("using", ["a", True, None, 1, [], {}]) def test_invalid_using_argument(session, using): - # Step 1 - 2 response = find_element(session, using, "value") assert_error(response, "invalid argument") @pytest.mark.parametrize("value", [None, [], {}]) def test_invalid_selector_argument(session, value): - # Step 3 - 4 response = find_element(session, "css selector", value) assert_error(response, "invalid argument") @@ -48,7 +79,6 @@ def test_invalid_selector_argument(session, value): ("tag name", "a"), ("xpath", "//a")]) def test_find_element(session, inline, using, value): - # Step 8 - 9 session.url = inline("full link text") response = find_element(session, using, value) @@ -64,7 +94,6 @@ def test_find_element(session, inline, using, value): ("link text", "LINK TEXT"), ]) def test_find_element_link_text(session, inline, document, value): - # Step 8 - 9 session.url = inline(document) response = find_element(session, "link text", value) @@ -81,20 +110,12 @@ def test_find_element_link_text(session, inline, document, value): ("partial link text", "LINK"), ]) def test_find_element_partial_link_text(session, inline, document, value): - # Step 8 - 9 session.url = inline(document) response = find_element(session, "partial link text", value) assert_success(response) -@pytest.mark.parametrize("using,value", [("css selector", "#wontExist")]) -def test_no_element(session, using, value): - # Step 8 - 9 - response = find_element(session, using, value) - assert_error(response, "no such element") - - @pytest.mark.parametrize("using,value", [("css selector", "#linkText"), ("link text", "full link text"), diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py index 879de3713f9..811971aeae9 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py @@ -33,16 +33,78 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +@pytest.mark.parametrize( + "value", + ["#doesNotExist", "#frame", "#shadow"], + ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], +) +def test_no_such_element_with_invalid_value(session, iframe, inline, value): + session.url = inline(f""" + + +
                                                                      +
                                                                      + {iframe("
                                                                      ")} + +
                                                                      """) + + from_element = session.find.css("#top", all=False) + response = find_element(session, from_element.id, "css selector", value) + assert_error(response, "no such element") + + +def test_no_such_element_with_startnode_from_other_window_handle(session, inline): + session.url = inline("

                                                                      ") + from_element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + session.window_handle = new_handle + + response = find_element(session, from_element.id, "css selector", "p") + assert_error(response, "no such element") + + +def test_no_such_element_with_startnode_from_other_frame(session, iframe, inline): + session.url = inline(iframe("

                                                                      ")) + + session.switch_frame(0) + from_element = session.find.css("#parent", all=False) + session.switch_frame("parent") + + response = find_element(session, from_element.id, "css selector", "p") + assert_error(response, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference(session, stale_element, as_frame): + element = stale_element("

                                                                      foo

                                                                      ", "div", as_frame=as_frame) + + response = find_element(session, element.id, "css selector", "p") + assert_error(response, "stale element reference") + + @pytest.mark.parametrize("using", ["a", True, None, 1, [], {}]) def test_invalid_using_argument(session, using): - # Step 1 - 2 response = find_element(session, "notReal", using, "value") assert_error(response, "invalid argument") @pytest.mark.parametrize("value", [None, [], {}]) def test_invalid_selector_argument(session, value): - # Step 3 - 4 response = find_element(session, "notReal", "css selector", value) assert_error(response, "invalid argument") @@ -54,7 +116,6 @@ def test_invalid_selector_argument(session, value): ("tag name", "a"), ("xpath", "//a")]) def test_find_element(session, inline, using, value): - # Step 8 - 9 session.url = inline("") element = session.find.css("div", all=False) response = find_element(session, element.id, using, value) @@ -88,7 +149,6 @@ def test_find_element_link_text(session, inline, document, value): ("partial link text", "LINK"), ]) def test_find_element_partial_link_text(session, inline, document, value): - # Step 8 - 9 session.url = inline("
                                                                      {0}
                                                                      ".format(document)) element = session.find.css("div", all=False) @@ -96,15 +156,6 @@ def test_find_element_partial_link_text(session, inline, document, value): assert_success(response) -@pytest.mark.parametrize("using,value", [("css selector", "#wontExist")]) -def test_no_element(session, inline, using, value): - # Step 8 - 9 - session.url = inline("
                                                                      ") - element = session.find.css("div", all=False) - response = find_element(session, element.id, using, value) - assert_error(response, "no such element") - - @pytest.mark.parametrize("using,value", [("css selector", "#linkText"), ("link text", "full link text"), diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/conftest.py b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/conftest.py index b8fc93319f4..5fd5f8a065c 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/conftest.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/conftest.py @@ -1,9 +1,9 @@ import pytest @pytest.fixture -def get_shadow_page(inline): +def get_shadow_page(): def get_shadow_page(shadow_content): - return inline(""" + return """ """.format(shadow_content)) + """.format(shadow_content) return get_shadow_page diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/find.py index 1d3e6fbf4ec..833291da72f 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/find.py @@ -1,5 +1,4 @@ import pytest - from webdriver.transport import Response from tests.support.asserts import assert_error, assert_same_element, assert_success @@ -13,8 +12,8 @@ def find_element(session, shadow_id, using, value): {"using": using, "value": value}) -def test_null_parameter_value(session, http, get_shadow_page): - session.url = get_shadow_page("") +def test_null_parameter_value(session, http, inline, get_shadow_page): + session.url = inline(get_shadow_page("")) custom_element = session.find.css("custom-shadow-element", all=False) shadow_root = custom_element.shadow_root @@ -34,32 +33,99 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +def test_no_such_element_with_unknown_shadow_root(session, inline, get_shadow_page): + session.url = inline(get_shadow_page("
                                                                      ")) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + + session.url = inline("

                                                                      ") + + result = find_element(session, shadow_root.id, "css selector", "input") + assert_error(result, "no such element") + + +@pytest.mark.parametrize( + "value", + ["#doesNotExist", "#inner"], + ids=["not-existent", "existent-inner-shadow-dom"], +) +def test_no_such_element_with_invalid_value( + session, iframe, inline, get_shadow_page, value +): + session.url = inline(get_shadow_page(f""" +

                                                                      + {get_shadow_page("
                                                                      ")} + """)) + + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + + response = find_element(session, shadow_root.id, "css selector", value) + assert_error(response, "no such element") + + +def test_no_such_element_with_shadow_root_from_other_window_handle( + session, inline, get_shadow_page +): + session.url = inline(get_shadow_page("
                                                                      ")) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + + new_handle = session.new_window() + session.window_handle = new_handle + + response = find_element(session, shadow_root.id, "css selector", "div") + assert_error(response, "no such element") + + +def test_no_such_element_with_shadow_root_from_other_frame( + session, iframe, inline, get_shadow_page +): + session.url = inline(iframe(get_shadow_page("
                                                                      "))) + + session.switch_frame(0) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + session.switch_frame("parent") + + response = find_element(session, shadow_root.id, "css selector", "div") + assert_error(response, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_detached_shadow_root(session, iframe, inline, get_shadow_page, as_frame): + page = get_shadow_page("
                                                                      ") + + if as_frame: + session.url = inline(iframe(page)) + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + else: + session.url = inline(page) + + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + + session.execute_script("arguments[0].remove();", args=[custom_element]) + + response = find_element(session, shadow_root.id, "css selector", "input") + assert_error(response, "detached shadow root") + + @pytest.mark.parametrize("using", ["a", True, None, 1, [], {}]) def test_invalid_using_argument(session, using): - # Step 1 - 2 response = find_element(session, "notReal", using, "value") assert_error(response, "invalid argument") @pytest.mark.parametrize("value", [None, [], {}]) def test_invalid_selector_argument(session, value): - # Step 3 - 4 response = find_element(session, "notReal", "css selector", value) assert_error(response, "invalid argument") -def test_detached_shadow_root(session, get_shadow_page): - session.url = get_shadow_page("
                                                                      ") - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root - session.refresh() - - response = find_element(session, shadow_root.id, "css selector", "input") - assert_error(response, "detached shadow root") - - -def test_found_element_equivalence(session, get_shadow_page): - session.url = get_shadow_page("
                                                                      ") +def test_found_element_equivalence(session, inline, get_shadow_page): + session.url = inline(get_shadow_page("
                                                                      ")) custom_element = session.find.css("custom-shadow-element", all=False) expected = session.execute_script("return arguments[0].shadowRoot.querySelector('input')", args=(custom_element,)) @@ -75,9 +141,8 @@ def test_found_element_equivalence(session, get_shadow_page): ("partial link text", "link text"), ("tag name", "a"), ("xpath", "//a")]) -def test_find_element(session, get_shadow_page, using, value): - # Step 8 - 9 - session.url = get_shadow_page("") +def test_find_element(session, inline, get_shadow_page, using, value): + session.url = inline(get_shadow_page("")) custom_element = session.find.css("custom-shadow-element", all=False) expected = session.execute_script("return arguments[0].shadowRoot.querySelector('#linkText')", args=(custom_element,)) @@ -95,9 +160,8 @@ def test_find_element(session, get_shadow_page, using, value): ("LINK TEXT", "LINK TEXT"), ("link text", "LINK TEXT"), ]) -def test_find_element_link_text(session, get_shadow_page, document, value): - # Step 8 - 9 - session.url = get_shadow_page("
                                                                      {0}
                                                                      ".format(document)) +def test_find_element_link_text(session, inline, get_shadow_page, document, value): + session.url = inline(get_shadow_page("
                                                                      {0}
                                                                      ".format(document))) custom_element = session.find.css("custom-shadow-element", all=False) expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[0]", args=(custom_element,)) @@ -117,9 +181,8 @@ def test_find_element_link_text(session, get_shadow_page, document, value): ("PARTIAL LINK TEXT", "LINK"), ("partial link text", "LINK"), ]) -def test_find_element_partial_link_text(session, get_shadow_page, document, value): - # Step 8 - 9 - session.url = get_shadow_page("
                                                                      {0}
                                                                      ".format(document)) +def test_find_element_partial_link_text(session, inline, get_shadow_page, document, value): + session.url = inline(get_shadow_page("
                                                                      {0}
                                                                      ".format(document))) custom_element = session.find.css("custom-shadow-element", all=False) expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[0]", args=(custom_element,)) @@ -128,14 +191,3 @@ def test_find_element_partial_link_text(session, get_shadow_page, document, valu response = find_element(session, shadow_root.id, "partial link text", value) value = assert_success(response) assert_same_element(session, value, expected) - - -@pytest.mark.parametrize("using,value", [("css selector", "#wontExist")]) -def test_no_element(session, get_shadow_page, using, value): - # Step 8 - 9 - session.url = get_shadow_page("
                                                                      ") - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root - - response = find_element(session, shadow_root.id, using, value) - assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py index e1326cf599a..ee79ed79f47 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py @@ -19,9 +19,9 @@ def find_element(session, shadow_id, using, value): @pytest.fixture -def check_user_prompt_closed_without_exception(session, create_dialog, get_shadow_page): +def check_user_prompt_closed_without_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_closed_without_exception(dialog_type, retval): - session.url = get_shadow_page("

                                                                      bar

                                                                      ") + session.url = inline(get_shadow_page("

                                                                      bar

                                                                      ")) outer_element = session.find.css("custom-shadow-element", all=False) shadow_root = outer_element.shadow_root inner_element = session.execute_script("return arguments[0].shadowRoot.querySelector('p')", @@ -40,9 +40,9 @@ def check_user_prompt_closed_without_exception(session, create_dialog, get_shado @pytest.fixture -def check_user_prompt_closed_with_exception(session, create_dialog, get_shadow_page): +def check_user_prompt_closed_with_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_closed_with_exception(dialog_type, retval): - session.url = get_shadow_page("

                                                                      bar

                                                                      ") + session.url = inline(get_shadow_page("

                                                                      bar

                                                                      ")) outer_element = session.find.css("custom-shadow-element", all=False) shadow_root = outer_element.shadow_root @@ -57,9 +57,9 @@ def check_user_prompt_closed_with_exception(session, create_dialog, get_shadow_p @pytest.fixture -def check_user_prompt_not_closed_but_exception(session, create_dialog, get_shadow_page): +def check_user_prompt_not_closed_but_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_not_closed_but_exception(dialog_type): - session.url = get_shadow_page("

                                                                      bar

                                                                      ") + session.url = inline(get_shadow_page("

                                                                      bar

                                                                      ")) outer_element = session.find.css("custom-shadow-element", all=False) shadow_root = outer_element.shadow_root diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_elements/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_elements/find.py index 47f00973938..6f1283bf351 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_elements/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_elements/find.py @@ -27,16 +27,48 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +@pytest.mark.parametrize( + "value", + ["#same1", "#frame", "#shadow"], + ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], +) +def test_no_such_element_with_invalid_value(session, iframe, inline, value): + session.url = inline(f""" + + +
                                                                      +
                                                                      + {iframe("
                                                                      ")} + +
                                                                      """) + + response = find_elements(session, "css selector", value) + assert_success(response) + assert response.body["value"] == [] + + @pytest.mark.parametrize("using", ["a", True, None, 1, [], {}]) def test_invalid_using_argument(session, using): - # Step 1 - 2 response = find_elements(session, using, "value") assert_error(response, "invalid argument") @pytest.mark.parametrize("value", [None, [], {}]) def test_invalid_selector_argument(session, value): - # Step 3 - 4 response = find_elements(session, "css selector", value) assert_error(response, "invalid argument") @@ -48,7 +80,6 @@ def test_invalid_selector_argument(session, value): ("tag name", "a"), ("xpath", "//a")]) def test_find_elements(session, inline, using, value): - # Step 8 - 9 session.url = inline("full link text") response = find_elements(session, using, value) @@ -65,7 +96,6 @@ def test_find_elements(session, inline, using, value): ("link text", "LINK TEXT"), ]) def test_find_elements_link_text(session, inline, document, value): - # Step 8 - 9 session.url = inline("not wanted
                                                                      {0}".format(document)) expected = session.execute_script("return document.links[1];") @@ -88,7 +118,6 @@ def test_find_elements_link_text(session, inline, document, value): ("partial link text", "LINK"), ]) def test_find_elements_partial_link_text(session, inline, document, value): - # Step 8 - 9 session.url = inline("not wanted
                                                                      {0}".format(document)) expected = session.execute_script("return document.links[1];") @@ -101,14 +130,6 @@ def test_find_elements_partial_link_text(session, inline, document, value): assert_same_element(session, found_element, expected) -@pytest.mark.parametrize("using,value", [("css selector", "#wontExist")]) -def test_no_element(session, using, value): - # Step 8 - 9 - response = find_elements(session, using, value) - assert_success(response) - assert response.body["value"] == [] - - @pytest.mark.parametrize("using,value", [("css selector", "#linkText"), ("link text", "full link text"), diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_element/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_element/find.py index ae6f976e9f9..0e3bf2fd11c 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_element/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_element/find.py @@ -33,16 +33,78 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +@pytest.mark.parametrize( + "value", + ["#same1", "#frame", "#shadow"], + ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], +) +def test_no_such_element_with_invalid_value(session, iframe, inline, value): + session.url = inline(f""" + + +
                                                                      +
                                                                      + {iframe("
                                                                      ")} + +
                                                                      """) + + element = session.find.css("#top", all=False) + response = find_elements(session, element.id, "css selector", value) + assert response.body["value"] == [] + + +def test_no_such_element_with_startnode_from_other_window_handle(session, inline): + session.url = inline("

                                                                      ") + from_element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + session.window_handle = new_handle + + response = find_elements(session, from_element.id, "css selector", "p") + assert_error(response, "no such element") + + +def test_no_such_element_with_startnode_from_other_frame(session, iframe, inline): + session.url = inline(iframe("

                                                                      ")) + + session.switch_frame(0) + from_element = session.find.css("#parent", all=False) + session.switch_frame("parent") + + response = find_elements(session, from_element.id, "css selector", "p") + assert_error(response, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference(session, stale_element, as_frame): + element = stale_element("

                                                                      foo

                                                                      ", "div", as_frame=as_frame) + + response = find_elements(session, element.id, "css selector", "p") + assert_error(response, "stale element reference") + + @pytest.mark.parametrize("using", [("a"), (True), (None), (1), ([]), ({})]) def test_invalid_using_argument(session, using): - # Step 1 - 2 response = find_elements(session, "notReal", using, "value") assert_error(response, "invalid argument") @pytest.mark.parametrize("value", [None, [], {}]) def test_invalid_selector_argument(session, value): - # Step 3 - 4 response = find_elements(session, "notReal", "css selector", value) assert_error(response, "invalid argument") @@ -54,7 +116,6 @@ def test_invalid_selector_argument(session, value): ("tag name", "a"), ("xpath", "//a")]) def test_find_elements(session, inline, using, value): - # Step 8 - 9 session.url = inline("") element = session.find.css("div", all=False) response = find_elements(session, element.id, using, value) @@ -70,7 +131,6 @@ def test_find_elements(session, inline, using, value): ("link text", "LINK TEXT"), ]) def test_find_elements_link_text(session, inline, document, value): - # Step 8 - 9 session.url = inline("".format(document)) element = session.find.css("div", all=False) expected = session.execute_script("return document.links[1];") @@ -94,7 +154,6 @@ def test_find_elements_link_text(session, inline, document, value): ("partial link text", "LINK"), ]) def test_find_elements_partial_link_text(session, inline, document, value): - # Step 8 - 9 session.url = inline("".format(document)) element = session.find.css("div", all=False) expected = session.execute_script("return document.links[1];") @@ -108,15 +167,6 @@ def test_find_elements_partial_link_text(session, inline, document, value): assert_same_element(session, found_element, expected) -@pytest.mark.parametrize("using,value", [("css selector", "#wontExist")]) -def test_no_element(session, inline, using, value): - # Step 8 - 9 - session.url = inline("
                                                                      ") - element = session.find.css("div", all=False) - response = find_elements(session, element.id, using, value) - assert response.body["value"] == [] - - @pytest.mark.parametrize("using,value", [("css selector", "#linkText"), ("link text", "full link text"), diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/conftest.py b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/conftest.py index b8fc93319f4..5fd5f8a065c 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/conftest.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/conftest.py @@ -1,9 +1,9 @@ import pytest @pytest.fixture -def get_shadow_page(inline): +def get_shadow_page(): def get_shadow_page(shadow_content): - return inline(""" + return """ """.format(shadow_content)) + """.format(shadow_content) return get_shadow_page diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/find.py index 5336ac16307..c21f0811258 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/find.py @@ -1,5 +1,4 @@ import pytest - from webdriver.transport import Response from tests.support.asserts import assert_error, assert_same_element, assert_success @@ -34,6 +33,85 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +def test_no_such_element_with_unknown_shadow_root(session, inline, get_shadow_page): + session.url = inline(get_shadow_page("
                                                                      ")) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + + session.url = inline("

                                                                      ") + + result = find_elements(session, shadow_root.id, "css selector", "input") + assert_error(result, "no such element") + + +@pytest.mark.parametrize( + "value", + ["#doesNotExist", "#inner"], + ids=["not-existent", "existent-inner-shadow-dom"], +) +def test_no_such_element_with_invalid_value( + session, iframe, inline, get_shadow_page, value +): + session.url = inline(get_shadow_page(f""" +

                                                                      + {get_shadow_page("
                                                                      ")} + """)) + + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + + response = find_elements(session, shadow_root.id, "css selector", value) + assert_error(response, "no such element") + + +def test_no_such_element_with_shadow_root_from_other_window_handle( + session, inline, get_shadow_page +): + session.url = inline(get_shadow_page("
                                                                      ")) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + + new_handle = session.new_window() + session.window_handle = new_handle + + response = find_elements(session, shadow_root.id, "css selector", "div") + assert_error(response, "no such element") + + +def test_no_such_element_with_shadow_root_from_other_frame( + session, iframe, inline, get_shadow_page +): + session.url = inline(iframe(get_shadow_page("
                                                                      "))) + + session.switch_frame(0) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + session.switch_frame("parent") + + response = find_elements(session, shadow_root.id, "css selector", "div") + assert_error(response, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_detached_shadow_root(session, iframe, inline, get_shadow_page, as_frame): + page = get_shadow_page("
                                                                      ") + + if as_frame: + session.url = inline(iframe(page)) + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + else: + session.url = inline(page) + + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + + session.execute_script("arguments[0].remove();", args=[custom_element]) + + response = find_elements(session, shadow_root.id, "css selector", "input") + assert_error(response, "detached shadow root") + + @pytest.mark.parametrize("using", [("a"), (True), (None), (1), ([]), ({})]) def test_invalid_using_argument(session, using): # Step 1 - 2 @@ -48,18 +126,9 @@ def test_invalid_selector_argument(session, value): assert_error(response, "invalid argument") -def test_detached_shadow_root(session, get_shadow_page): - session.url = get_shadow_page("
                                                                      ") - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root - session.refresh() - - response = find_elements(session, shadow_root.id, "css selector", "input") - assert_error(response, "detached shadow root") - - -def test_find_elements_equivalence(session, get_shadow_page): - session.url = get_shadow_page("
                                                                      ") +def test_find_elements_equivalence(session, inline, get_shadow_page): + session.url = inline(get_shadow_page( + "
                                                                      ")) custom_element = session.find.css("custom-shadow-element", all=False) shadow_root = custom_element.shadow_root response = find_elements(session, shadow_root.id, "css selector", "input") @@ -72,9 +141,9 @@ def test_find_elements_equivalence(session, get_shadow_page): ("partial link text", "link text"), ("tag name", "a"), ("xpath", "//a")]) -def test_find_elements(session, get_shadow_page, using, value): +def test_find_elements(session, inline, get_shadow_page, using, value): # Step 8 - 9 - session.url = get_shadow_page("") + session.url = inline(get_shadow_page("")) custom_element = session.find.css("custom-shadow-element", all=False) shadow_root = custom_element.shadow_root response = find_elements(session, shadow_root.id, using, value) @@ -89,9 +158,10 @@ def test_find_elements(session, get_shadow_page, using, value): ("LINK TEXT", "LINK TEXT"), ("link text", "LINK TEXT"), ]) -def test_find_elements_link_text(session, get_shadow_page, document, value): +def test_find_elements_link_text(session, inline, get_shadow_page, document, value): # Step 8 - 9 - session.url = get_shadow_page("".format(document)) + session.url = inline(get_shadow_page( + "".format(document))) custom_element = session.find.css("custom-shadow-element", all=False) shadow_root = custom_element.shadow_root expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[1]", @@ -115,9 +185,10 @@ def test_find_elements_link_text(session, get_shadow_page, document, value): ("PARTIAL LINK TEXT", "LINK"), ("partial link text", "LINK"), ]) -def test_find_elements_partial_link_text(session, get_shadow_page, document, value): +def test_find_elements_partial_link_text(session, inline, get_shadow_page, document, value): # Step 8 - 9 - session.url = get_shadow_page("".format(document)) + session.url = inline(get_shadow_page( + "".format(document))) custom_element = session.find.css("custom-shadow-element", all=False) shadow_root = custom_element.shadow_root expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[1]", @@ -130,13 +201,3 @@ def test_find_elements_partial_link_text(session, get_shadow_page, document, val found_element = value[0] assert_same_element(session, found_element, expected) - - -@pytest.mark.parametrize("using,value", [("css selector", "#wontExist")]) -def test_no_element(session, get_shadow_page, using, value): - # Step 8 - 9 - session.url = get_shadow_page("
                                                                      ") - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root - response = find_elements(session, shadow_root.id, using, value) - assert response.body["value"] == [] diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py index 9950999226d..8ec381b3870 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py @@ -19,9 +19,9 @@ def find_elements(session, shadow_id, using, value): @pytest.fixture -def check_user_prompt_closed_without_exception(session, create_dialog, get_shadow_page): +def check_user_prompt_closed_without_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_closed_without_exception(dialog_type, retval): - session.url = get_shadow_page("

                                                                      bar

                                                                      ") + session.url = inline(get_shadow_page("

                                                                      bar

                                                                      ")) outer_element = session.find.css("custom-shadow-element", all=False) shadow_root = outer_element.shadow_root inner_element = session.execute_script("return arguments[0].shadowRoot.querySelector('p')", @@ -42,9 +42,9 @@ def check_user_prompt_closed_without_exception(session, create_dialog, get_shado @pytest.fixture -def check_user_prompt_closed_with_exception(session, create_dialog, get_shadow_page): +def check_user_prompt_closed_with_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_closed_with_exception(dialog_type, retval): - session.url = get_shadow_page("

                                                                      bar

                                                                      ") + session.url = inline(get_shadow_page("

                                                                      bar

                                                                      ")) outer_element = session.find.css("custom-shadow-element", all=False) shadow_root = outer_element.shadow_root @@ -59,9 +59,9 @@ def check_user_prompt_closed_with_exception(session, create_dialog, get_shadow_p @pytest.fixture -def check_user_prompt_not_closed_but_exception(session, create_dialog, get_shadow_page): +def check_user_prompt_not_closed_but_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_not_closed_but_exception(dialog_type): - session.url = get_shadow_page("

                                                                      bar

                                                                      ") + session.url = inline(get_shadow_page("

                                                                      bar

                                                                      ")) outer_element = session.find.css("custom-shadow-element", all=False) shadow_root = outer_element.shadow_root diff --git a/tests/wpt/web-platform-tests/webdriver/tests/forward/forward.py b/tests/wpt/web-platform-tests/webdriver/tests/forward/forward.py index 97a935c8cd8..61c66e201b9 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/forward/forward.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/forward/forward.py @@ -29,6 +29,25 @@ def test_no_browsing_context(session, closed_frame): assert_success(response) +def test_basic(session, inline): + url = inline("
                                                                      ") + + session.url = inline("
                                                                      ") + session.url = url + session.back() + + element = session.find.css("#bar", all=False) + + response = forward(session) + assert_success(response) + + with pytest.raises(error.StaleElementReferenceException): + element.property("id") + + assert session.url == url + assert session.find.css("#foo", all=False) + + def test_no_browsing_history(session, inline): url = inline("
                                                                      ") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_active_element/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_active_element/get.py index 145440082f7..2b79ebd5848 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_active_element/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_active_element/get.py @@ -20,6 +20,19 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +def test_no_such_element(session, inline): + session.url = inline("") + session.execute_script(""" + if (document.body.remove) { + document.body.remove(); + } else { + document.body.removeNode(true); + }""") + + response = get_active_element(session) + assert_error(response, "no such element") + + def test_success_document(session, inline): session.url = inline(""" @@ -117,16 +130,3 @@ def test_success_iframe_content(session, inline): response = get_active_element(session) element = assert_success(response) assert_is_active_element(session, element) - - -def test_missing_document_element(session, inline): - session.url = inline("") - session.execute_script(""" - if (document.body.remove) { - document.body.remove(); - } else { - document.body.removeNode(true); - }""") - - response = get_active_element(session) - assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py index f27f3d7093a..901b9809ca8 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py @@ -1,25 +1,60 @@ import pytest +from webdriver import Element from webdriver.error import NoSuchAlertException from tests.support.asserts import assert_error, assert_success -def get_computed_label(session, element): +def get_computed_label(session, element_id): return session.transport.send( "GET", "session/{session_id}/element/{element_id}/computedlabel".format( session_id=session.session_id, - element_id=element)) + element_id=element_id)) -def test_no_browsing_context(session, closed_window): - response = get_computed_label(session) +def test_no_browsing_context(session, closed_frame): + response = get_computed_label(session, "foo") assert_error(response, "no such window") -def test_no_user_prompt(session): - response = get_computed_label(session) - assert_error(response, "no such alert") +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + result = get_computed_label(session, element.id) + assert_error(result, "no such element") + + +def test_no_such_element_from_other_window_handle(session, inline): + session.url = inline("

                                                                      ") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + session.window_handle = new_handle + + result = get_computed_label(session, element.id) + assert_error(result, "no such element") + + +def test_no_such_element_from_other_frame(session, iframe, inline): + session.url = inline(iframe("

                                                                      ")) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("#parent", all=False) + session.switch_frame("parent") + + result = get_computed_label(session, element.id) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference(session, stale_element, as_frame): + element = stale_element("", "input", as_frame=as_frame) + + response = get_computed_label(session, element.id) + assert_error(response, "stale element reference") @pytest.mark.parametrize("html,tag,label", [ @@ -29,7 +64,7 @@ def test_no_user_prompt(session): ("", "input", "foo"), ("

                                                                      ") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + session.window_handle = new_handle + + result = get_computed_role(session, element.id) + assert_error(result, "no such element") + + +def test_no_such_element_from_other_frame(session, iframe, inline): + session.url = inline(iframe("

                                                                      ")) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("#parent", all=False) + session.switch_frame("parent") + + result = get_computed_role(session, element.id) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference(session, stale_element, as_frame): + element = stale_element("", "input", as_frame=as_frame) + + response = get_computed_role(session, element.id) + assert_error(response, "stale element reference") @pytest.mark.parametrize("html,tag,expected", [ - ("

                                                                    • foo", "li", "menu"), + ("
                                                                    • foo", "li", "menuitem"), ("", "input", "searchbox"), ("", "img", "presentation")]) def test_computed_roles(session, inline, html, tag, expected): diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/file.py b/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/file.py new file mode 100644 index 00000000000..ef6ae238355 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/file.py @@ -0,0 +1,23 @@ +from tests.support import platform_name +from tests.support.asserts import assert_success + + +def get_current_url(session): + return session.transport.send( + "GET", "session/{session_id}/url".format(**vars(session))) + + +def test_get_current_url_file_protocol(session, server_config): + # tests that the browsing context remains the same + # when navigated privileged documents + path = server_config["doc_root"] + if platform_name == "windows": + # Convert the path into the format eg. /c:/foo/bar + path = "/{}".format(path.replace("\\", "/")) + url = u"file://{}".format(path) + session.url = url + + response = get_current_url(session) + if response.status == 200 and response.body['value'].endswith('/'): + url += '/' + assert_success(response, url) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py index 1ca13a1a6d5..baeab0960b6 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py @@ -48,22 +48,6 @@ def test_get_current_url_special_pages(session): assert_success(response, "about:blank") -def test_get_current_url_file_protocol(session, server_config): - # tests that the browsing context remains the same - # when navigated privileged documents - path = server_config["doc_root"] - if platform_name == "windows": - # Convert the path into the format eg. /c:/foo/bar - path = "/{}".format(path.replace("\\", "/")) - url = u"file://{}".format(path) - session.url = url - - response = get_current_url(session) - if response.status == 200 and response.body['value'].endswith('/'): - url += '/' - assert_success(response, url) - - # TODO(ato): Test for http:// and https:// protocols. # We need to expose a fixture for accessing # documents served by wptserve in order to test this. diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py index 528cbd29f02..1d003073be7 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py @@ -1,5 +1,7 @@ import pytest +from webdriver import Element + from tests.support.asserts import assert_error, assert_success @@ -27,16 +29,41 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_element_not_found(session): - # 13.2 Step 3 - result = get_element_attribute(session, "foo", "id") - assert_error(result, "no such element") +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + response = get_element_attribute(session, element.id, "id") + assert_error(response, "no such element") -def test_element_stale(session, inline): - session.url = inline("") - element = session.find.css("input", all=False) - session.refresh() +def test_no_such_element_from_other_window_handle(session, inline): + session.url = inline("

                                                                      ") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + session.window_handle = new_handle + + response = get_element_attribute(session, element.id, "id") + assert_error(response, "no such element") + + +def test_no_such_element_from_other_frame(session, iframe, inline): + session.url = inline(iframe("

                                                                      ")) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("#parent", all=False) + session.switch_frame("parent") + + response = get_element_attribute(session, element.id, "id") + assert_error(response, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference(session, stale_element, as_frame): + element = stale_element("", "input", as_frame=as_frame) + result = get_element_attribute(session, element.id, "id") assert_error(result, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py index 369ca9c699f..3d4a31018b5 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py @@ -1,3 +1,7 @@ +import pytest + +from webdriver import Element + from tests.support.asserts import assert_error, assert_success @@ -29,15 +33,40 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_element_not_found(session): - result = get_element_css_value(session, "foo", "display") - assert_error(result, "no such element") +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + response = get_element_css_value(session, element.id, "display") + assert_error(response, "no such element") -def test_element_stale(session, inline): - session.url = inline("") - element = session.find.css("input", all=False) - session.refresh() +def test_no_such_element_from_other_window_handle(session, inline): + session.url = inline("

                                                                      ") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + session.window_handle = new_handle + + response = get_element_css_value(session, element.id, "display") + assert_error(response, "no such element") + + +def test_no_such_element_from_other_frame(session, iframe, inline): + session.url = inline(iframe("

                                                                      ")) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("#parent", all=False) + session.switch_frame("parent") + + response = get_element_css_value(session, element.id, "display") + assert_error(response, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference(session, stale_element, as_frame): + element = stale_element("", "input", as_frame=as_frame) result = get_element_css_value(session, element.id, "display") assert_error(result, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py index 10f7a08ae73..9223f1df684 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py @@ -1,6 +1,8 @@ import pytest -from tests.support.asserts import assert_error, assert_success +from webdriver import Element, Frame, ShadowRoot, Window + +from tests.support.asserts import assert_error, assert_same_element, assert_success def get_element_property(session, element_id, prop): @@ -28,18 +30,43 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_element_not_found(session): - response = get_element_property(session, "foo", "id") +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + response = get_element_property(session, element.id, "id") assert_error(response, "no such element") -def test_element_stale(session, inline): - session.url = inline("") - element = session.find.css("input", all=False) - session.refresh() +def test_no_such_element_from_other_window_handle(session, inline): + session.url = inline("

                                                                      ") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + session.window_handle = new_handle response = get_element_property(session, element.id, "id") - assert_error(response, "stale element reference") + assert_error(response, "no such element") + + +def test_no_such_element_from_other_frame(session, iframe, inline): + session.url = inline(iframe("

                                                                      ")) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("#parent", all=False) + session.switch_frame("parent") + + response = get_element_property(session, element.id, "id") + assert_error(response, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference(session, stale_element, as_frame): + element = stale_element("", "input", as_frame=as_frame) + + result = get_element_property(session, element.id, "id") + assert_error(result, "stale element reference") def test_property_non_existent(session, inline): @@ -108,6 +135,46 @@ def test_primitives_set_by_execute_script(session, inline, js_primitive, py_prim assert_success(response, py_primitive) +@pytest.mark.parametrize("js_web_reference,py_web_reference", [ + ("element", Element), + ("frame", Frame), + ("shadowRoot", ShadowRoot), + ("window", Window), +]) +def test_web_reference(session, inline, js_web_reference, py_web_reference): + session.url = inline(""" +

                                                                      +

                                                                      + + + + + """) + + elem = session.find.css("#parent", all=False) + response = get_element_property(session, elem.id, "__{}".format(js_web_reference)) + value = assert_success(response) + + assert isinstance(value, dict) + assert py_web_reference.identifier in value + assert isinstance(value[py_web_reference.identifier], str) + + def test_mutated_element(session, inline): session.url = inline("") element = session.find.css("input", all=False) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py index 9ab4db4c604..97dc7a9f930 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py @@ -1,3 +1,7 @@ +import pytest + +from webdriver import Element + from tests.support.asserts import assert_error, assert_success from tests.support.helpers import element_rect @@ -29,15 +33,40 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_element_not_found(session): - result = get_element_rect(session, "foo") - assert_error(result, "no such element") +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + response = get_element_rect(session, element.id) + assert_error(response, "no such element") -def test_element_stale(session, inline): - session.url = inline("") - element = session.find.css("input", all=False) - session.refresh() +def test_no_such_element_from_other_window_handle(session, inline): + session.url = inline("

                                                                      ") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + session.window_handle = new_handle + + response = get_element_rect(session, element.id) + assert_error(response, "no such element") + + +def test_no_such_element_from_other_frame(session, iframe, inline): + session.url = inline(iframe("

                                                                      ")) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("#parent", all=False) + session.switch_frame("parent") + + response = get_element_rect(session, element.id) + assert_error(response, "no such element") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element_reference(session, stale_element, as_frame): + element = stale_element("", "input", as_frame=as_frame) result = get_element_rect(session, element.id) assert_error(result, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/conftest.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/conftest.py index afc0c91c3d3..4ca71025d69 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/conftest.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/conftest.py @@ -2,7 +2,7 @@ import pytest @pytest.fixture def checkbox_dom(inline): - return inline(""" + return """